Transformer前世今生(一)

论文介绍了如何通过在循环神经网络中引入注意力机制,改进长序列翻译的准确性,特别是Transformer模型的前身。作者详细解释了RNNEncoder-Decoder结构,以及如何通过自注意力机制处理上下文信息,使模型能动态调整对输入的依赖,提高翻译质量。
摘要由CSDN通过智能技术生成

原文:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

链接:https://arxiv.org/pdf/1409.0473.pdf

这篇论文为循环神经网络(RNN)引入了注意力机制,以提升长距离序列建模的能力,使得RNN可以更准确地翻译更长的句子,也是原始Transformer模型的开发动机。

RNN Encoder-Decoder架构

encoder读取输入序列,decoder输出。假设输入为\mathbf{x}=(x_1,...,x_{T_x}),输出为向量\mathbf{c}。最常用的RNN表述如下:

h_t=f(x_t, h_{t-1})

\mathbf{c} = q({h_1,...,h_{T_x}})

其中h_t\in \mathbb{R}^n是t时刻输入的隐藏状态,本文中也叫做annotation,\mathbf{c}是从隐藏状态生成的向量,表示整个输入的上下文信息。f和q是非线性函数。

解码器不是输出预测的翻译结果,而是预测的输出句子的概率。输出句子\mathbf{y}=(y_1,..., y_T)

每个y_t都由之前预测的概率\{ y_1, ..., y_{t-1}\}以及全篇的上下文向量\mathbf{c}决定,即:

p(\mathbf{y})=\prod_{t=1}^Tp(y_t|\{y_1,...,y_{t-1}\},c)

在RNN的形式下,概率函数用如下方式计算:

p(y_t|\{y_1,...,y_{t-1}\},c)=g(y_{t},s_t,c)s_t表示t时刻的隐藏状态,但是不同于h_t

该文章定义新的架构:

将条件概率等式改为:

p(y_i|y_1,...,y_{i-1},\mathbf{x})=g(y_{i},s_i,c_i)

其中

s_i=f(s_{i-1},y_{i-1},c_i),表示i处状态和前一刻状态s_{i-1},前一刻预测词y_{i-1}以及该处上下文c_i有关。s是与输出状态有关的隐藏状态,而h只是输入的隐藏状态,与输出是什么没有关系。

此处最大的和之前的encoder-decoder架构不同之处在于c_i是对于每一个i不同的。这是容易理解的,上下文的描述子\mathbf{c}应该是不同时刻发生变化的,也就是说整个上下文不能每个位置都用同一个向量描述,因此改为加权的所有时刻的上下文,即c_ic_i利用隐藏状态h_j来计算,j离i时刻越近,应该越相关。

c_i的计算作者使用了如下公式c_i = \sum_{j=1}^{T_x}\alpha_{ij}h_j

其中权重\alpha_{ij}和输出状态s_{i-1}与输入状态h_j相关度有关,即c_ih_j的权重是h_js_{i-1}的相关度。

公式如下

\alpha_{ij}=\frac{\text{exp}(e_{ij})}{\sum_{k=1}^{T_x}\text{exp}(e_{ik})}

其中

e_{ij}=a(s_{i-1},h_j)

a(*,*)表示相似度指标。但是这个指标是参数化的,随着网络优化,a的参数随之改变。

整体来看,\mathbf{x}是输入即原文,h_t是输入相关的隐藏状态,也就是原文每个词的状态,和t之前时刻输入均有关;s_i是输出前的状态,直接影响输出y_ic_i是当前的上下文,与上文有关也与下文有关,是输入的隐藏状态h_j的线性组合,权重是输入隐藏状态h_j和输出前隐藏状态s_{i-1}的相关度。在i处的上下文c_i,就是即将翻译出第i个词,原文中哪些词可能影响该处词的意义,所以可以看成原文中所有词意义的数学期望。通俗理解,就是在翻译过程中,我翻译的前面的单词的意思是s_{i-1},然后再参考原文中所有词h_j,找到相关的词,假设相关度是\alpha_{ij},然后我就可以将原文中相关上下文表达的内容放在一起,放到c_i中,给下一个要翻译的词提供参考。将\alpha_{ij}视为在已知前一状态s_{i-1}时,对h_j的注意力,这让无用的信息被抑制了。

待学习参数有网络参数,包括f的参数,g的参数,也包括a的参数。对a的学习,让网络自己学到(至少是我们希望网络自己学到)翻译出的单词的意思和原文的单词的意思的相关度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值