Communications Mining
最新
False
横幅背景图像
Communications Mining 开发者指南
上次更新日期 2024年5月17日

机器如何学习理解单词:NLP 嵌入指南

Communications Mining 的机器学习算法基于预训练的Transformer模型,该模型可学习文本序列的语义信息表示(称为嵌入)。 在过去的几年中,Transformer 模型在大多数常见的自然语言处理 (NLP) 任务中都取得了最先进的结果。

但是我们是怎么走到这一步的呢? 是什么导致变换器成为训练嵌入的首选模型? 在过去的 10 年中,NLP 的最大进步得益于学习无监督预训练文本嵌入方面的进步。 在这篇文章中,我们将着眼于嵌入方法的历史,以及它们如何随着时间的推移而改进。

这篇文章将

  • 解释什么是嵌入以及嵌入在常见 NLP 应用程序中的用法。
  • 介绍训练嵌入的流行方法的历史,包括 word2vec 等传统方法和 BERT 等基于 Transformer 的现代方法。
  • 讨论嵌入方法的缺点及其解决方法。

后台

什么是嵌入?​​

假设我们有一个大型文档语料库,要对其执行任务,例如识别讲话者的意图。 大多数先进的 NLP 方法都使用基于神经网络的方法。 首先将每个单词编码为数字向量,称为嵌入。 然后,神经网络可以将这些嵌入作为输入,以执行给定的任务。

假设语料库包含 10,000 个唯一的单词。 我们可以使用“one-hot”嵌入(即一个除与单词对应的单个位置为 0 的稀疏 10,000 维向量,其值为 1)对每个单词进行编码,例如

'a' = [1, 0, 0, ..., 0, 0]
...
'my' = [0, ..., 0, 1, 0, ..., 0]
...
'you' = [0, 0, ..., 0, 0, 1]'a' = [1, 0, 0, ..., 0, 0]
...
'my' = [0, ..., 0, 1, 0, ..., 0]
...
'you' = [0, 0, ..., 0, 0, 1]

但是,此方法存在一些问题:

  • 不含语义信息的嵌入
    • 使用 one-hot 编码方法时,所有嵌入都彼此垂直。 理想情况下,我们希望在语义上彼此相关的单词具有“相似”的嵌入,但 one-hot 嵌入不会直接对相似性信息进行编码。
  • 高维
    • 每个单词都有一个 10,000 维向量,这意味着在使用基于神经网络的方法时,我们可能很快就会耗尽内存。 在许多领域中,10,000 个词汇量已经被视为较小的词汇量,而词汇表的大小通常是其 5 到 10 倍。

因此,低维密集嵌入更受欢迎。 除了解决 one-hot 嵌入的内存问题外,它们还可以对两个词在语义上相似的概念进行编码。 例如,假设我们有 4 维密集嵌入。 我们可能希望“apple”和“annana”的嵌入相似,例如

apple = [3.14, -0.03, -0.26, -2.27]
banana = [2.95, -0.18, -0.11, 0.09]apple = [3.14, -0.03, -0.26, -2.27]
banana = [2.95, -0.18, -0.11, 0.09]

两者的第一个位置都有较大的正值。 我们可能还希望“apple”和“microsoft”的嵌入相似,例如

apple = [3.14, -0.03, -0.26, -2.27]
microsoft = [-0.12, 0.48, -0.05, -2.63]apple = [3.14, -0.03, -0.26, -2.27]
microsoft = [-0.12, 0.48, -0.05, -2.63]

两者的第四个位置都有一个较大的负值。

如何使用嵌入?​

对语义信息进行编码的嵌入在所有 NLP 应用程序中至关重要。 无论使用它们的模型设计得多么好,如果嵌入的信息不足,则模型将无法提取必要的信号以进行准确的预测。

分类

对于分类任务(例如 情感分析)时,最常见的方法是将文档的嵌入聚合到单个向量中,然后将此文档向量作为输入传递到负责进行预测的前馈网络中(有关说明,请参见图 1)。

聚合嵌入可以使用简单的启发式方法计算(例如 计算嵌入的平均值),或者它本身可以是神经网络(例如 LSTM 或变换器)的输出。

通过聚合文档的嵌入来执行情感分析,并使用此聚合的嵌入进行预测

语义搜索

除了分类任务之外,嵌入对于语义搜索也特别有用。 此任务不仅根据关键字检索结果,还根据搜索查询的语义检索结果。

语义搜索的工作原理是,首先为语料库中的每个文档计算聚合嵌入(同样,聚合函数可以是启发式的,也可以是学习性的)。 然后,还会嵌入给定的搜索查询,并返回嵌入与搜索查询的嵌入最接近的文档(有关说明,请参见图 2)。 紧密度通常是根据比较两个嵌入之间距离的指标来衡量的,例如余弦相似度

通过将搜索查询的嵌入与每个文档进行比较,并查找最接近的匹配项,来执行语义搜索。

嵌入方法的历史记录​

大多数单词嵌入方法的训练方法是,获取大量文本语料库,并查看语料库中句子中哪些单词经常相邻出现。 例如,“计算机”一词通常可能与“键盘”、“软件”和“互联网”等词一起出现;这些常见的相邻词表示嵌入的“computer”应编码的信息。

本节介绍学习嵌入的四种流行技术,从 word2vec 到基于 Transformer 的 BERT。

Word2vec​

word2vec于 2013 年发布,可以说是第一个普及预训练词嵌入并将其带入现代 NLP 主流的方法。 word2vec 包含两种学习嵌入的方法:

  • 连续词袋(有关示例,请参见图 3)。
    • 根据两边的k个相邻词预测给定词。
      • 这是通过投影来完成的(即 矩阵乘法)将相邻单词的 one-hot 编码向下转换为低维密集嵌入,取均值,并使用此值来预测丢失的单词。
  • Skipgram(有关示例,请参见图 4)。
    • 在给定一个单词的情况下,预测两侧的k个相邻单词。
      • 这是通过投影来完成的(即 矩阵乘法)将给定单词的 one-hot 编码转换为低维密集嵌入,并使用该编码来预测缺失的单词。
word2vec 连续词袋

word2vec skipgram 模型。

作者证明了嵌入之间几个非常直观的线性类比。 给定具有特定关系的两个单词 x y ,以及与 y 处于同一“类别”中的另一个 单词 z ,作者找到嵌入度最接近(使用余弦距离)到 Emb( x ) - Emb( y )+ Emb( z )。生成的单词wz的关系通常与xy的关系相同(有关一些示例,请参见表 1)。

表 1:word2vec 模型学到的类比。

Xyzw=nearest(emb(x)−emb(y)+emb(z))
最大最小
巴黎法国意大利罗马

鼠标左键

如上所述,word2vec 基于局部滑动窗口。 这意味着,word2vec 不会直接使用全局单词共现统计信息,除非通过创建的训练示例的数量来使用。 例如,嵌入不会直接包含“银行”一词在“金钱”一词的上下文中比“河”更频繁这一事实,除了“银行”和“金钱”会一起出现这一事实比“银行”和“河”更多的训练示例。

因此,在 word2vec 之后一年, GloVe发布了,它将基于局部滑动窗口的方法的优点与全局方法(即 语料库级别)的单词共现计数。 它通过训练嵌入来实现此目的,以便根据两个词之间的全局共现计数确定它们嵌入的相似程度。

首先,构建一个全局共现矩阵X ,其条目 Xi,j ​表示单词j在单词i的上下文中出现的次数。 然后,GloVe 目标会训练单词嵌入,以最小化以下最小二乘目标:


其中 V 是词汇表, u是单词向量, v是上下文向量, bc是偏差。 f (Xi,j​) 是一个权重函数,用于防止对具有极低和极高值的共现给予过多权重。 训练后,单词i的最终单词嵌入为 Wi,j​​= Ui ​+ Vi ​。

在单词类比任务(如上所述)上,GloVe 嵌入的性能明显优于 word2vec,并且在命名实体识别方面略好一些。 因此,GloVe 向量多年来一直是首选的预训练单词嵌入,并且迄今为止仍然很受欢迎。

备注:

到目前为止提出的方法的一个主要缺点是它们是静态的,即给定单词的嵌入始终相同。 例如,考虑“银行”一词,这可能指河边或金融机构;它的嵌入必须对两种含义进行编码。

为了解决这个问题,人们开发了上下文嵌入方法。 根据序列的不同,每个单词都有不同的嵌入(例如 句子、文档)。 这项工作改变了游戏规则;现在很难找到不依赖上下文嵌入的最先进方法。

ELMo​

在 2010 年代中期,递归神经网络 (RNN) 是大多数 NLP 任务中最受欢迎的架构。 RNN 逐步对文本序列执行计算,一次读取和处理每个单词。 它们会更新“隐藏状态”,该状态会跟踪到目前为止的整个序列。

2018 年发布的ELMo是最早流行的上下文嵌入技术之一。 ELMo 通过使用下一个词预测目标在大型自然语言语料库上预训练双向 RNN 模型来学习嵌入。 具体来说,ELMo 通过在每一步分别预测下一个或上一个单词来训练前向和后向堆叠 LSTM,如图 5 所示。

训练完成后,前向和后向 LSTM 的权重将冻结,并在每层的每一步连接输出。 作者发现不同的层学习语言的不同方面,最初的层对语法进行建模,而后面的层则捕获词义与上下文相关的方面。 因此,各层上特定于任务的加权平均值将被视为每个单词的嵌入。

ELMo,显示为具有两层双向 LSTM。

当时,ELMo 在许多任务上的性能都显着优于以前最先进的方法,包括回答问题、识别文本包含和情感分析。

BERT​

在开发 ELMo 的同时,发布了(现在著名的)变换器,作为执行机器翻译的架构。 它使用注意机制代替了 RNN 的顺序计算,这样可以并行计算每个单词的上下文表示,因此运行起来比 RNN 快得多。

人们很快意识到,Transformer 架构可以推广到机器翻译以外的其他任务,包括学习嵌入。 BERT于 2019 年发布,是最早、也可以说是最受欢迎的基于 Transformer 架构的上下文嵌入方法之一。

但是,与目前提出的方法不同,BERT 不会直接学习单词的嵌入。 相反,它会学习“子词”令牌的嵌入。 学习单词嵌入时的主要问题是需要固定大小的词汇表,否则,我们将用尽内存。 相反,BERT 使用一种称为WordPiece的算法将句子标记为子词单元。 这意味着单词可能会被拆分为单独的令牌,例如单词 {'等待', '等待', '等待'} 可能会被令牌化为 {['等待'], ['等待', '## ing'], ['等待', '##er']},所有这些共享相同的词干,但具有不同的后缀。

BERT 使用两个目标函数进行预训练(如图 6 所示):

  • 掩码语言建模
    • 系统会从序列中删除一些随机选择的令牌,然后让模型对其进行预测。
  • 预测下一个句子
    • 两个(掩码)序列将连接在一起,在每个序列的开头使用特殊的 [CLS] 令牌,并在每个序列的末尾使用 [SEP] 令牌。 然后,模型必须使用 [CLS] 令牌的最后一层嵌入来预测第二个词是否直接在原始语料库中的第一个词之后。

执行下游任务时,CLS 嵌入可用于句子/文档级别的任务,例如 意图识别或情感分析,而单个令牌嵌入可用于单词级任务,例如 命名实体识别。

由于变换器不是顺序架构,因此输入层不仅仅是 one-hot 令牌编码的投影。 相反,它是三个不同嵌入的总和:

  • 独热令牌编码的投影。
  • 位置嵌入(即令牌在序列中所处位置的嵌入)。
  • 嵌入段(即 无论令牌是来自第一个序列还是第二个序列,在上述下一个句子预测目标中)。
BERT,显示为具有单层注意机制。 实际上,所有注意操作都会同时发生,但为了清楚起见,这里按顺序显示这些操作。

一旦完成预训练,BERT 通常会针对下游任务进行“微调”(即,其权重会针对每个任务进一步更新;不会像 ELMo 那样冻结)。 在包括SQuAD (问答)和GLUE 基准在内的许多任务中,BERT 的性能显着优于当时最先进的方法。

BERT(及其后续变体)彻底改变了 NLP 领域;现在很难找到不依赖于基于 Transformer 架构的上下文嵌入的最先进方法。

嵌入方法的缺点​

正如本文所述,训练嵌入方面的进步彻底改变了 NLP。 但是,在使用预训练的嵌入时,需要注意某些陷阱。

首先,嵌入模型可以对其训练所基于的数据集中包含的偏差进行编码,甚至放大。 例如,事实证明,嵌入可以对基于性别的职业刻板印象进行编码,例如,女性与家务等工作相关联,而男性与计算机编程等工作相关联。 进一步的研究表明,嵌入模型可以从训练数据中识别出带有歧义的语言、种姓氏和其他有害的意识型态。 消除语言模型的偏差是一个活跃的研究领域。识别和减轻此类偏差的最佳方法仍然是一个悬而未决的问题。

其次,新式上下文嵌入方法涉及在由数千个 GPU 组成的集群上花费数周时间训练具有数千亿个参数的模型。 无论是在经济方面还是在环境方面,这都可能造成极高的成本。 正如我们之前评论的,有多种方法可用于训练更高效的模型。

摘要​

本文介绍了“嵌入”的概念,即通过训练来表示文本序列语义的密集数字向量。 此帖子已

  • 解释了什么是嵌入以及它们在常见 NLP 应用程序中的用法。
  • 介绍了训练嵌入的流行方法的历史,包括 word2vec 等传统方法和 BERT 等基于 Transformer 的现代方法。
  • 讨论了嵌入方法的缺点及其解决方法。
  • 后台
  • 嵌入方法的历史记录​
  • 嵌入方法的缺点​
  • 摘要​

此页面是否有帮助?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath 白色徽标
信任与安全
© 2005-2024 UiPath. All rights reserved.