一篇文章解释了著名研究论文“Attention Is All You Need”中 transformer 模型中“位置嵌入”背后的直觉。
深度学习领域引入Transformer架构无疑为这场无声的革命铺平了道路,尤其是在NLP的分支领域。 transformer 架构中最不可或缺的部分之一是“位置嵌入” ,它使神经网络能够理解单词的顺序及其在长句中的依赖关系。
然而,我们知道 RNN 和 LSTM 在 transformer 出现之前就已经引入,即使没有位置嵌入也能理解词序。然后,你会很明显地怀疑为什么这个概念被引入到 transformers 中,以及鼓动这个概念背后的真正优势。让我们概念化本文中的所有这些信息。
嵌入是自然语言处理中用于将原始文本转换为数学向量的过程。这是因为机器学习模型将无法为各种内部计算过程直接使用文本格式的输入。
Word2vec、Glove等算法进行的嵌入过程称为词嵌入或静态嵌入。
在这里,包含大量单词的大型文本语料库被传递到训练过程的模型中。该模型会假设出现频率更高的单词是相似的,从而为每个单词分配相应的数学值。在此过程之后,导出的数学值用于进一步计算。
例如,
考虑到我们的文本语料库有 3 个句子,如这里所述 -
在这里,我们可以看到“King”和“Queen”这两个词频繁出现。因此,该模型将假设这些词之间可能存在一些相似之处。当这些词被转化为数学值时,它们在多维空间中表示时会被放置在一个很小的距离内。
图片来源:作者图解
想象一下还有另一个词“Road”,那么从逻辑上讲,它不会在大型文本语料库中与“King”和“Queen”一起出现得更频繁。因此,该词将在空间中相距很远。
图片来源:作者图解
从数学上讲,向量是使用一系列数字表示的,其中每个数字代表单词在特定维度中的大小。
例如,
我们在这里以 3 个维度表示“King”这个词。因此,它可以假设地表示在空间[0.21,0.45,0.67]中。
“Queen”这个词可以假设表示为[0.24,0.41,0.62] 。
“道路”一词可以假设表示为[0.97,0.72,0.36] 。
正如我们在介绍部分所讨论的,需要位置嵌入是为了让神经网络理解句子中的顺序和位置依赖性。
例如,让我们考虑以下句子 -
第 1 句- “虽然 Sachin Tendulkar 今天没有达到一个世纪,但他带领球队取得了胜利”。
句子 2 - “虽然 Sachin Tendulkar 今天打了一个世纪,但他没能带领球队取得胜利”。
这两个句子看起来很相似,因为它们共享大部分单词,但它们的内在含义却大不相同。像“不”这样的词的顺序和位置已经改变了这里传达的信息的整个上下文。
因此,在处理 NLP 项目时,了解位置信息非常关键。如果模型仅通过使用多维空间中的数字来误解上下文,则可能导致严重后果,尤其是在预测模型中。
为了克服这一挑战,引入了 RNN(递归神经网络)和 LSTM(长期短期记忆)等神经网络架构。在某种程度上,这些架构在理解位置信息方面非常成功。他们成功的主要秘诀在于他们试图通过保留单词的顺序来学习长句子。除此之外,他们还将获得关于非常靠近“感兴趣的词”的词和非常远离“感兴趣的词”的词的信息。
例如,
考虑以下句子 -
“萨钦是有史以来最伟大的板球运动员。”
图片来源:作者图解
用红色下划线的词是“感兴趣的词”。它是神经网络 (RNN/LSTM) 试图通过嵌入等复杂的数学过程来学习的词。我们在这里可以看到,“感兴趣的词”是按照原文顺序遍历的。
此外,他们可以通过记住“上下文词”来记住单词之间的依赖关系。这里,上下文词是那些放在“感兴趣的词”附近的词。作为一个简单的演示,我们可以将上下文词视为下图中绿色下划线的词,同时学习每个“感兴趣的词” 。
图片来源:作者图解
通过这些技术,RNN/LSTM 可以理解大型文本语料库中的位置信息。
一切顺利。正确的?
那么,这里真正的问题是什么?
真正的问题是大型文本语料库中单词的顺序遍历。想象一下,我们有一个非常大的文本语料库,有 100 万个单词,依次遍历每个单词需要很长时间。有时,提供那么多计算时间来训练模型是不可行的。
为了克服这一挑战,引入了一种新的高级架构—— “变形金刚”。
Transformer 架构的一个重要特征是它可以通过并行处理所有单词来学习文本语料库。即使你有 10 个词或 100 万个词,它也不关心语料库的长度。
图片来源:作者图解
图片来源:作者图解
现在,有一个挑战与这种单词的并行处理相关。由于同时访问所有单词,因此相关信息将丢失。因此,模型将无法记住特定单词的“上下文” ,并且无法准确保留有关单词之间关系的信息。尽管模型的计算/训练时间大大减少了,但这个问题再次将我们引向了保留上下文依赖性的初始挑战。
现在,我们如何应对这种情况?
解决方案是“位置嵌入”。
最初,当这个概念被引入时,研究人员非常渴望推导出一种可以在变压器架构中保留位置信息的优化方法。
作为该试错实验的一部分尝试的第一种方法是“基于词索引的位置嵌入” 。
在这里,我们的想法是引入一个新的数学向量以及可以包含特定单词索引的单词向量。
图片来源:作者图解
假设这是单词在多维空间中的表示——
图片来源:作者图解
添加位置向量后,大小和方向可能会像这样改变每个单词的位置:
图片来源:作者图解
与此技术相关的一大缺点是,如果句子的长度非常大,那么位置向量的大小也会按比例增加。假设一个句子有 25 个单词,那么第一个单词将添加一个幅度为 0 的位置向量,最后一个单词将添加一个幅度为 24 的位置向量。这种大的差异可能会导致问题,当我们正在将这些值投射到更高的维度。
另一种试图降低位置向量幅度的技术是“基于句子长度分数的位置嵌入” 。
这里,每个单词相对于句子长度的分数值被计算为位置向量的大小。
分数值使用以下公式计算 -
值 = 1/N-1
例如,
让我们考虑一下这句话——
图片来源:作者图解
在这种技术中,无论句子的长度如何,位置向量的最大幅度都可以限制为 1。但是,这个系统有一个很大的漏洞。
如果我们比较 2 个不同长度的句子,那么在特定位置的词的嵌入值将不同。一个特定的词或位置应该在整个文本语料库中具有相同的嵌入值,以便于理解其上下文。如果不同句子中的同一个词具有不同的嵌入值,那么在多维空间中表示整个文本语料库的信息将成为一项非常复杂的任务。即使我们实现了如此复杂的空间,模型也很有可能在某个时候因信息失真过多而崩溃。因此,该技术在位置嵌入变压器的进一步进展中被淘汰。
最后,研究人员提出了一个“基于频率的位置嵌入”系统,该系统在全球范围内获得了一致好评,并最终被纳入 transformer 架构,并在著名的白皮书中提到—— “Attention is all you need” 。
根据这项技术,研究人员推荐了一种基于波频率的独特嵌入方式,使用以下公式 -
图片来源:作者图解
在哪里,
图片来源:作者图解
图片来源:作者图解
图片来源:作者图解
由于曲线的高度取决于 x 轴上描绘的单词的位置,因此曲线的高度可以用作单词位置的代理。
如果两个词的高度相似,那么我们可以认为它们在句子中的接近度非常高。
同样,如果 2 个词的高度截然不同,那么我们可以认为它们在句子中的接近度非常低。
根据我们的示例文本 - “Sachin is a great cricketer” ,
对于“Sachin”这个词,
在应用公式时,
图片来源:作者图解
对于 i = 0,
PE(0,0) = sin(0/10000^2(0)/3)
PE(0,0) = sin(0)
市盈率 (0,0) = 0
对于 i = 1,
市盈率(0,1) = 余弦(0/10000^2(1)/3)
PE(0,1) = 余弦(0)
PE(0,1) = 1
对于 i = 2,
PE(0,2) = sin(0/10000^2(2)/3)
PE(0,2) = sin(0)
PE(0,2) = 0
对于“伟大”二字,
在应用公式时,
图片来源:作者图解
对于 i = 0,
PE(3,0) = sin(3/10000^2(0)/3)
PE(3,0) = sin(3/1)
市盈率(3,0) = 0.05
对于 i = 1,
PE(3,1) = 余弦(3/10000^2(1)/3)
PE(3,1) = 余弦(3/436)
市盈率(3,1) = 0.99
对于 i = 2,
PE(3,2) = sin(3/10000^2(2)/3)
PE(3,2) = sin(3/1.4)
市盈率(3,2) = 0.03
图片来源:作者图解
在这里,最大值将被限制为 1(因为我们使用的是 sin/cos 函数)。因此,不存在高幅度位置向量的范围,这在早期技术中是个问题。
此外,彼此高度接近的词在较低频率下可能落在相似的高度,而在较高频率下它们的高度会有点不同。
如果单词彼此之间的接近度较低,那么即使在较低的频率下它们的高度也会非常不同,并且它们的高度差会随着频率的增加而增加。
例如,
考虑一下这句话—— “国王和王后走在路上。”
“王”与“道”二字相距甚远。
考虑到这两个词在应用波频公式后具有大致相似的高度。当我们达到更高的频率(例如 0)时,它们的高度将变得更加不同。
图片来源:作者图解
图片来源:作者图解
图片来源:作者图解
“国王”和“王后”这两个词离得很近。
这2个词会以较低的频率放在相似的高度(比如这里的2)。当我们达到更高的频率(例如0)时,它们的高度差会增加一点以进行区分。
图片来源:作者图解
但我们需要注意,如果单词的接近度较低,那么当我们向更高的频率发展时,它们的高度将大不相同。如果单词的接近度很高,那么当我们向更高的频率发展时,它们的高度只会有一点点不同。
通过这篇文章,我希望您对机器学习中位置嵌入背后的复杂数学计算有一个直观的了解。简而言之,我们讨论了“嵌入”概念背后的假设,它的一些不同类型以及实施位置嵌入以实现某些目标的必要性。
对于感兴趣领域是“自然语言处理”的技术爱好者,我认为这些内容将有助于简明扼要地理解一些复杂的计算。更详细的信息可以参考著名的研究论文“Attention is all you need”(我在参考部分添加了访问这篇研究论文的ul)。