注意力机制——Attention 原理和使用场景

背景

  • seq2seq learning in machine translation:
    both input and output are sequences with different lengths
  • 一般的机器翻译模型可以用由encoder 和 decoder组成的RNN,encoder将原语言的词编码成向量,decoder把encoder编好的context向量解码成目标语言。随着decoder长度增加,信息衰减的严重程度也会增加。
  • 在decoding过程中虽然可以把context作为decoder的每个hidden state,以此来避免信息衰减,但这样会导致翻译每个字时考虑的信息是一样的,因为直觉上来说,在翻译每个字时我们所关注的地方应该是不一样的。attention机制就是为了解决这个问题而诞生的

encoder-decoder结构

在这里插入图片描述

Attention机制

  • Attention就是一个软查询过程。我们假设decoder中在第t个step下,hidden state是 h 1 h_1 h1让他与每一个encoder的hidden state h ~ \tilde h h~ 做inner product计算余弦相似度,即attention权重 α \alpha α。得到attention权重,剩下的事情就是加权累加 h ˉ t = ∑ i T α i h ~ i \bar{h}_{t} = \sum_{i}^{T} \alpha_i\tilde h_i hˉt=iTαih~i
    在这里插入图片描述

神经机器翻译过程图解

Encoder

encoder是一个RNN,输入为原语言待翻译的序列,每个RNN time step 根据上一个timestep的hidden state 和当前输入的input 计算出当前对应的output 和 hidden state
在这里插入图片描述

基于attention的seq2seq模型在encoder传递给decoder的数据上与传统的seq2seq模型只传递最后一个hidden state相比,会把encoder每个time step产生的hidden state都传递给decoder供后续attention运算使用。
在这里插入图片描述

Decoder

下面来看解码过程,decoder的输入为目标序列的word embedding,但是不同点在于第一个time step会输入一个特殊符号,decoder的RNN 根据初始化的hidden state和这个特殊符号input计算出hidden state,然后再用decoder的hidden state和encoder的hidden state做attention运算,以此决定每一步应该最大概率输出哪个字。

之后的每一个time step decoder会把上一步输出的目标语言的word embedding作为输入。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值