1.有DNN做的word2vec,取隐藏层到softmax层的权重为词向量,softmax层的叶子节点数为词汇表大小
2.霍夫曼树:左边走 sigmoid(当前节点的词向量*当前节点的参数) 右边走 1-sigmoid(当前节点的词向量*当前节点的参数),叶子节点为词汇表所有词,然后求根节点到叶子节点的极大似然估计,在Skip gram中,词向量也是更新2c个词
a. 在霍夫曼树中每个内部节点参数大小为[T, 1],T表示词向量维度大小
b. 输入到霍夫曼树的词向量是两边词向量相加,取平均,得到的词向量[T, 1]转置后就为[1, T], 乘以霍夫曼树内部节点的参数就为1个值[1];乘以下一个内部节点时,词向量还是输入到霍夫曼树的词向量,不会因为上一个内部节点而改变
c. 再用sigmoid进行激活,得到概率
注:词向量和内部节点参数都是随机初始化的
3.negative sampling: 负采样,CBOW采样的是2c个词的平均向量,而Skip gram采样的是中心词的向量;这些都叫做正例,采样不是依据正例子来采样的,而是依据特定的方法
采样中心词的负例,然后最大化正例与(1-负例)的似然,既:sigmoid(w正*参数正)*[(1-sigmoid(w负*参数负)) neg个负例相乘]
参考博客地址:http://www.cnblogs.com/pinard/p/7160330.html