算法面试之Word2Vec
1.训练方法
1.1 CBOW
第一种叫CBOW,核心思想是从一个句子里面把一个词抠掉,用这个词的上文和下文去预测被抠掉的这个词;
在cbow方法中,是用周围词预测中心词,从而利用中心词的预测结果情况,使用GradientDesent方法,不断的去调整周围词的向量。当训练完成之后,每个词都会作为中心词,把周围词的词向量进行了调整,这样也就获得了整个文本里面所有词的词向量。cbow的对周围词的调整是统一的:求出的gradient的值会同样的作用到每个周围词的词向量当中去。
cbow预测行为的次数跟整个文本的词数几乎是相等的(每次预测行为才会进行一次backpropgation, 而往往这也是最耗时的部分),复杂度大概是O(V);
生僻词没有收到专门的训练,它只是沾了周围词的光而已。
查表得到的上下文词的向量直接进行求和,再通过一个N×V的矩阵映射到输出层,对词表上每一个可能得到一个评分;并进行softmax归一化;然后和标注进行交叉熵损失更新参数
一般用Win作为单词表示
1.2 Skip-gram
第二种叫Skip-gram,和CBOW正好反过来,输入某个单词,要求网络预测它的上下文单词
skip-gram是用中心词来预测周围的词<