CS224n-03 Advanced Word Vector Representations
03 Advanced Word Vector Representations
更深度的看词向量
1、word2vec
2、word2vec得到了什么?
3、了解word2vec的本质是什么?
4、怎么分析词向量?
回顾:word2vec的主要思想
1、遍历语料库中所有的词
2、预测每一个中心词的上下文词
3、然年后用SGD对每一个窗口计算梯度。
SGD与词向量
每一个窗口相对于整个语料库来说最多只有2m+1个词,所以
损失函数的梯度会是一个非常稀疏的向量。
实际上有正确答案需要去对比的只有窗口中的词语。
解决方法:只需要稀疏矩阵更新完整的嵌入矩阵U和V中的少数列或者你需要为每个词建立到词向量的哈希映射。
如果您有数百万个单词向量并进行分布式计算,那么不需要发送giganRc更新就很重要了!
作业1
正则化因子很难计算(下式分母),作业1要求使用负采样(nega(ve sampling)实现skip-gram算法。
主要思想:对每个正例(中央词语及上下文中的一个词语)采样几个负例(中央词语和其他随机词语),训练binary logistic regression(也就是二分类器)
The skip-gram model and negative sampling
来自论文:“Distributed RepresentaRons of Words and Phrases and their ComposiRonality” (Mikolov et al. 2013)
这里t是某个窗口,k是采样个数,P(w)是一个unigram分布。
连续词袋模型(CBOW)的主要思想是:从周围的词向量总和预测中心词,而不是从中心词预测周围的词,就像skipgram模型一样。
word2vec通过把相似的词语放到同一个地方附近来增大目标函数
word2vec总结
1、遍历语料库中所有的词
2、预测中心词的上下文词
3、一次一次得到共现词
引出:为什么不直接计算共现词?
对于一个共现矩阵X:
1、2个选择:全文档或者窗口
2、早在word2vec之前,就已经出现了很多得到词向量的方法,这些方法是基于统计共现矩阵的方法。如果在窗口级别上统计词性和语义共现,可以得到相似的词。如果在文档级别上统计,则会得到相似的文档(潜在语义分析LSA)
3、相反:与word2vec类似,使用窗口围绕每个单词。捕捉句法(POS)和语义信息。
基于窗口的共现矩阵:
1、窗口长度为1(通常:5-10)
2、对称的(不管左右上下文)
3、例如:
• I like deep learning.
• I like NLP.
• I enjoy flying.
• I like NLP.
• I enjoy flying.
简单共现向量的问题(不够健壮)
1、增加新词需要改变以前向量的维度
2、高纬度(词表量)
3、对于分类模型有高稀疏问题
解决办法:高维到低维向量
1、存储重要的信息到维度小的稠密矩阵中。
2、使用25-1000维,就像word2vec方法
3、怎么降维?
方法1:降维矩阵X
计算共现矩阵X的SVD
改进技巧
1、功能词(the,he,has等)出现的频率很高,语法有很大影响。限制高频词或者直接停用词。
2、根据与中央词的距离衰减词频权重
3、用皮尔逊相关系数代替词频,然后设置复制为0
有趣的语义模式出现在向量中
SVD的问题
1、计算复杂度高:对n×mn×m的矩阵是O(mn2)O(mn2)
2、不方便处理新词或新文档
3、与其他DL模型训练套路不同
2、不方便处理新词或新文档
3、与其他DL模型训练套路不同
Count based vs direct prediction
基于统计的方法训练速度快,有效的利用了统计学。对于相似词的捕获上收到了限制,也无法扩展到大规模语料库。
对于直接预测的方法需要遍历语料库受语料库大小的影响,也无法利用单词的全局统计信息,但是显著地提高了NLP的性能,并且能捕捉复杂的模式不限于相似词。
结合上述两种方法的更好方法:Glove
这里的是两个词共现的频次,f是一个max函数:
优点:训练快,可以拓展到大规模语料,也适用于小规模语料和小向量。
发现里面有两个向量u和v,他们都捕获了相同的共现向量信息,最好的解决方案是简单地把他们相加:
论文是:One of many hyperparameters explored in GloVe: Global Vectors for Word
Representa:on (Pennington et al. (2014)
相对于word2vec只关注窗口内的共现,GloVe这个命名也说明这是全局的
怎么评价词向量?
NLP中的评价有:内部和外部之分
内部(Intrinsic):
1、对特定/中间子任务的评估。
2、计算速度快
3、有助于对系统的理解
4、不知道对实际应用有无帮助
外部(Extrinsic):
1、实际任务中使用的评价
2、计算时间长
3、不清楚是系统的问题还是交互的问题还是其他子系统的问题。
4、如果准确的替换系统带来了性能提升那就是成功的。
内部词向量评价
词向量类推,或说“A对于B来讲就相当于C对于哪个词?”。这可以通过余弦夹角得到,会发现类推的向量都是近似平行的。
内部词向量评价的细节
Word
Vector Analogies: SyntacRc and Semantic examples from:mp://code.google.com/p/word2vec/source/browse/trunk/quesRonswords.
txt
txt
类比评价和超参数
在不同大小的语料上,训练不同维度的词向量,在语义和语法数据集上的结果如下:GloVe的效果显著地更好。另外,高纬度并不一定好。而数据量越多越好。
1、考虑上下文窗口是否对称(非对称效果不好)
2、大约维度为8效果是最好的(开始有轻微的下降)
3、可能对不同的任务会有不同
4、对于Glove词向量来说在中心词对称的大小为8的窗口效果很好
其他内部词向量评价
1、词向量距离和其他人工判断的相关性
2、Example dataset: WordSim353 hmp://www.cs.technion.ac.il/~gabr/resources/data/wordsim353/
一些困惑
1、你可能希望一个向量能捕获这两种信息(run =动词和名词),但是矢量被拉向不同的方向。
2、其他描述:Improving Word Representa:ons Via Global Context And Multiple Word Prototypes (Huang et al.2012)
3、想法:在窗口内聚类词,从新训练词分配多个不同的聚类标记。
外部词向量评价
很好的应用场景是:命名实体识别(named entity recogniRon): finding a person, organization or location
还有就是单词分类
Glove效果好了一点,但是不是很明显。
参考:
http://web.stanford.edu/class/cs224n/
http://www.hankcs.com/nlp/word-vector-representations-word2vec.html
https://zhuanlan.zhihu.com/p/26530524