关于自然语言处理:NLP教程2-GloVe及词向量的训练与评估

8次阅读

共计 14116 个字符,预计需要花费 36 分钟才能阅读完成。

作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/36
本文地址:http://www.showmeai.tech/article-detail/232
申明:版权所有,转载请分割平台与作者并注明出处

珍藏 ShowMeAI 查看更多精彩内容



本系列为 斯坦福 CS224n《自然语言解决与深度学习 (Natural Language Processing with Deep Learning)》的全套学习笔记,对应的课程视频能够在 这里 查看。


ShowMeAI 为 CS224n 课程的全副课件,做了 中文翻译和正文 ,并制作成了 GIF 动图!点击 这里 查看“ 第 2 讲 - 词向量进阶”的课件正文与带学解读。更多材料获取形式见文末。


引言

CS224n 是顶级院校斯坦福出品的深度学习与自然语言解决方向专业课程,核心内容笼罩 RNN、LSTM、CNN、transformer、bert、问答、摘要、文本生成、语言模型、浏览了解等前沿内容。

这组笔记首先介绍了训练词向量的 Glove 模型。而后,它扩大了咱们对词向量 (或称词嵌入) 的探讨,看看它们是如何通过外部和内部来评估的。咱们探讨了以词类比作为一种外在评估技术的例子,以及它如何被用来调整词嵌入技术。而后咱们探讨了训练模型的权重 / 参数和词向量的内部工作。最初,咱们将人工神经网络作为一种自然语言解决工作的模型。

内容要点

  • Global Vectors for Word Representation (GloVe 词向量)
  • 词向量外部与内部评估办法
  • 类比工作中的词向量训练超参数影响
  • 相关度评估工作中词向量与人工体现差别
  • 基于上下文解决一词多义问题
  • 窗分类

1.GloVe 词向量构建办法

1.1 比照前序办法

(GloVe 办法的总结也能够参考 ShowMeAI 的对吴恩达老师课程的总结文章深度学习教程 | 自然语言解决与词嵌入

到目前为止,咱们曾经钻研了两类次要的词嵌入办法:

  • 第一类办法是 基于统计并且依赖矩阵合成 (例如 LSA,HAL)。尽管这类办法无效地利用了 全局的信息 ,它们次要用于捕捉单词的 相似性,然而对例如单词类比的工作上体现不好。
  • 第二类办法是 基于浅层窗口(例如,Skip-Gram 和 CBOW 模型),这类模型通过在部分上下文窗口通过预测来学习词向量。

这些模型除了在单词相似性工作上体现良好外,还展现了捕捉 简单语言模式 能力,但未能利用到全局共现统计数据。

相比之下,GloVe 由一个加权最小二乘模型组成,基于全局 word-word 共现计数进行训练,从而无效地利用全局统计数据。模型生成了蕴含有意义的子结构的单词向量空间,在词类比工作上体现十分杰出。

❐ Glove 利用全局统计量,以最小二乘为指标,预测单词 \(j\) 呈现在单词 \(i\) 上下文中的概率。

1.2 共现矩阵

咱们用 \(X\) 示意 word-word 共现矩阵,其中 \(X_{ij}\) 示意词 \(j\) 呈现在词 \(i\) 的上下文的次数。令 \(X_i=\sum_{k}X_{ik}\) 为任意词 \(k\) 呈现在词 \(i\) 的上下文的次数。最初,令 \(P_{ij}=P(w_{j}\mid w_{i})=\frac{X_{ij}}{X_{i}}\) 是词 \(j\) 呈现在词 \(i\) 的上下文的概率。

计算这个矩阵须要遍历一次整个语料库取得统计信息。对宏大的语料库,这样的遍历会产生十分大的计算量,然而这只是一次性的后期投入老本。

共现矩阵 / Co-occurrence Matrix

  • \(X\):word-word 共现矩阵
  • \(X_{ij}\):词 \(j\) 呈现在词 \(i\) 的上下文的次数
  • \(X_i=\sum_k X_{ik}\):任意词 \(k\) 呈现在词 \(i\) 的上下文的次数
  • \(P_{ij}=P(w_j \mid w_i) = \frac{X_{ij}}{X_i}\):词 \(j\) 呈现在词 \(i\) 的上下文的概率

1.3 最小二乘指标函数

回忆一下 Skip-Gram 模型,咱们应用 softmax 来计算词 \(j\) 呈现在词 \(i\) 的上下文的概率。

$$
Q_{ij}=\frac{\exp(\vec{u}_{j}^{T} \vec{v}_{i})}{\sum_{w=1}^{W} \exp (\vec{u}_{w}^{T} \vec{v}_{i})}
$$

训练时以在线随机的形式进行,然而隐含的全局穿插熵损失能够如下计算:

$$
J=-\sum_{i\in corpus} \sum_{j\in context(i)}log\;Q_{ij}
$$

同样的单词 \(i\) 和 \(j\) 可能在语料库中呈现屡次,因而首先将 \(i\) 和 \(j\) 雷同的值组合起来更无效:

$$
J=-\sum_{i=1}^{W}\sum_{j=1}^{W}X_{ij}log\;Q_{ij}
$$

  • 下面公式中,共现频率的值是通过共现矩阵 \(X\) 给定。

穿插熵损失的一个显着毛病是要求散布 \(Q\) 被正确归一化,因为对整个词汇的求和的计算量是十分大的。因而,咱们应用一个最小二乘的指标函数,其中 \(P\) 和 \(Q\) 的归一化因子被抛弃了:

$$
\widehat{J}=\sum_{i=1}^{W}\sum_{j=1}^{W}X_{i}(\widehat{P}_{ij}-\widehat{Q}_{ij})^{2}
$$

其中 \(\widehat{P}_{i j}=X_{i j}\) 和 \(\widehat{Q}_{i j}=\exp (\vec{u}_{j}^{T} \vec{v}_{i})\) 是未归一化散布。这个公式带来了一个新的问题,\(X_{ij}\) 常常会是很大的值,从而难以优化。一个无效的扭转是最小化 \(\widehat{P}\) 和 \(\widehat{Q}\) 对数的平方误差:

$$
\begin{aligned}
\widehat{J} &=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\log (\widehat{P})_{i j}-\log \left(\widehat{Q}_{i j}\right)\right)^{2} \\
&=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\vec{u}_{j}^{T} \vec{v}_{i}-\log X_{i j}\right)^{2}
\end{aligned}
$$

另外一个问题是权值因子 \(X_{i}\) 不能保障是最优的。因而,咱们引入更一般化的权值函数,咱们能够自在地依赖于上下文单词:

$$
\widehat{J}=\sum_{i=1}^{W}\sum_{j=1}^{W}f(X_{ij})(\vec{u}_{j}^{T} \vec{v}_{i}-\log X_{ij})^{2}
$$

1.4 GloVe 模型论断

GloVe 模型仅对单词共现矩阵中的非零元素训练,从而无效地利用全局统计信息,并生成具备有意义的子结构向量空间。给出雷同的语料库,词汇,窗口大小和训练工夫,它的体现都优于 word2vec,它能够更快地实现更好的成果,并且无论速度如何,都能获得最佳成果。

2. 词向量评估

后面的内容介绍了 Word2Vec 和 GloVe 模型来训练和发现语义空间中的自然语言词语的潜在向量示意。上面咱们来看看如何量化评估词向量的品质。

2.1 词向量外部评估

词向量的外部评估是对一组由如 Word2Vec 或 GloVe 生成的词向量在特定的两头子工作 (如词类比) 上的评估。这些子工作通常简略而且计算速度快,从而可能帮忙咱们了解生成的的词向量。外部评估通常应该返回给咱们一个数值,来示意这些词向量在评估子工作上的体现。

  • 对特定的两头工作进行评估
  • 能够很快的计算性能
  • 帮忙了解子系统
  • 须要和实在的工作正相干来确定有用性

在下图中,左子系统 (红色) 训练的计算量大,因而更改为一个简略的子系统 (绿色) 作外部评估。

动机:咱们思考创立一个问答零碎,其中应用词向量作为输出的例子。一个办法是训练一个机器学习零碎:

  • 1. 输出词语
  • 2. 将输出词语转换为词向量
  • 3. 对一个简单的机器学习零碎,应用词向量作为输出
  • 4. 将输入的词向量通过零碎映射到自然语言词语上。
  • 5. 生成词语作为答案

当然,在训练这样的一个问答零碎的过程中,因为它们被用在上游子系统(例如深度神经网络),咱们须要创立最优的词向量示意。在实际操作中,咱们须要对 Word2Vec 子系统中的许多超参数进行调整(例如词向量的维度)。

尽管最现实的办法是在 Word2Vec 子系统中的任何参数扭转后都从新训练,但从工程角度来看是不理论的,因为机器学习零碎 (在第 3 步) 通常是一个深层神经网络,网络中的数百万个参数须要很长的工夫训练。

在这样的状况下,咱们心愿能有一个简略的 外部评估技术 来度量词向量子系统的好坏。显然的要求是外部评估与最终工作的体现有正相干关系。

外部评估

  • 对特定的两头工作进行评估
  • 能够很快的计算性能
  • 帮忙了解子系统
  • 须要和实在的工作正相干来确定有用性

2.2 词向量内部评估

词向量的内部评估是对一组在理论工作中生成的词向量的评估。这些工作通常简单而且计算速度慢。对咱们下面的例子,容许对问题答案进行评估的零碎是内部评估零碎。通常,优化体现不佳的内部评估零碎咱们难以确定哪个特定子系统存在谬误,这就须要进一步的外部评估。

  • 对实在工作的评估
  • 计算性能可能很慢
  • 不分明是子系统出了问题,还是其余子系统出了问题,还是外部交互出了问题
  • 如果替换子系统进步了性能,那么更改可能是好的

2.3 外部评估示例:词类比

一个比拟罕用的外部评估的办法是词向量的类比。在词向量类比中,给定以下模式的不残缺类比:

$$
a:b::c:?
$$

而后外部评估零碎计算词向量的最大余弦类似度:

$$
d=arg\max_i\frac{(x_b-x_a+x_c)^{T}x_i}{\left \| x_b-x_a+x_c \right \|}
$$

❐ 注:咱们看到 单词向量蕴含单词间余弦间隔的意义。它们还蕴含不同维度的含意:例如,“诺基亚”在某些维度上可能靠近“三星”,因为它们都是电子公司,但在另一个维度上可能靠近“芬兰”,因为不同的起因,诺基亚是芬兰公司。

❐ 注:当单词向量向下转换到 2 维 (应用 PCA) 并用图形示意时,能够看到乏味的后果:类似的单词汇集在一起。然而,重要的是要记住,在降维过程中有相当一部分空间信息失落了;因而,下面诺基亚示例中形容的单词之间的简单关系可能不会呈现。

这个指标有直观的解释。现实的状况下,咱们心愿 \(x_b-x_a=x_{d}-x_c\) (例如,queen-king=actress-actor)。这就暗含着咱们心愿 \(x_b-x_a+x_c=x_d\)。因而,咱们确定能够最大化两个词向量之间的归一化点积的向量 \(x_d\) 即可(即余弦类似度)。应用诸如词向量类比的外部评估技术应该小心解决(要思考到预训练的语料库的各个方面)。

例如,思考以下的类比模式:

$$
City\;1:State\;containing\;City\;1:\;:City\;2:State\;containing\;City\;2
$$

上图是可能受到具备雷同名称的不同城市的语义词向量类比(外在评估)。在下面很多的例子,美国有很多同名的城市/城镇/村庄。因而,很多州都合乎正确的答案。例如,在美国至多有 10 个中央的名称是 Phoenix,所以 Arizona 不是惟一的正确答案。在思考以下的类比模式:

$$
Capital\;City\;1:\;Country\;1:\;:Capital\;City\;2:\;Country\;2
$$

上图是可能在不同工夫点有不同首都的国家的语义词向量类比(外在评估)。下面很多的例子,这个工作中生成的城市仅仅是近期的国家首都,可能会受到不同国家在不同工夫点领有不同首都的影响。例如,1997 年之前 Kazakhstan 的首都是 Almaty。因而,如果咱们的语料库过期就会呈现问题。

之前的两个例子阐明如何应用词向量进行语义测试。咱们也能够应用词向量相似进行语法测试。上面是测试形容词最高级概念的句法词向量类比(外在评估),如下图所示:

相似地,下图的外部评估展现了测试词向量捕捉过来时态概念的能力

2.4 词类比 - 不同办法体现

咱们当初探讨应用外在评估零碎 (如类比零碎) 来调整的词向量嵌入技术 (如 Word2Vec 和 GloVe) 中的超参数。咱们首先来看看在类比评估工作中,在雷同的超参数下,由不同办法创立的词向量体现成果:

依据上表,咱们能够看到 3 点:

模型的体现高度依赖模型所应用的词向量的模型

  • 这点是能够预料到的,因为不同的生成词向量办法是基于不同的个性的(例如共现计数,奇怪向量等等)。

语料库更大模型的体现更好

  • 这是因为模型训练的语料越大,模型的体现就会更好。例如,如果训练的时候没有蕴含测试的词语,那么词类比会产生谬误的后果。

对于极高或者极低维度的词向量,模型的体现较差

  • 低维度的词向量不能捕捉在语料库中不同词语的意义。这能够被看作是咱们的模型复杂度太低的高偏差问题。例如,咱们思考单词“king”、“queen”、“man”、“woman”。直观上,咱们须要应用例如“性别”和“领导”两个维度来将它们编码成 2 字节的词向量。维度较低的词向量不会捕捉四个单词之间的语义差别,而过高的维度的可能捕捉语料库中无助于泛化的噪声 - 即所谓的高方差问题。

超高维向量:直观地说,这些向量仿佛会在语料库中捕捉不容许泛化的噪声,即导致高方差。然而 Yin 等人在 On the Dimensionality of Word Embedding 上表明,skip-gram 和 Glove 对这种过拟合具备鲁棒性。

2.5 外部评估示例:类似度 / 关联度

另外一个评估词向量品质的简略办法是,让人去给两个词的类似度在一个固定的范畴内 (例如 0 -10) 评分,而后将其与对应词向量的余弦类似度进行比照。这曾经在蕴含人为评估的各种数据集上尝试过。

下图是应用不同的词嵌入技术与不同的人类判断数据集的词向量相似性之间的相关性

2.6 拓展浏览:多义词

咱们想晓得如何解决在不同的自然语言解决应用场景下,用不同的的词向量来捕捉同一个单词在不同场景下的不同用法。例如,“run”是一个名词也是一个动词,在不同的语境中它的词性也会不同。论文 Improving Word Representations Via Global Context And Multiple Word Prototypes 提出上述问题的的解决办法。该办法的实质如下:

  • 收集所有呈现的单词的固定大小的上下文窗口(例如前 5 个和后 5 个)。
  • 每个上下文应用上下文词向量的加权平均值来示意(应用 idf 加权)。
  • spherical k-means 对这些上下文示意进行聚类。
  • 最初,每个单词的呈现都从新标签为其相关联的类,同时对这个类,来训练对应的词向量。

要对这个问题进行更谨严的解决,能够参考原文。

3. 词向量利用于内部工作

到目前为止,咱们始终都关注于外在工作,并强调其在开发良好的词向量技术中的重要性。然而大多数理论问题的最终目标是将词向量后果用于其余的内部工作。接下来会探讨解决内部工作的办法。

3.1 内部工作范式

很多 NLP 的内部工作都能够表述为分类工作。例如,给定一个句子,咱们能够对这个句子做情感分类,判断其情感类别为侧面,负面还是中性。类似地,在命名实体辨认 (NER),给定一个上下文和一个中心词,咱们想将中心词分类为许多类别之一。对输出, 张三在 2022 年购买了 300 股腾讯的股票,咱们心愿有这样的一个分类后果:

$$
[张三]_{Person} 在[2022 年]_{Time}\ 购买了 \ 300 \ 股 [腾讯]_{Organization} 的股票
$$

对这类问题,咱们个别有以下模式的训练集:

$$
\{x^{(i)},y^{(i)}\}_{1}^{N}
$$

其中 \(x^{(i)}\) 是一个 \(d\) 维的词向量,\(y^{(i)}\) 是一个 \(C\) 维的 one-hot 向量,示意咱们心愿最终预测的标签(情感,其余词,专有名词,买/卖决策等)。

咱们能够应用诸如逻辑回归和 SVM 之类的算法对 2 - D 词向量来进行分类,如下图所示

在个别的机器学习工作中,咱们通常固定输出数据和指标标签,而后应用优化算法来训练权重(例如梯度降落,L-BFGS,牛顿法等等)。然而在 NLP 利用中,咱们引入一个新的思维:在训练内部工作时对输出字向量进行再训练。上面咱们探讨何时应用以及为什么要这样做。

3.2 词向量再训练

在许多状况下,咱们会基于外部工作去训练失去词向量,进而再用于内部工作,很多时候这些预训练的词向量在内部评估中体现良好。然而,这些预训练的词向量在内部评估中的体现依然有进步的可能。当然,从新训练也存在着肯定的危险。

如果咱们在内部评估中从新训练词向量,这就须要保障训练集足够大并能笼罩词汇表中大部分的单词。这是因为 Word2Vec 或 GloVe 会生成语义相干的单词,这些单词位于单词空间的同一部分。

假如预训练向量位于二维空间中,如下图所示。在这里,咱们看到在一些内部分类工作中,单词向量被正确分类。

当初,如果咱们因为无限的训练集大小而只对其中两个向量进行再训练,那么咱们在下图中能够看到,其中一个单词被谬误分类了,因为单词向量更新导致边界挪动。

因而,如果训练数据集很小,就不应该对单词向量进行再训练。如果训练集很大,再训练能够进步性能。

实现技巧:对于大型训练数据集,应思考字向量再训练。对于小数据集,从新训练单词向量可能会升高性能。

3.3 Softmax 分类与正则化

咱们持续应用 Softmax 分类函数,其模式如下公式所示:

$$
p(y_{j}=1\mid x)=\frac{exp(W_{j.}x)}{\sum_{c=1}^{C}exp(W_{c.}x)}
$$

这里咱们计算词向量 \(x\) 是类别 \(j\) 的概率。应用穿插熵损失函数计算一个样本的损失如下所示:

$$
-\sum_{j=1}^{C}y_{j}\,log(p(y_{j}=1\mid x))=-\sum_{j=1}^{C}y_{j}\,log\bigg(\frac{exp(W_{j.}x)}{\sum_{c=1}^{C}exp(W_{c.}x)}\bigg)
$$

当然,上述求和是对 \((C-1)\) 个零值求和,因为 \(y_j\) 仅在单个索引为 1,这意味着 \(x\) 仅属于 1 个正确的类别。当初咱们定义 \(k\) 为正确类别的索引。因而,咱们当初能够简化损失函数:

$$
-log\bigg(\frac{exp(W_{k.}x)}{\sum_{c=1}^{C}exp(W_{c.}x)}\bigg)
$$

而后咱们能够扩大为有 \(N\) 个单词的损失函数:

$$
-\sum_{i=1}^{N}log\bigg(\frac{exp(W_{k(i).}x^{(i)})}{\sum_{c=1}^{C}exp(W_{c.}x^{i})}\bigg)
$$

下面公式的惟一不同是 \(k(i)\) 当初一个函数,返回 \(x^{(i)}\) 对应的每正确的类的索引。

当初咱们来预计一下同时训练模型的权值 \((W)\) 和词向量 \((x)\) 时须要更新的参数的数量。咱们晓得一个简略的线性决策模型至多须要一个 \(d\) 维的词向量输出和生成一个 \(C\) 个类别的散布。因而更新模型的权值,咱们须要 \(C \cdot d\) 个参数。如果咱们也对词汇表 \(V\) 中的每个单词都更新词向量,那么就要更新 \(\left | V \right |\) 个词向量,每一个的维度是 \(d\) 维。因而对一个简略的线性分类模型,总共的参数数目是 \(C \cdot d + \left | V \right |\):

$$
\begin{aligned}
\nabla_{\theta}J(\theta) =
\begin{bmatrix}
\nabla_{W_{.1}} \\
\vdots \\
\nabla_{W_{.d}} \\
\nabla_{aardvark} \\
\vdots \\
\nabla_{zebra}
\end{bmatrix}
\end{aligned}
$$

对于一个简略的模型来说,这是相当大的参数量——这样的参数量很可能会呈现过拟合的问题。

为了升高过拟合的危险,咱们引入一个正则项,从贝叶斯派的思维看,这个正则项是对模型的参数加上一个先验散布,让参数变小(即靠近于 \(0\) ):

$$
-\sum_{i=1}^{N}log\bigg(\frac{exp(W_{k(i).}x^{(i)})}{\sum_{c=1}^{C}exp(W_{c.}x^{i})}\bigg)+\lambda\sum_{k=1}^{C \cdot d + \left | V \right |\cdot d} \theta_{k}^{2}
$$

如果调整好指标权重 \(\lambda\) 的值,最小化下面的函数将会升高呈现很大的参数值的可能性,同时也进步模型的泛化能力。在咱们应用更多参数更简单的模型 (例如神经网络) 时,就更加须要正则化的思维。

3.4 窗内容分类

下图是咱们有一个中心词和一个长度为 2 的对称窗口。这样的上下文能够帮忙分辨 Paris 是一个地点还是一个名字。

目前为止,咱们次要探讨了应用单个单词向量 \(x\) 预测的内部评估工作。在事实中,因为自然语言解决的性质,这简直不会有这样的工作。在自然语言解决中,经常存在着一词多义的状况,咱们个别要利用词的上下文来判断其不同的意义。

例如,如果你要某人解释“to sanction”是什么意思,你会马上意识到依据“to sanction”的上下文其意思可能是“to permit”或者“to punish”。在更多的状况下,咱们应用一个单词序列作为模型的输出。这个序列是由中心词向量和上下文词向量组成。上下文中的单词数量也被称为上下文窗口大小,并依据解决的问题而变动。

一般来说,较窄的窗口大小会导致在句法测试中更好的性能,而更宽的窗口会导致在语义测试中更好的性能

为了将之前探讨的 Softmax 模型批改为应用单词的窗口来进行分类,咱们只须要依照上面模式将 \(x^{(i)}\) 替换为 \(x_{window}^{(i)}\):

$$
\begin{aligned}
x_{window}^{(i)} =
\begin{bmatrix}
x^{(i-2)} \\
x^{(i-1)} \\
x^{(i)} \\
x^{(i+1)} \\
x^{(i+2)}\
\end{bmatrix}
\end{aligned}
$$

因而,当咱们计算单词的损失梯度如下所示,当然须要调配梯度来更新相应的词向量:

$$
\begin{aligned}
\delta_{window} =
\begin{bmatrix}
\nabla_{x^{(i-2)}} \\
\nabla_{x^{(i-1)}} \\
\nabla_{x^{(i)}} \\
\nabla_{x^{(i+1)}} \\
\nabla_{x^{(i+2)}}
\end{bmatrix}
\end{aligned}
$$

当然,梯度将须要散发来更新相应的词向量。

3.5 非线性分类器

咱们当初介绍非线性分类模型,如神经网络。咱们看到即便是最优的线性分类立体,也有许多样例都被谬误的分类。这是因为线性模型在这个数据集上的分类能力无限。

在下图中,咱们看到非线性分类模型能够对下面的数据集的样例有着更好的分类后果,这个简答的例子能够初步的阐明咱们为什么须要非线性模型。

4. 拓展浏览

4.1 Improving Distributional Similarity with Lessons Learned from Word Embeddings

理论利用中如何取得更好的词向量

1) Abstract

近年来的钻研趋势表明,基于神经网络的词嵌入模型在词相似性和相似性检测工作上优于传统的基于计数的散布模型。咱们发现,词嵌入的性能进步在很大水平上是因为某些零碎设计抉择和超参数优化,而不是嵌入算法自身。此外,咱们证实这些批改能够转移到传统的调配模型,产生相似的收益。与以前的报告相比,咱们察看到的办法之间的性能差别次要是部分的或不显著的,没有任何一种办法比其余办法具备全局劣势。

2) Introduction

然而,最先进的嵌入办法都是基于雷同的 bag-of-contexts 的单词。此外,分析表明,word2vec 的 SGNS 隐含地合成了单词上下文的 PMI 矩阵。也就是说,其数学指标和可用的信息起源实际上与传统办法所应用的十分类似。那么其劣势来源于什么呢?

尽管模型和优化的指标函数是次要因素,然而其余因素也会影响后果

  • 超参数优化:负采样的样本个数,平滑的负采样散布,动静大小的上下文窗口

在这项工作中,咱们将这些超参数显式化,并展现了如何将它们利用到传统的基于计数器的办法中。为了评估每个超参数对算法性能的影响,咱们进行了试验,比拟了四种不同的示意办法,同时管制了不同的超参数

3) Practical Recommendations

通常倡议为手头的工作调优所有超参数,以及特定于算法的超参数。然而,这可能是计算低廉的。因而咱们提供一些“教训法令”,咱们发现它们在咱们的设置中工作得很好:

  • 始终应用上下文散布平滑 (\(cds = 0.75\) ) 来批改 PMI,并且实用于 PPMI、SVD 和 SGNS,一直进步性能

不要应用 SVD“correctly”(eig = 1)。应用对称变体之一

SGNS 是强壮的基线。尽管它可能不是每个工作的最佳办法,但它在任何状况下都不会体现得很差。此外,SGNS 是最快的训练方法,而且在磁盘空间和内存耗费方面 (到目前为止) 也是最便宜的。

SGNS 适宜更多的负样本

对于 SGNS 和 GloVe 而言,值得对 \(\vec{w}+\vec{c}\) 做试验,因为这是容易利用 (不须要从新训练) 并且带来可观收益 (以及可观损失) 的。

4) Conclusion

最近的嵌入办法引入了大量的网络结构以外的设计抉择和优化算法。咱们揭示了这些看似渺小的变动对单词示意办法的胜利有很大的影响。通过展现如何在传统办法中适应和调整这些超参数,咱们对示意进行适当的比拟,并从词嵌入文献中挑战各种劣势。

本钻研还揭示了对更多控制变量试验的须要,并将“变量”的概念从显著的工作、数据和办法扩大到常常疏忽的预处理步骤和超参数设置。咱们还强调了须要进行通明和可反复的试验,并投诉诸如 Mikolov、Pennington 等作者,以及其他人公开提供他们的代码。本着这种精力,咱们也颁布咱们的代码

4.2 Evaluation methods for unsupervised word embeddings

1) Abstract

咱们介绍了一种无监督嵌入技术的评估办法,该办法能够从文本中获取有意义的示意。嵌入办法的程序不同,评估后果也不同,这就对通常认为只有一个最优向量示意的假如提出了质疑。咱们提供了一种新的评估技术,能够间接通过特定查问比拟词嵌入。这些办法缩小了偏差,提供了更大的洞察力,并容许咱们通过众包疾速精确地征求数据驱动的相关性判断。

2) Discussion

超参数优化会导致显著的性能差别。

实际上,不同的算法编码的信息出奇地不同,这些信息可能与咱们想要的用例统一,也可能与咱们想要的用例不统一。例如,咱们发现词嵌入将对于词频的信息的编码水平不同,即便在长度归一化后也是如此。

这个后果令人诧异

  • 首先,许多算法保留了不同的拦挡参数来排汇基于频率的成果。
  • 其次,咱们心愿嵌入空间的几何形态次要由语义驱动:频率绝对较小的词应该平均地散布在空间中,而大量常见的、特定的单词应该围绕相干但更频繁的单词汇集。

咱们训练了一个逻辑回归模型来预测基于词向量的词频类别。训练线性分类器将单词分类为常见或常见类别,阈值从 100 到 50000 不等。在每个阈值频率下,咱们对训练集进行采样以确保标签散布在所有频率上的一致性均衡。咱们应用了长度归一化的嵌入,因为常见的单词在训练期间更新较少,可能具备更短的向量(Turian et al.,2010)。在下图中,咱们报告了在每个阈值频率下应用五倍穿插验证的均匀准确度和标准偏差(\(1 \sigma\) )。

所有单词嵌入都比随机的好,这表明它们蕴含一些频率信息。GloVe 和 TSCCA 在靠近 1000 的词频上达到近 100% 的准确性。与其余所有嵌入不同,C&W 嵌入的更大的词频的准确性减少了。进一步的考察显示,权重矩阵的方向是随词频阈值扭转的,这表明词频仿佛在嵌入空间中以平滑的形式被编码。

尽管 GloVe 和 CBOW 是外在工作上最佳的两种嵌入,但它们在其编码的频率信息量上有很大的差别。因而,咱们能够判定,不同的频率预测并不是因为自然语言的外在性质:并不是说频繁的单词天然只有频繁的街坊。

嵌入空间中的词频信息也会影响词的相似性。对于 WordSim-353 数据集,咱们查问了 k = 1000 个最近街坊。而后,咱们查问其在训练集语料库中频率的排名,均匀了所有的查问词。在咱们的试验中,咱们发现一个单词的频率和它在最近邻中的排名地位有很强的相关性。下图显示了 C &W 词嵌入中一个词的最近邻排名 (对于一次查问) 和其词频在训练集语料库中的排名之间的幂律关系 (nn-rank ∼ 1000 · \(\text{corpus-rank}^{0.17}\) )。这是一个值得关注的问题:语言中单词的频率在人类的文字处理过程中也起着至关重要的作用(Cattell,1886)。因而,在实验设计中,咱们须要明确地把词频作为一个因素来思考。同时,上述后果也表明,罕用的余弦类似度在嵌入空间内的固有工作时,会受到频率效应的影响。咱们认为,进一步的钻研应该解决如何更好地掂量词与嵌入空间之间的语言关系的问题,例如通过学习自定义度量。

3) Related Work

Mikolov et al. (2013b) 阐明嵌入空间存在特定的语言法则。通过在嵌入空间中进行简略的向量运算,能够解决各种句法和语义类比问题。这与之前的工作不同,之前的工作将类比工作形容为一个分类问题 (Turney,2008)。令人诧异的是,词嵌入仿佛捕捉到了更简单的语言个性。Chen 等人(2013) 的钻研表明,单词嵌入甚至蕴含了区域拼写(英式与美式)、名词性别和情感极性等信息。

以往的词嵌入评估工作可分为外部评估和内部评估。外在评估通过间接测量语义关联和几何关联之间的相关性来掂量词向量的品质,通常通过查问术语的的库存来实现。Baroni 等人 (2014) 以内在度量为重点,在各种查问清单和工作上比拟词嵌入和散布词向量。Faruqui and Dyer (2014)提供了一个网站,该网站容许对一些查问清单的嵌入进行主动评估。Gaoetal.(2014)发表了一份改良的类比推理工作查问清单。最初,Tsvetkov 等人 (2015) 提出了一种新的外在度量办法,该办法能够更好地关联内部成果。然而,所有这些评估都是在事后收集的清单上进行的,并且大多局限于本地指标,如相关性。

内部评估应用嵌入作为其余任务模型中的特色,例如语义角色标记或词性标记(Collobert etal.,2011),并进步现有零碎的性能(Turianetal.,2010)。然而,他们在其余工作上,如解析,则不太胜利(Andreas 和 Klein,2014)。

在主题模型的上下文中,无监督语义建模方面做了更多的工作。一个例子是单词入侵工作(Chang et al.,2009),其中正文器被要求辨认插入到给定主题的一组高概率单词中的随机单词。词嵌入不产生可解释的维度,因而咱们不能间接应用这个办法,然而咱们提出了一个基于最近街坊的相干工作。手工评估是低廉和耗时的,但其余钻研表明,自动化评估能够严密地模仿人类的直觉(Newman et al.,2010)。

4) Conclusion

影响嵌入品质的因素很多。规范的综合评估尽管有用,但不能提供残缺或统一的状况。词汇频率等因素在其中扮演着重要的角色,而这在以前是鲜为人知的。词频也会烦扰罕用的余弦相似性度量。咱们提出了一个新的评估框架,该框架基于嵌入之间的间接比拟,为这些嵌入提供了更精密的剖析,并反对简略的众包相关性判断。咱们还提出了一个新的一致性工作,它测量了咱们的直觉,即嵌入空间中的邻域应该在语义或语法上相干。咱们发现,内部评估尽管有助于突出嵌入性能的特定方面,但不应该用作通用品质的代理。

5. 参考资料

  • 本教程的 在线浏览版本
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程学习指南
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程大作业解析
  • 双语字幕视频】斯坦福 CS224n | 深度学习与自然语言解决(2019·全 20 讲)
  • Stanford 官网 | CS224n: Natural Language Processing with Deep Learning

ShowMeAI系列教程举荐

  • 大厂技术实现 | 举荐与广告计算解决方案
  • 大厂技术实现 | 计算机视觉解决方案
  • 大厂技术实现 | 自然语言解决行业解决方案
  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程 | 斯坦福 CS224n 课程 · 课程带学与全套笔记解读

NLP 系列教程文章

  • NLP 教程(1)- 词向量、SVD 合成与 Word2vec
  • NLP 教程(2)- GloVe 及词向量的训练与评估
  • NLP 教程(3)- 神经网络与反向流传
  • NLP 教程(4)- 句法分析与依存解析
  • NLP 教程(5)- 语言模型、RNN、GRU 与 LSTM
  • NLP 教程(6)- 神经机器翻译、seq2seq 与注意力机制
  • NLP 教程(7)- 问答零碎
  • NLP 教程(8)- NLP 中的卷积神经网络
  • NLP 教程(9)- 句法分析与树形递归神经网络

斯坦福 CS224n 课程带学详解

  • 斯坦福 NLP 课程 | 第 1 讲 – NLP 介绍与词向量初步
  • 斯坦福 NLP 课程 | 第 2 讲 – 词向量进阶
  • 斯坦福 NLP 课程 | 第 3 讲 – 神经网络常识回顾
  • 斯坦福 NLP 课程 | 第 4 讲 – 神经网络反向流传与计算图
  • 斯坦福 NLP 课程 | 第 5 讲 – 句法分析与依存解析
  • 斯坦福 NLP 课程 | 第 6 讲 – 循环神经网络与语言模型
  • 斯坦福 NLP 课程 | 第 7 讲 – 梯度隐没问题与 RNN 变种
  • 斯坦福 NLP 课程 | 第 8 讲 – 机器翻译、seq2seq 与注意力机制
  • 斯坦福 NLP 课程 | 第 9 讲 – cs224n 课程大我的项目实用技巧与教训
  • 斯坦福 NLP 课程 | 第 10 讲 – NLP 中的问答零碎
  • 斯坦福 NLP 课程 | 第 11 讲 – NLP 中的卷积神经网络
  • 斯坦福 NLP 课程 | 第 12 讲 – 子词模型
  • 斯坦福 NLP 课程 | 第 13 讲 – 基于上下文的表征与 NLP 预训练模型
  • 斯坦福 NLP 课程 | 第 14 讲 – Transformers 自注意力与生成模型
  • 斯坦福 NLP 课程 | 第 15 讲 – NLP 文本生成工作
  • 斯坦福 NLP 课程 | 第 16 讲 – 指代消解问题与神经网络办法
  • 斯坦福 NLP 课程 | 第 17 讲 – 多任务学习(以问答零碎为例)
  • 斯坦福 NLP 课程 | 第 18 讲 – 句法分析与树形递归神经网络
  • 斯坦福 NLP 课程 | 第 19 讲 – AI 平安偏见与偏心
  • 斯坦福 NLP 课程 | 第 20 讲 – NLP 与深度学习的将来

正文完
 0