Attention是一种机制,旨在提高编码器-解码器RNN在机器翻译上的性能。
Encoder-Decoder Model
该模型由两个子模型组成:编码器和解码器。
编码器:编码器负责逐步执行输入时间步长,并将整个序列编码为称为上下文向量的固定长度向量。
解码器:解码器负责在从上下文向量中读取时逐步完成输出时间步长。
我们提出了一种新颖的神经网络体系结构,该体系结构学习将可变长度序列编码为固定长度向量表示形式,并将给定的固定长度向量表示形式解码回可变长度序列。
该模型的关键在于,包括编码器和解码器在内的整个模型都是端到端的训练,而不是分别训练元素。
Attention模型
Dzmitry Bahdanau等人提出了Attention。在他们的论文“通过共同学习对齐和翻译来进行神经机器翻译”中,这是对他们以前在编码器-解码器模型上的工作的自然延伸。
提出了一种解决方案,用于解决将输入序列编码为一个固定长度矢量的编码器-解码器模型的局限性,从该固定长度矢量可以解码每个输出时间步长。在解码长序列时,这个问题被认为是更大的问题。
这种编码器/解码器方法的潜在问题在于,神经网络需要能够将源语句的所有必要信息压缩为固定长度的向量。这可能使神经网络难以应付长句子,尤其是那些比训练语料库中的句子更长的句子。
建议将Attention作为一种对齐和平移的方法。
对齐是机器翻译中的问题,它可以识别输入序列的哪些部分与输出中的每个单词相关,而翻译则是使用相关信息选择适当输出的过程。
…我们引入了编码器-解码器模型的扩展,该模型学习联合对齐和翻译。提议的模型每次在翻译中生成单词时,都会(软)搜索源句子中最相关信息集中的一组位置。然后,模型基于与这些源位置和所有先前生成的目标词关联的上下文向量来预测目标词。
Attention模型不是将输入序列编码为单个固定的上下文向量,而是开发了一个上下文向量,该上下文向量专门针对每个输出时间步进行了过滤。
与Encoder-Decoder论文一样,该技术也应用于机器翻译问题,并使用GRU单元而不是LSTM存储单元。 在这种情况下,使用双向输入,其中输入序列既向前又向后提供,然后在传递给解码器之前将它们串联起来。
我们不会再重复计算注意力的方程式,而是会看一个工作示例。
attention模型的类型:
- 全局和本地attention(local-m,local-p)
- Hard and Soft Attention
- Self-attention
全局和本地attention(local-m,local-p)
从图中可以看出,global attention 使用每个编码器步骤和(h )解码器上一步来计算(a )对齐权重或attention权重。 然后,计算(a )上下文向量,方法是取全局对齐权重和每个编码器步长的乘积。 然后将其馈送到RNN单元以查找解码器输出。
本地注意力模型
它与全局attention模型的不同之处在于,在局部attention模型中,仅使用源(编码器)中的几个位置来计算对齐权重(a )。下面是本地注意力模型的示意图。
从图片可以看出,首先找到单对齐位置(p ),然后使用来自源(编码器)层的单词窗口以及(h )来计算对齐权重和上下文向量。
局部attention-它有两种类型:单调对齐和预测对齐。在单调对齐中,我们仅将位置(p )设置为“ t”,而在预测对齐中,位置(p )而不是仅将其假设为“ t”,它是由预测模型预测的。
比较:
全局attention使用ALL编码器隐藏状态为每个解码器步骤定义基于attention的上下文向量。 但是,正如您可能已经猜到的那样,这可能会变得昂贵。
另一方面,本地attention只涉及较小窗口内的一些隐藏状态。 该窗口以第“ p”个编码器隐藏状态为中心,并包含出现在“ p”两侧的“ D”隐藏状态。 因此,这使得该窗口的长度,即所考虑的隐藏状态数为2D + 1。
单调对齐是指将p设置为与解码器位置相同(第5个输出将具有p = 5,并且如果D = 2,则attention将仅集中在3、4、5、6、7隐藏状态)。 预测对齐是指将“ p”定义为解码器隐藏状态ht的函数(纸张使用S·sigmoid(vp⊤tanh(Wpht))),并且该函数的参数由模型共同学习。
Hard and Soft Attention
soft attention几乎与全局attention模型相同。
hard注意力模型和局部注意力模型之间的差异在于,局部模型在每个点上几乎都是差分的,而hard注意力不是。 局部注意是硬性注意和软性注意的混合。
soaft注意力:学习对齐权重并将其放置在源图像中的所有色块上;
优点:模型平滑且易于区分。
缺点:当源输入很大时,价格昂贵。
hard注意:一次只选择图像的一个补丁。
优点:推理时计算较少。
缺点:该模型不可微,需要更复杂的技术,例如减少方差或训练强化学习。
self attention 模型
self attention,也称为intra attention,是一种与单个序列的不同位置相关联的注意力机制,目的是计算同一序列的表示形式。 它已显示在机器阅读,抽象摘要或图像描述生成中非常有用。
长期的短期记忆网络论文使用自我关注来进行机器读取。 在下面的示例中,自我关注机制使我们能够了解当前单词与句子前半部分之间的相关性。
transformer 网络
transformer 网络完全建立在self attention 模型机制上,无需使用循环网络架构。transformer使用多头自注意模型制造。
编码器层包括两个子层,一个子层是多头attention,另一个子层是前馈神经网络。解码器由三个子层的两个多头注意网络组成,然后被馈送到前馈网络。解码注意网络从编码器输出获取输入,并从解码器的上一层输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:attention如何在编解码器循环神经网络中起作用 - Python技术站