CS224N Natural Language Processing with Deep Learning Lecture 2
课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/
视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239
这里回顾CS224N Lecture 2的课程内容,这一讲介绍了GloVe。
Global Vectors for Word Representation (GloVe)
Co-occurrence Matrix
记$X_{ij}$表示单词$j$出现在单词$i$的上下文的频数,那么
表示单词$i$的上下文所有单词的数量,$P_{i j}=P\left(w_{j} | w_{i}\right)=\frac{X_{i j}}{X_{i}}$表示单词$j$出现在单词$i$上下文的概率。
Least Squares Objective
类似skip-gram model,我们利用下式计算单词$j$出现在单词$i$的上下文的概率
所以全局交叉熵为
利用Co-occurrence Matrix,我们可以将上式写为
如果定义上述损失函数,那么$Q_{ij}$需要标准化,这显然会加大很多计算量。为了解决这点,我们使用最小二乘损失函数来代替上述损失函数:
其中
由于指数函数可能会产生很大的值,所以对括号内的值取对数更容易减少误差:
注意到$X_i$不一定是最好的系数,更一般的形式为
Evaluation of Word Vectors(词向量的评估)
Intrinsic Evaluation(内部评估)
词向量的内部评估是对通过嵌入技术(例如Word2Vec或GloVe)对特定中间子任务生成的一组词向量的评估。
例子:词向量类比
类比任务的形式如下:
在余弦度量下,我们希望找到$d$,使得
在上述任务上使用不同模型以及不同超参数得到如下结果:
Extrinsic Evaluation(外部评估)
词向量的外部评估是对在手头上实际任务上通过嵌入技术生成的一组词向量的评估。
例子:分类问题
考虑将单词划分为$C$类的问题,即标签为维度为$C$的one-hot向量,我们定义
交叉熵损失函数为
所以$N$个数据的损失函数为
加上正则项的损失函数为
Dealing With Ambiguity(处理歧义)
由于很多词有一词多义的情况,老师介绍了一种处理该问题的方法:
- 选择上下文窗口长度(例如$5$),计算Co-occurrence Matrix
- 每个上下文用上下文单词向量的加权和表示(idf-weighting)
- 使用k-means对上下文向量进行聚类
- 最终,每个单词都被重新标记到其关联的簇,并用于训练该簇的单词表示。
(笔记中这部分也是一笔带过,没有写的特别详细)