这一份讲义分为三个部分,第一部分介绍了另一种词向量构造方法GloVe,第二部分介绍衡量词向量构造方法优劣的评价方法,第三部分则介绍了得到词向量后,我们能做哪些应用(比如通过神经网络进行分类任务等等),以及如何在应用任务中继续迭代构造词向量。
1. GloVe Model
GloVe全称为Global Vectors,顾名思义,GloVe是利用全局的单词统计信息去预测一个中心词的上下文信息(任务目标和SG Model一致)。
首先我们有如下定义:
-
是单词共存矩阵(Word-word Co-occurrence Matrix),表示单词出现在单词的上下文中的次数。
-
表示单词上下文中出现的所有单词的次数和(重复计数)
-
表示单词出现在单词上下文中的统计概率
然后我们不妨先回忆一下Skip-gram Model中用softmax计算出来的单词
在Skip-gram Model中,我们的损失函数是:
回顾完毕,下面我们尝试对Skip-gram Model的损失函数进行改造,得到GloVe的损失函数。
第一步是对上述损失函数的等价改写,因为两个求和符号是对语料库中单词进行枚举,然而单词会重复出现,因此相同的
第二步,考虑到
其中
第三步,因为没有做归一化操作,上述式子中的
第四步,式子中的统计量
在原论文中,作者试验效果较好的权重函数形式是:
2. 词向量的评价方法
介绍完了词向量的构造方法(CBOW、SG、GloVe),那我们有什么定量或定性的方法去比较这些构造方法的优劣和性能呢?因为从单词到词向量的构造通常只是自然语言处理(NLP)的一个子过程,因为我们对词向量的评价也应该建立在一个完整NLP任务的框架之下,即一个由单词到词向量的子系统和应用任务系统。
而对词向量的评价方法通常可以分为两种,一种称为内在评价(Intrinsic Evaluation),另一种称为外在评价(Extrinsic Evaluation)。
2.1 内在评价(Intrinsic Evaluation)
内在评价是一系列的简单子任务(比如单词类比、时态类比填空等等),特点是子任务往往很简单,计算速度很快,有简单的量化性能指标,并且子任务的表现性能和词向量的优劣成直接的正相关。因此我们可以从简单子任务的性能比较出词向量构造系统的优劣。
2.2 外部评价(Extrinsic Evaluation)
与内在评价的简单子任务不同,外部评价是将词向量直接应用于实际任务中,这些任务往往非常复杂,比如应用了深度学习的情绪监测、机器翻译、基于问题对答案等等。这些实际任务往往十分复杂,计算过程比较缓慢,性能指标多样。因此,通常我们无法将这些实际任务的性能高低和词向量构造的优劣直接关联起来,因为能够影响实际任务输出的因素过多。所以外部评价并不是词向量评价的第一选择,或者说通常我们需要辅以内在评价,两种评价结合使用。
2.3 内在评价举例一:词向量类比
最常用的内在评价方法就是用词向量构造去做单词类比:
比如我们经常用到的例子
但是构造单词类比的测试用例时,我们需要注意以下几点:
- 可能存在一词多义的现象,比如美国有十多个地方都叫Phoenix、match既有比赛的意思也有匹配的意思
- 信息和语料库的时效性,比如国家的首都、总统等等都是会变的
2.4 内在评价举例二:相关性评价
这种评价方式较为简单,即先人工标注词对的相关性/近似度,比如gas和gasline相关性很高,而waiter和king相关性较低。之后就用余弦定理去衡量词向量之间的近似程度,并与人工标注的结果进行比对即可。
3. 将词向量用于外部任务
利用内在评价+外部评价的方式选择一个性能优良的词向量构造方法后,我们就可以把它用在一些外部任务上,比如命名实体识别(Named Entity Recognition)。下边我们会讨论几个训练细节和技巧。
3.1 在外部任务中同步更新词向量生成网络
在一般的机器学习任务中,我们一般有固定的训练样本(即输入的
而迭代更新词向量生成网络的参数也很简单,就是用外部任务的损失函数对相应参数求梯度即可,显然这样操作可以优化外部任务的结果,但是并不是所有场景都适合进行这样的操作,因此我们需要关注的重点是:哪些应用场景才适合进行词向量生成网络的同步更新?
下面先直接给出结论:当且仅当训练样本足够大,大到几乎涵盖词汇表中大部分单词的情况下,同步更新词向量生成网络能够带来外部任务的性能优化。
因为自然语言中存在大量的同义不同形的单词,比如TV、television、telly,它们会对应略有差别的词向量,在高维空间中比较接近。但是如果我们的训练样本只包含TV和telly,而不包含television,那么很可能在同步更新词向量生成网络的时候,TV、telly的词向量发生了改变,但是television的词向量却维持不变,这时候就出现了同义词的词向量大不相同的情况,反而降低了词向量生成网络的性能。
因此,只有当我们的训练样本足够大的时候,我们才会进行词向量生成网络的同步更新;若训练样本较小,这个同步更新的方法并不适用。
3.2 词窗口分类(Window Classification)
在自然语言中,一词多义的现象是十分常见的,很可能同一个单词、同一个词向量,却需要表达多种完全不相关的含义,这对于我们的外部任务(比如情绪识别等分类任务)是很有挑战性的,因此我们可以不仅仅把单一的一个单词作为输出,而是把这个单词连带它的上下文一起作为输入,即用一个单词窗口作为输入。
这就是Lec 01中提到的分布式的表达方式(Distributed Representation),用一个单词的上下文信息去进一步框定一个单词的具体含义。比如,假设我们的窗口大小为
与之对应,我们的窗口梯度就是:
同时,窗口大小
参考内容:
- Stanford - CS224n - Course Note 02
- GloVe: Global Vectors for Word Representation (original GloVe paper)
- Improving Distributional Similarity with Lessons Learned from Word Embeddings
- Evaluation methods for unsupervised word embeddings