neural-network - 怎么可能对 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损失来训练word2vec,正确的标签将是[0, 0.5, 0, 0.5, 0]。或者,您也可以为每个中心词提供多个示例,并使用标签 [0, 1, 0, 0, 0][0, 0, 0, 1, 0].很难说哪一个表现更好,但标签必须是每个输入示例的有效概率分布。

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

这些损失比softmax更复杂,但如果你使用tensorflow,all of them are implemented并且可以同样轻松地使用。

关于neural-network - 怎么可能对 word2vec 使用 softmax 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804462/

相关文章:

python - 如果手动加载 wordnet,如何在 synsets (nltk) 中使用语言选项?

python - 在哪里可以找到要导入到项目中的 Seq2SeqTrainer?

machine-learning - 分类:VFI5算法

python - 是否可以在 tensorflow 中跨多个 GPU 拆分网络?

python - 在 Tensorflow 中使用两个不同的 LSTM 单元

python - 为自定义词汇创建 N-gram 模型

matlab - 如何将距离转化为概率?

classification - 使用这两种方法对 light gbm 分类器有什么区别?

language-agnostic - 您将使用哪种学习算法来构建人类解决给定数独情况需要多长时间的模型?

neural-network - Caffe 分割网络 - softmax_loss_layer 错误