word2vec模型的参数更新过程(三)

发布于 17 天前  18 次阅读


优化模型效率

训练一个隐藏层→输出层的权重矩阵W‘是非常耗费资源的(计算yj),有下面两种措施可以提高效率。

1. Hierarchical Softmax(分层Softmax)

这个模型使用了哈夫曼树,V个词是树的叶子结点。根节点到每个叶子结点的路径是唯一的,这条路径就用来计算该叶子结点所代表的词的概率。

简单来说,Hierarchical Softmax就是把输出词的概率简化为路径树的概率,比如说P(w=w2)就是途中加粗的这条路径树的概率,每次路径选择“左”还是“右”的判断根据logistics函数,接下来问题在于logistics函数的输入。

原paper中解释得很复杂,其实就是说下一步如果为左子就是1,右子就为-1,为什么不是p和1-p呢?因为1 -σ(x) = σ(-x)。

对于我们要应用的场景来说:

Vj'就是W'的第j列。那么代价函数E为:

更新W'的步骤:

 

2.Negative Sampling(负采样)

负采样的想法比较直观,用一些当作噪声的词(这些词服从某个构造的分布)来替代原始的计算所有词的exp(uj)值,代价函数E为:

{wi|i = 1, · · · ,K},服从噪声分布Pn(w)

然后就是更新W'了:

 

原paper:

word2vec Parameter Learning Explained

https://arxiv.org/abs/1411.2738

 


阿克西斯上没有什么重要的东西