【深度学习-模型系列】word2vec

优化目标

分类。词典大小是N,那么就是N分类。

弊端:

  • 【策略一】转化为二叉树,多个二分类。即Hierarchical Softmax
  • 【策略二】直接视为二分类:中心词w和context(w)相关,是正例,其他word都是负例
    • 负例太多,所以采用Negative Sampling

论文采用Negative Sampling了吗?

Hierarchical Softmax

Hierarchical Softmax的缺点:有缺点吗?二叉树没毛病啊,复杂度也不高

1
2
3
4
5
// 默认采用cbow模型
cbow = 1;

// 默认不用`Hierarchical Softmax`
int hs = 0, negative = 5;

Use Hierarchical Softmax; default is 0 (not used)

Negative Sampling

比如我们有一个训练样本,中心词是w,它周围上下文共有2c个词,记为context(w)。由于这个中心词w,的确和context(w)相关存在,因此它是一个真实的正例。通过Negative Sampling采样,我们得到neg个和w不同的中心词wi,i=1,2,..neg,这样context(w)和\($w_i\)就组成了neg个并不真实存在的负例。利用这一个正例和neg个负例,我们进行二元逻辑回归,得到负采样对应每个词\(w_i\)对应的模型参数\(\theta_{i}\),和每个词的词向量。

Negative Sampling由于没有采用霍夫曼树,每次只是通过采样neg个不同的中心词做负例,就可以训练模型,因此整个过程要比Hierarchical Softmax简单。

Negative Sampling可否也用霍夫曼树?貌似还真不能?HS和NS貌似是冲突的。

疑问

为什么叫CBOW( Continuous Bag-Of-Words,即连续的词袋模型) 和 Skip-Gram?

缺陷

参考

live demo

http://projector.tensorflow.org

TODO:扩展demo

  • word2vec的可视化
    • 给定word1 出word2
    • 显示vector向量
    • 一个word与一组word的相似度。用attention可视化。
    • 向量计算,比如king - man + woman = queen