Advertisement

CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理(四)词向量(四)

阅读量:

词向量II:GloVe、评估和训练

关键词:全局向量词表示 (GloVe)、内在和外在评估、超参数对类比评估任务的影响、人类判断与词向量距离的相关性、 使用上下文处理单词中的歧义、窗口分类。

本文上一部分请见:[CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理 (三)词向量(三)_放肆荒原的博客-博客]( "CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理 (三)词向量(三)_放肆荒原的博客-博客")

本文先介绍了训练词向量的GloVe模型,然后对词向量(或者称词嵌入)进一步讨论,了解内在和外在的评估方法。 介绍了词类比作为一种内在评估技术,以及如何用它来调整词嵌入。 接着讨论了外部任务的训练模型权重/参数和词向量等问题,最后,我们将用人工神经网络作为一类自然语言处理任务的模型。

1. GloVe (全局向量词表示Global Vectors for Word Representation)

【注释】 本节基于 Pennington 等人的 GloVe 论文:
Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. GloVe: Global Vectors for Word Repre- sentation

1.1 与前面介绍的方法比较

到目前为止,我们已经研究了两种主要的方法来寻找词嵌入。 第一组基于计数并依赖于矩阵分解(例如 LSA、HAL)。 虽然这些方法有效地利用了全局统计信息,但它们主要用于捕获单词相似性,并且在单词类比等任务上表现不佳,向量空间结构明显次优。 另一组方法是基于浅层窗口的(例如,skip-gram 和 CBOW 模型),它们通过在局部上下文窗口中进行预测来学习词嵌入。 这些模型展示了捕获单词相似性之外的复杂语言模式的能力,但未能利用全局共现统计数据。

相比之下,GloVe 由一个加权最小二乘模型组成,该模型在全局词-词共现计数上进行训练,从而有效利用统计数据。 该模型产生一个具有有意义的子结构的词向量空间。 它在单词类比任务上表现出SOTA的性能,并在几个单词相似性任务上优于其他当前方法。

【注:】 GloVe:
• 使用全局统计数据以最小二乘目标预测单词 j 在单词 i 的上下文中出现的概率

1.2 共现矩阵 (Co-occurrence Matrix)

令X表示词-词共现矩阵,其中表示词j在词i的上下文中出现的次数。 设 是任何词 k 在词 i 的上下文中出现的次数。 最后,让 是 j 在词 i 的上下文中出现的概率。

【注:】共现矩阵:
• X:词-词共现矩阵
:单词 j 在单词 i 的上下文中出现的次数
:任何单词 k 在单词 i 的上下文中出现的次数
:j 在词 i 的上下文中出现的概率

填充这个矩阵需要一次遍历整个语料库来收集统计数据,对于大型语料库,此过程在计算上成本会很高,还好它只是一次性的前期成本。

1.3 最小二乘目标

回想一下对于 skip-gram 模型,我们使用 softmax 来计算单词 j 在单词 i 的上下文中出现的概率:

训练以在线、随机的方式进行,但隐含的全局交叉熵损失可以如下计算:

由于相同的词 i 和 j 可以在语料库中多次出现,因此首先将 i 和 j 的相同值组合在一起更有效:

其中共现频率的值由共现矩阵 X 给出。 交叉熵损失的一个显着缺点是它需要对分布 Q 进行适当的归一化,这涉及对整个词汇表进行昂贵的求和。 相反,我们使用最小二乘目标,其中 PQ 中的归一化因子就可以被丢弃了:

其中 是非标准化分布。 这个公式引入了一个新问题: 经常采用非常大的值并且使优化变得困难。 一个有效的改变是最小化 的对数的方差:

另一个观察结果是,权重因子X不能保证是最优的。相反,我们引入了一个更通用的权重函数,我们可以根据上下文自由选择该函数:

1.4 结论

总之,GloVe 模型通过仅对词-词共现矩阵中的非零元素进行训练,有效地利用了全局统计信息,并生成了具有有意义的子结构的向量空间。 给定相同的语料库、词汇、窗口大小和训练时间,它在单词类比任务上始终优于 word2vec。 它更快地获得更好的结果,并且无论速度如何都能获得最佳结果。

2. 词向量的评估

到目前为止,我们已经讨论了 Word2Vec 和 GloVe 方法等方法来训练和发现语义空间中自然语言单词的潜在向量表示。 在本节中,我们将讨论如何定量评估由此类技术生成的词向量的质量。

2.1 内在评价

单词向量的内在评估是对嵌入技术(如Word2Vec或GloVe)在特定中间子任务(如类比补全)上生成的一组单词向量的评估。这些子任务通常比较简单且计算速度快,因此能帮助我们快速评估用于生成词向量的系统。内在评估通常返回一个数字来衡量这些词向量在评估子任务上的表现。

动机: 我们看个例子,假设要创建一个使用词向量作为输入的问答系统,一种方法是训练一个机器学习系统:

图 1:通过用更简单的子系统(绿色)代替内在评估来修改训练成本高的左侧子系统(红色)。

1. 以单词为输入
2. 将它们转换为词向量
3. 使用词向量作为复杂机器学习系统的输入
4. 将本系统输出的词向量映射回自然语言词汇
5. 生成词汇作为答案

【注:】 内在评价特点:
• 评估特定的中间任务
• 快速计算性能
• 帮助理解子系统
• 需要与实际任务正相关来确定有用性

当然,在制作这样一个 SOTA 问答系统的过程中,我们需要创建最优的词向量表示,因为它们用于下游子系统(例如深度神经网络)。 为了在实践中做到这一点,我们需要调整 Word2Vec 子系统中的许多超参数(例如词向量表示的维度)。 虽然理想的方法是在 Word2Vec 子系统发生任何参数更改后重新训练整个系统,但从工程角度来看这是不切实际的,因为机器学习系统(在第 3 步中)通常是一个具有数百万个参数的深度神经网络,需要很长时间 培训。 在这种情况下,我们希望提出一种简单的内在评估技术,它可以提供一个词到词向量子系统的“好度”度量。 显然,这要求内在评价与最终任务表现呈正相关。

2.2 外在评估

词向量的外部评估是对嵌入技术生成的一组词向量对手头实际任务的评估。这些任务一般很复杂,计算速度很慢。就上面的例子而言,系统允许评估问题答案是外部评估系统。通常,对表现不佳的外部评估系统进行优化不能让我们确定是哪个特定子系统存在故障,这导致了对内部评估的需求。

【注:】外在评估的特点:
•评估是否是一项实际任务
•计算性能可能很慢
•不清楚是子系统有问题,还是其他子系统或者内部交互的问题
•如果更换子系统提高了性能,则更改可能是好的

2.3 内在评估示例:词向量类比

词向量内在评估的一个比较流行的选择是它在完成单词向量类比时的性能。例如,在一个词向量类比中,我们得到了一个形式的不完全类比:

a : b : : c :?

【注:】 我们看到词向量包含单词之间余弦距离上的含义。它在不同维度上还有含义:例如,“诺基亚”在某些维度上可能接近“三星”,因为它们都是电子公司,但在另一个维度上可能接近“芬兰”,因为诺基亚是芬兰公司。

当单词向量向下降维到二维(使用PCA)并绘制图形时,可以看到有趣的结果:相似的单词聚集在一起。然而重要的是,在降维过程中,很大一部分空间信息丢失了;因此,上述诺基亚示例中单词之间的复杂关系可能不会出现。

然后,内在评估系统识别最大化余弦相似度的词向量:

这个机制有一个直观的解释。 理想情况下,我们想要 xb − xa = xd − xc(例如,皇后 - 国王 = 女演员 - 演员)。 这意味着我们需要 xb − xa + xc = xd。 因此,我们可以确定向量 xd 最大化了两个词向量之间的归一化点积(即余弦相似度)。

使用诸如词向量类比之类的内在评估技术时应小心处理(记住用于预训练的语料库的各个方面)。例如,考虑以下形式的类比:

城市1 : 包含城市1的州 : : 城市2 : 包含城市2的州

表1:这里是语义词向量类比(内在评价),可能会受到不同城市同名的影响

在许多情况下,美国有多个同名城市/城镇/村庄。因此,许多州有资格成为正确答案。例如,美国至少有10个地方叫凤凰城,因此,亚利桑那州不一定是唯一正确的答案。让我们考虑以下形式的类比:

首都1 : 国家1 : : 首都2 : 国家2

在多数情况下,这项任务产生的城市都是近期是首都的城市。看这个例子,在1997年之前哈萨克斯坦的首都是阿拉木图,因此,如果语料库是过时的,出问题是显而易见的。

前两个示例演示了使用词向量进行语义测试。我们还可以使用词向量类比来测试语法。以下内在评估测试词向量捕捉形容词最高级概念的能力。

下面的内在评估测试了词向量捕捉过去时的能力:

表2:语义词向量类比(内在评估),可能会因不同时间点拥有不同首都的国家而受到影响

表3:测试形容词最高级概念的语法词向量类比(内在评价)

2.4 内在评估调优示例:类比评估

词向量嵌入技术(例如 Word2Vec 和 GloVe)中的一些超参数可以使用内在评估系统(例如类比补全系统)进行调整。 我们先看看不同的创建词向量嵌入的方法在相同的超参下在类比评估任务上的表现:

【注:】 考虑调整内在评估任务中的词嵌入技术的以下参数:
• 词向量的维度
• 语料库大小
• 语料库来源/类型
• 上下文窗口大小
• 上下文对称

表 4:测试过去时概念的语法词向量类比(内在评估)

表5:不同超参数和数据集下不同模型的性能比较

检查上表,我们可以得出 3 个主要观察结果:

• 性能表现在很大程度上取决于用于词嵌入的模型:
这是预期结果,不同的方法尝试使用根本不同的属性(例如共现计数、奇异向量等)将单词嵌入到了向量中。

• 性能表现随着语料库规模的增大而提高:
发生这种情况是因为嵌入技术可以通过它看到的更多示例从而获得经验。 例如,如果之前没有遇到某个测试词,类比完成示例将产生错误的结果。

•极低维词向量的性能较低:
低维词向量无法捕捉语料库中不同词的不同含义。这可以看作是一个高偏差问题,模型复杂度太低就会有这个问题。例如,“国王”、“女王”、“男人”、“女人”,直觉上,我们需要使用两个维度,如“性别”和“领导”,将它们编码为2位词向量,再低是无法捕捉到四个词之间的语义差异的。

【注:】实现提示:每个中心词周围的窗口大小为 8 通常适用于 GloVe 嵌入

图2:上图展示了长时间训练确实提高了训练的表现

图3 展示使用更大的语料库可提高准确性

【注:】 极高维向量:
直觉上,这些向量似乎会捕获语料库中不允许泛化的噪声,即导致高方差,但 Yin 等人。 在“On the Dimensionality of Word Embedding”中表明,skip-gram 和 GloVe 对这种过拟合具有鲁棒性。

图 4 展示了其他超参数如何影响使用 GloVe 的准确性。

图 4:精度随 GloVe 的向量维度和上下文窗口大小而变化

2.5 内在评价示例:相关性评估

评估词向量质量的另一种简单方法是,让人们在固定的尺度(比如0-10)上评估两个词之间的相似性,然后将其与对应词向量之间的余弦相似性进行比较。这是在包含人类判断调查数据的各种数据集上完成的。

表6:使用不同嵌入技术和不同人类判断数据集的词向量相似度之间的相关性

2.6 延伸阅读:歧义处理

有人可能想知道我们如何处理这样一种情况,即我们想用不同的向量来捕捉同一个单词在自然语言中的不同用途。例如,“run”既是一个名词又是一个动词,根据上下文的不同使用和解释。《通过全局上下文和多个单词原型改进单词表示》Improving Word Representations Via Global Context And Multi- ple Word Prototypes(Huang等人,2012年)描述了NLP中如何处理此类情况。该方法的实质如下:

1. 收集该单词所有出现的固定大小上下文窗口(例如,5个前后)。

2. 每个上下文由上下文词向量的加权平均值表示(使用idf加权)。

3. 应用球形k-均值对这些上下文表示进行聚类。

4. 最后,每个出现的单词都被重新标记为其关联的簇,并用于训练该簇的单词表示。

关于这个题目的更严格的处理,可以去研究一下他们的论文。

<下一节:[CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理(五)词向量(五)_放肆荒原的博客-博客]( "CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理(五)词向量(五)_放肆荒原的博客-博客")>

全部评论 (0)

还没有任何评论哟~