跳到主要内容

word2vec简解

对word2vec做一下总结,便于自己快速复习相关概念

一、Case #

先来一个case,便于快速理解Word2vec

image
我们有一些text,是一个一个句子,样本的搜集过程如上。设定window size为2,target word,窗口内的单词作为context word。

image

把样本喂入模型进行训练,输入的时候,每一条样本先做ont-hot encoding,变成V维的向量(V是vocabulary大小),target word那一维是1,其余是0。 label中 target word的context words的地方都标为1,训练网络。

image
image
经过训练会产出两个权重矩阵,都可以作为word的vector向量。

二、Model #

word2vec 有两种模型,分别是CBOW和Skip-gram

2.1 CBOW #

image

cbow模型输入是context word,去预估target word。

feed forward #

image
中间隐层神经单元h是求avg
image
image
输出是求softmax
image
image

lossfunc

back propagate #
Update equation for hidden→output weights #

image
image

image
权重更新

Update equation for input→hidden weights #

image
image

2.2 Skip-gram #

image

image

loss func

image
image
image
image
image

三、Tricks #

不管是CBOW还是Skip-gram,在进行权重学习的时候,input->hidden中的权重矩阵W比较容易更新,因为每次只用更新input维中激活的w。但是在学习hidden->output的权重矩阵W'的时候,如果vocabulary很大,学习效率就低,因为需要遍历每个word。 word2vec提供两种trick来提高学习的效率

Hierarchical Softmax #

image

在hidden->output的过程中,用Hierarchical Softmax替换了原始的Softmax。如图用L(w2)表示从root到w2的距离。中间的每一个非叶子节点定义为v‘, n(w,j)表示第j个 unit on the path from root to word w

首先,我们定义w2是output word的概率为从root随着路径走到w2的概率

image
向左走的概率
image
向右走的概率
image
走到w2的概率
image
走到所有叶子节点的概率累加肯定为1

image
image
将左右的情况抽象化,ch 函数表示是n的左节点,那么output 的概率可以表示为
image

image
loss func
image

那么在hidden -> output层,我一共只需要更新 L(w)个vector,L(w)近似于log(V),实际需要更新的向量只有log(v)个,这个计算量级大大减少了

image
image

input->output这样更新

image

Negative Sampling #

image

只采样部分负例进行更新

Reference #

[1] http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/ [2] http://mccormickml.com/2017/01/11/word2vec-tutorial-part-2-negative-sampling/ [3] word2vec Parameter Learning Explained https://arxiv.org/abs/1411.2738 Xin Rong


38db85a4c595ca6