概念
把词转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding),而 Word2vec,就是词嵌入( word embedding) 的一种。
词的表示
- one-hot
- word embedding,腾讯AI Lab有训练好的词向量,TensorFlow中embedding层也可以
- word2vec,gensim工具包提供使用
word2vec
1.跳字模型(skip-gram)
将CBOW模型倒过来
2.连续词袋模型(continuous bag of words,简称CBOW)
- 算法过程:
1.输入层:上下文单词的onehot。(假设单词向量空间dim为V,上下文单词个数为C)
2.所有onehot分别乘以共享的输入权重矩阵W(VN矩阵,N为自己设定的数,初始化权重矩阵W)
3.所得的向量 (注意onehot向量乘以矩阵的结果) 相加求平均作为隐层向量, size为1N.
4.乘以输出权重矩阵W’ {NV}
5.得到向量 {1V} 激活函数处理得到V-dim概率分布 {PS: 因为是onehot嘛,其中的每一维斗代表着一个单词},概率最大的index所指示的单词为预测出的中间词(target word)
6.与true label的onehot做比较,误差越小越好。loss function(一般为交叉熵代价函数) - 示意图
3.训练注意事项:
1.负采样(negative sampling)
2.层序softmax(hierarchical softmax)