CS224n学习笔记 02
Word2vec
Main idea of word2vec
首先回顾一下,word2vec的主要思想:
- 遍历整个语料库中的每个单词;
- 使用单词向量预测周围的单词;
- 更新向量以便更好地预测。
Word2vec: more details
word2vec 为什么设计两个向量?
- 更容易优化,最后都取平均值
- 可以每个单词只用一个向量
word2vec的两个变体模型:
- Skip-grams (SG)——输入中心词并预测上下文中的单词;
- Continuous Bag of Words (CBOW)——输入上下文中的单词并预测中心词。
基于统计的词向量
关于共现矩阵(word-word co-occurrence matrix):
- 两个选项:windows vs. full document
- Window :与word2vec类似,在每个单词周围都使用Window,包括语法(POS)和语义信息
利用某个定长窗口中单词与单词同时出现的次数来产生window-based (word-word) co-occurrence matrix。下面以窗口长度为1来举例,假设我们的数据包含以下几个句子:
- I like deep learning.
- I like NLP.
- I enjoy flying.
则我们可以得到如下的word-word co-occurrence matrix:
使用共现次数衡量单词的相似性,但是会随着词汇量的增加而增大矩阵的大小,并且需要很多空间来存储这一高维矩阵,后续的分类模型也会由于矩阵的稀疏性而存在稀疏性问题,使得效果不佳。我们需要对这一矩阵进行降维,获得低维(25-1000)的稠密向量,常用的降维方法包括:Dimensionality Reduction on X (HW1)和Hacks to X (several used in Rohde et al. 2005)。
基于计数的方法:使用整个矩阵的全局统计数据来直接估计
优点:
- 训练快速
- 统计数据高效利用
缺点:
- 主要用于捕捉单词相似性
- 对大量数据给予比例失调的重视
转换计数的方法:定义概率分布并试图预测单词
优点:
- 提高其他任务的性能
- 能捕获除了单词相似性以外的复杂的模式
缺点:
- 与语料库大小有关的量表
- 统计数据的低效使用(采样是对统计数据的低效使用)
Glove
GloVe的全称是Global Vectors for Word Representation,它由一个加权最小二乘模型组成,基于全局word-word共现计数进行训练,从而有效地利用全局统计数据。模型生成了包含有意义的子结构的单词向量空间,在词类比任务上表现非常出色。Glove的训练流程大致可以表示为:输入语料库–> 统计共现矩阵–> 训练词向量–>输出词向量。
Co-occurrence Matrix
X表示 word-word 共现矩阵,词j出现在词i的上下文的次数表示为:
X
i
j
X_{ij}
Xij
任意词k出现在词i的上下文的次数表示为:
X
i
=
∑
k
X
i
k
X_{i}=\sum_{k}X_{ik}
Xi=k∑Xik
最后,词j出现在词i的上下文的概率表示为:
P
i
j
=
P
(
w
j
∣
w
i
)
=
X
i
j
X
i
P_{ij}=P(w_{j}\mid w_{i})=\frac{X_{ij}}{X_{i}}
Pij=P(wj∣wi)=XiXij
Conclusion
GloVe 模型仅对单词共现矩阵中的非零元素训练,从而有效地利用全局统计信息,并生成具有有意义的子结构向量空间。给出相同的语料库,词汇,窗口大小和训练时间,它的表现都优于 word2vec,它可以更快地实现更好的效果,并且无论速度如何,都能获得最佳效果。