如何将softmax用于word2vec?我的意思是softmax输出总和为1
的所有类的概率,例如[0, 0.1, 0.8, 0.1]
。但是,如果我的标签是[0, 1, 0, 1, 0]
(多个正确的类),那么softmax不可能输出正确的值?
我应该使用softmax吗?或者我错过了什么?
答案 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更复杂,但如果您使用张量流,all of them are implemented并且可以轻松使用。