NLP经典论文:最早的提出attention模型的文章 笔记

本文介绍了最早提出注意力模型的神经机器翻译论文。模型在RNN-encoder-decoder基础上改进,使用双向RNN作为encoder,decoder每步计算时根据当前状态重新计算上下文向量,实现注意力机制。这一机制允许解码器选择性关注源语句的特定部分,减轻了编码器固定长度向量编码的负担。此外,还详细描述了如何计算加权和得到上下文向量,并使用前馈神经网络作为匹配模型。
摘要由CSDN通过智能技术生成

论文

NLP论文笔记合集(持续更新)

原论文:《Neural Machine Translation by Jointly Learning to Align and Translate》

将 attention 发扬光大的论文:NLP经典论文:Attention、Self-Attention、Multi-Head Attention、Transformer 笔记

介绍

2014-09发表的文章,最早提出attention模型。

模型结构

在这里插入图片描述
在RNN-encoder-decoder的基础上进行改进。RNN-encoder-decoder结构参考:NLP经典论文:Sequence to Sequence、Encoder-Decoder 、GRU笔记

在encoder层,使用双向RNN,对向前隐藏状态序列 h → j \overrightarrow{h}_j h j 和向后隐藏状态序列 h ← j \overleftarrow{h}_j h j 进行拼接。

在decoder层,不再使用同一个上下文向量 c c c 作为计算隐藏状态 s i s_i si 的其中一个输入,而是每计算一个隐藏状态 s i s_i si ,先重新计算一个新的上下文向量 c i c_i ci。仅在decoder层使用 attention 机制,以此来计算 c i c_i ci

文章部分翻译

h t = f ( x t , h t − 1 ) ( 1 ) h_t = f (x_t, h_{t−1}) \quad (1) ht=f(xt,ht1)(1)
p ( y ) = ∏ t = 1 T p ( y t ∣ { y 1 , ⋅ ⋅ ⋅ , y t − 1 } , c ) , ( 2 ) p(\mathbf{y}) =\prod_{t=1}^T p(yt |\{y_1, · · · , y_{t−1}\} , c), \quad (2) p(y)=t=1Tp(yt{y1,,yt1},c),(2)
其中 y = y 1 , ⋅ ⋅ ⋅ , y T y y =y_1, · · · , y_{T_y} y=y1,,yTy

3 LEARNING TO ALIGN AND TRANSLATE

在本节中,我们提出了一种新的神经机器翻译体系结构。新的体系结构包括作为编码器的双向RNN(第3.2节)和在翻译解码期间模拟在源语句中进行搜索的解码器(第3.1节)。

3.1 DECODER: GENERAL DESCRIPTION

在新的模型架构中,我们将等式(2)中的每个条件概率定义为:
p ( y i ∣ y 1 , . . . , y i − 1 , x ) = g ( y i − 1 , s i , c i ) , ( 4 ) p(y_i|y_1, . . . , y_{i−1}, \mathbf{x}) = g(y_{i−1}, s_i, c_i), \quad (4) p(yiy1,...,yi1,x)=g(yi1,si,ci),(4)
其中, s i s_i si 是时间i的RNN隐藏状态,由以下公式计算:
s i = f ( s i − 1 , y i − 1 , c i ) . s_i = f(s_{i−1}, y_{i−1}, c_i). si=f(si1,yi1,ci).

(注:这些 c i , h i , s i c_i, h_i, s_i ci,hi,si 实际中应该都是向量。)

应该注意的是,与现有的编码器-解码器方法不同(参见等式(2)),这里概率取决于每个目标词 y i y_i yi 的不同上下文向量 c i c_i ci
在这里插入图片描述

上下文向量 c i c_i ci 取决于 annotation 序列 ( h 1 , ⋅ ⋅ ⋅ , h T x ) (h_1,···,h_{T_x)} (h1hTx),编码器将输入句子映射到的 annotation 序列上。每个annotation h i h_i hi 包含有关整个输入序列的信息,重点放在输入序列的第 i i i 个字周围的部分。我们将在下一节详细解释 annotation 是如何计算的。

然后,将上下文向量 c i c_i ci 计算为这些annotation h i h_i hi 的加权和:
c i = ∑ j = 1 T x α i j h j . ( 5 ) c_i=\sum_{j=1}^{T_x}\alpha_{ij}h_j. \quad (5) ci=j=1Txαijhj.(5)
每个annotation h i h_i hi 的权重 α i j \alpha_{ij} αij 由以下公式计算:
α i j = e x p ( e i j ) ∑ k = 1 T x e x p ( e i k ) \alpha_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})} αij=k=1Txexp(eik)exp(eij)
其中
e i j = a ( s i − 1 , h j ) e_{ij} = a(s_{i−1}, h_j ) eij=a(si1,hj)
是一个匹配模型,它对位置 j j j 附近的输入和位置 i i i 处的输出匹配情况进行评分。分数基于RNN隐藏状态 s i − 1 s_{i−1} si1(在产生 y i y_i yi 之前,等式(4))和输入句子的第 j j j 个 annotation h j h_j hj

我们将匹配模型 a 参数化为前馈神经网络,该神经网络与所提系统的所有其他组件联合训练。请注意,与传统的机器翻译不同,匹配分值不被视为潜在变量。相反,匹配模型直接计算软匹配值,这允许损失函数的梯度反向传播。该梯度可以用来联合训练匹配模型和整个翻译模型。

我们可以认为将所有 annotation 的加权总和作为计算 annotation 期望的方法,其中期望值是关于可能的匹配。设 α i j α_{ij} αij 为目标词 y i y_i yi 与源词 x j x_j xj 匹配或从源词 x j x_j xj 翻译的概率。然后,第 i i i 个上下文向量 c i c_i ci 是概率为 α i j α_{ij} αij 的所有 annotation 的 annotation 期望。

概率 α i j α_{ij} αij 或其相关评分 e i j e_{ij} eij 反映了 annotation h j h_j hj相对于先前隐藏状态 s i − 1 s_{i-1} si1 在决定下一状态 s i s_i si 和生成 y i y_i yi 中的重要程度。直观地说,这在解码器中实现了 attention 机制。译码器决定要注意的部分源语句。通过让解码器有一个 attention 机制,我们减轻了编码器必须将源语句中的所有信息编码为固定长度向量的负担。通过这种新方法,信息可以在 annotation 序列中传播,解码器可以相应地选择性地检索 annotation 序列。

3.2 ENCODER: BIDIRECTIONAL RNN FOR ANNOTATING SEQUENCES

等式(1)中描述的普通RNN按照从第一个符号 x 1 x_1 x1 到最后一个符号 x T x x_{T_x} xTx 的顺序读取输入序列 x \mathbf{x} x。然而,在提出的方案中,我们希望每个单词的 annotation 不仅要概括前面的单词,还要概括后面的单词。因此,我们建议使用双向RNN(BiRNN、Schuster和Paliwal,1997),最近已成功用于语音识别(参见Graves等人,2013)。

BiRNN由前向和后向RNN组成。向前RNN f → \overrightarrow{f} f 按顺序(从 x 1 x_1 x1 x T x x_{T_x} xTx)读取输入序列并计算向前隐藏状态序列 ( h → 1 , . . . , h → T x ) (\overrightarrow{h}_1,...,\overrightarrow{h}_{T_x}) (h 1,...,h Tx)。向后RNN f → \overrightarrow{f} f 逆顺序(从 x T x x_{T_x} xTx x 1 x_1 x1)读取输入序列并计算向后隐藏状态序列 ( h ← 1 , . . . , h ← T x ) (\overleftarrow{h}_1,...,\overleftarrow{h}_{T_x}) (h 1,...,h Tx)

我们通过拼接向前隐藏状态序列 h → j \overrightarrow{h}_j h j 和向后隐藏状态序列 h ← j \overleftarrow{h}_j h j 得到每一个词 x j x_j xj 的 annotation,例如, h j = [ h → j , h ← j ] h_j=[\overrightarrow{h}_j,\overleftarrow{h}_j] hj=[h j,h j]。通过这种方式,annotation h j h_j hj 包含前面所有词和后面所有词的所有信息。由于RNN倾向于更好地表示最近的输入,annotation h j h_j hj将侧重于 x j x_j xj 周围的单词。解码器和匹配模型随后使用该 annotation 序列来计算上下文向量(等式(5)-(6))。

提出的模型的图示见图1。

相关视频

有的需要科学上网才能看

相关的笔记

相关代码

pytorch

tensorflow

keras

pytorch API:

tensorflow API

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值