如何才能将softmax用于word2vec?

时间:2017-12-14 01:08:25

标签: neural-network nlp classification word2vec softmax

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

我应该使用softmax吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:3)

我想你是在谈论Skip-Gram模型(即通过中心预测上下文单词),因为CBOW模型预测单个中心单词,所以它假定只有一个正确的类。

严格地说,如果你使用SG模型和普通softmax损失训练word2vec,正确的标签将是[0, 0.5, 0, 0.5, 0]。或者,您也可以为每个中心字提供多个示例,标签为[0, 1, 0, 0, 0][0, 0, 0, 1, 0]。很难说哪一个表现更好,但标签必须是每个输入示例的有效概率分布。

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

这些损失比softmax更复杂,但如果您使用张量流,all of them are implemented并且可以轻松使用。