NLP过去十年的直观直观解释
> Photo by Thyla Jane on Unsplash
注意就是您所需要的。 这就是2017年论文的名称,该论文将注意力作为一种独立的学习模型进行了介绍,这是我们如今在自然语言处理(NLP)中处于主导地位的世界的先驱。
变压器是NLP中的新前沿技术,它们似乎有些抽象-但是,当我们回顾NLP的过去十年发展时,它们开始变得有意义。
我们将介绍这些开发情况,并研究它们如何导致今天的变压器使用。 在您已经了解这些概念的情况下,本文不做任何假设-我们将在不过度掌握技术的情况下建立直观的理解。
我们将介绍:
Natural Language Neural Nets - Recurrence - Vanishing Gradients - Long-Short Term Memory - AttentionAttention is All You Need - Self-Attention - Multi-Head Attention - Positional Encoding - Transformers
自然语言神经网络
NLP在Mikolov等人[2]于2013年发表的word2vec论文中确实引起了轰动。 这引入了一种通过使用词向量来表示词之间的相似性和关系的方法。
这些初始单词向量包含50–100个值的维数。 这些向量的编码机制意味着将相似的单词组合在一起(星期一,星期二等),并且在向量空间上进行的计算可能会产生真正有洞察力的关系。
一个著名的例子是将向量用作King,减去向量Man,然后加上向量Woman,导致最近的数据点是Queen。
再发
在NLP的繁荣时期,递归神经网络(RNN)迅速成为大多数语言应用程序的最爱。 由于RNN的重复出现,它们非常适合语言。
> A recurrent neural network unit will consume the first time-step 'the', pass on its output state to the next time-step 'quick' — this recurrent process continues for a specified length of time-steps (the sequence length).
这种重复使神经网络可以考虑单词的顺序及其对前后单词的影响,从而可以更好地表达人类语言的细微差别。
尽管我们直到2013年才看到它们的流行用法,但在80年代[2],[3]的几篇论文中都讨论了RNN的概念和方法。
消失的渐变
RNN伴随着他们的问题,主要是消失的梯度问题。 这些网络的重现意味着它们本质上是非常深的网络,其中许多点包含传入数据和神经元权重之间的运算。
在计算网络误差并使用它来更新网络权重时,我们将逐步浏览网络以权重依次更新权重。
如果更新梯度很小,我们将乘以越来越小的数字-这意味着整个网络需要花费很长时间进行训练,或者根本无法工作。
另一方面,如果我们的体重重复值太高,我们将遭受爆炸梯度问题的困扰。 在这里,网络权重将在不学习任何有意义的表示的情况下振荡。
长期记忆
解决梯度消失问题的方法是引入长短期记忆(LSTM)单元。
> LSTM units introduced a more stable passage of information — the cell state, shown in black above
LSTM在时间状态链的下游引入了额外的信息流,并通过"门"控制了最少的转换。
> The cell state allowed information to pass from earlier states to later states with fewer transfor
通过允许保留序列中更早的信息并将其应用于序列中更晚的状态,可以学习长期依赖性。
注意
循环编码器/解码器模型非常快速地补充了其他隐藏状态和神经网络层-这些产生了注意力机制。
> Encoder-decoder LSTMs with attention.
添加编码器/解码器网络后,模型的输出层不仅可以接收RNN单元的最终状态,而且还可以从输入层的每个状态接收信息,从而创建了一种"注意力"机制。
> Attention between encoder and decoder neurons during an English-French translation task. Image sou
使用这种方法,我们发现编码器和解码器状态之间的相似性将导致更高的权重-产生与上面的法语翻译图像类似的结果。
通过这种编解码器实现,注意操作中使用了三个张量,即查询,键和值。 在每个时间步都将查询从解码器的隐藏状态中拉出-对此和键值张量之间的对齐进行评估以生成上下文向量。
然后将上下文向量传回解码器,在解码器中用于生成该时间步长的预测。 对于解码器空间中的每个时间步重复此过程。
注意力就是您所需要的
正如我们在导言中所说,这一切都始于2017年的"注意就是您所需要的一切" [5]。 您可能已经猜到了,本文介绍了这样一种想法,我们不需要在注意力的旁边使用这些复杂的卷积或递归神经网络-实际上,注意力就足够了。
自我注意力
自我注意是实现这一目标的关键因素。 这意味着在查询来自输出解码器之前,它现在是直接从输入值以及键和值生成的。
> Self-attention with two slightly different phrases. By changing tired (left) to wide (right) the a
由于Query,Key和Value都是由输入产生的,因此我们能够对同一输入序列的不同部分之间的对齐方式进行编码。 如果我们使用上面的图片,我们可以看到将最后一个单词从疲倦变为广泛,将注意力从动物转移到了街头。
这允许注意力机制对输入数据中所有单词之间的关系进行编码。
多头注意力
注意机制的下一个重大变化是增加了多个注意头-本质上是许多并行执行的自注意操作,并使用不同的权重进行初始化。
> Multi-head attention refers to the processing of multiple attention 'heads' in parallel. The outpu
没有多头关注,A。Vaswani等人。 实际上,变压器模型的性能要比其许多前辈[5]差。
并行机制允许模型表示相同序列的几个子空间。 然后,将这些不同级别的注意力由一个线性单元连接起来并进行处理。
位置编码
像RNN一样,Transformer模型的输入不是顺序的。 过去,正是这种顺序操作使我们能够考虑单词的位置和顺序。
为了维护单词的位置信息,在进入注意力机制之前,将位置编码添加到单词嵌入中。
注意是您所需要的全部论文中的方法是为嵌入维中的每个维产生不同的正弦函数。
还记得我们说过word2vec引入了在50到100维向量中表示一个单词的数量的概念吗? 在这里,在Vaswani等人。 在纸上,他们使用相同的想法,但代表一个单词的位置。
> Alternating positional encoding values. Using word position pos, embedding dimension i, and the nu
但是,这一次-而不是使用ML模型来计算矢量值,而是使用修正的正弦函数来计算值。
> Sine followed by cosine function. This alternating pattern of sine-cosine-sine continues for every
向量的每个索引都分配有一个交替的正弦-余弦-正弦函数(索引0为正弦,索引1为余弦)。 接下来,随着指标值从零到d(嵌入维数)的增加,正弦函数的频率降低。
> Sinusoidal functions of the first five embedding indices using a total embedding dimensionality of
我们可以从上方获取相同的不规则正弦图,并添加A. Vaswani等人使用的512嵌入维数。 论文并将其映射到一个更易于理解的热图上:
我们可以在较低的嵌入尺寸(左)中看到较高的频率,该频率随嵌入尺寸的增加而降低。 在第24维附近,频率降低得如此之快,以至于我们不再看到其余(交替的)正弦余弦波的任何变化。
然后将这些位置编码添加到单词嵌入中。
附带说明,这意味着单词嵌入维数和位置编码维数必须匹配。
Transformer
> The architecture of the A. Vaswani et al. Transformer. Adapted from the same paper.
注意力模型的这些变化所产生的结果架构产生了世界上第一个Transformer。
除了已经讨论过的单词嵌入,位置编码和多头自我注意操作之外,该模型还相当容易理解。
我们有加法和归一化层,我们在其中简单地将两个矩阵相加,然后对其进行归一化。 还有香草前馈神经网络。
最后,我们将张量输出到线性层中。 这是一个完全连接的神经网络,它映射到logits向量上-一个大向量,其中每个索引都映射到特定单词,并且其中包含的值是每个单词的概率。
然后softmax函数输出最高概率索引,该索引映射到我们的最高概率词。
这就是全部内容(我承认,很多)。
NLP当前的最新技术仍然使用变压器,尽管进行了一些怪异而奇妙的修改和添加。 但是,即使对于GPT-3和BERT等型号,其核心概念仍然相同。
我相信NLP的未来将与过去一样千差万别,并且在未来几年中,我们将看到一些真正令人着迷且坦率地改变世界的进步-这是一个非常令人兴奋的空间。
希望本文能帮助您更好地了解变压器模型的基础知识以及它们为何如此强大。 如果您有任何疑问,想法或建议,请通过Twitter或以下评论与我们联系。
谢谢阅读!
参考文献
[2] D. Rumelhart等人,"通过错误传播学习内部表示"(1985年),ICS 8504
[3] M. Jordan,《串行订单:一种并行分布式处理方法》(1986),ICS 8604
[4] D. Bahdanau等人,《通过共同学习对齐和翻译的神经机器翻译》(2015年),ICLR
[5] A. Vaswani等人,《注意就是你所需要的》(2017年),NeurIPS
*除非另有说明,否则所有图片均由作者提供
(本文翻译自Tivadar Danka的文章《Evolution of Natural Language Processing》,参考:https://towardsdatascience.com/evolution-of-natural-language-processing-8e4532211cfe) |