单词处理

one-hot编码以便于输入神经网络

模型

word2vec工具主要包含两个模型:连续词袋模型(CBOW,continuous bag of words)和跳字模型(skip-gram)。它们两者的区别是,CBOW是根据上下文去预测目标词来训练得到词向量,如图是根据$W(t-2),W(t-1),W(t+1),W(t+2)$这四个词来预测$W(t)$;而Skip-gram是根据目标词去预测周围词来训练得到词向量,如图是根据$W(t)$去预测$W(t-2),W(t-1),W(t+1),W(t+2)$。根据经验,CBOW用于小型语料库比较适合,而Skip-gram在大型的语料上表现得比较好。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7f43c023-bbed-4e25-ba98-598d3c2a0ea0/Untitled.png

权重层就是单词的分布式表示

优化

CBOW模型根据上下文预测中间的单词,最后一层为softmax得出的分布,再通过交叉熵误差计算损失然后回传。

因为结果是要得到词向量嘛,所以为了减少计算量,把softmax替换成sigmoidwithloss,再进行负采样,除了计算正样本的回传外,取词频高的几个词进行负样本的回传。