Neural network 如何';word2vec甚至可以使用softmax吗?

Neural network 如何';word2vec甚至可以使用softmax吗?,neural-network,nlp,classification,word2vec,softmax,Neural Network,Nlp,Classification,Word2vec,Softmax,如何将softmax用于word2vec?我的意思是softmax输出的所有类别的概率总和为1,例如[0,0.1,0.8,0.1]。但是如果我的标签是,例如[0,1,0,1,0](多个正确的类),那么softmax就不可能输出正确的值 我应该改用softmax吗?还是我遗漏了什么?我想你说的是Skip Gram模型(即,按中心预测上下文单词),因为CBOW模型预测的是单中心单词,所以它只假设一个正确的类 严格来说,如果您要使用SG型号和普通softmax loss培训word2vec,正确的标签

如何将softmax用于word2vec?我的意思是softmax输出的所有类别的概率总和为
1
,例如
[0,0.1,0.8,0.1]
。但是如果我的标签是,例如
[0,1,0,1,0]
(多个正确的类),那么softmax就不可能输出正确的值


我应该改用softmax吗?还是我遗漏了什么?

我想你说的是Skip Gram模型(即,按中心预测上下文单词),因为CBOW模型预测的是单中心单词,所以它只假设一个正确的类

严格来说,如果您要使用SG型号和普通softmax loss培训word2vec,正确的标签应该是
[0,0.5,0,0.5,0]
。或者,您也可以为每个中心词提供多个示例,带有标签
[0,1,0,0,0]
[0,0,0,1,0]
。很难说哪一个性能更好,但标签必须是每个输入示例的有效概率分布

然而,在实践中,很少使用普通的softmax,因为类太多,严格的分布太昂贵,根本不需要(几乎所有的概率始终几乎为零)。相反,研究人员使用采样损失函数进行训练,这近似于softmax损失,但效率更高。以下损失函数特别流行:

这些损失比softmax更复杂,但如果您使用tensorflow,则可以同样轻松地使用