Attention 一:Seq2seq Models With Attention

1 篇文章 0 订阅
1 篇文章 0 订阅

Seq2seq Models With Attention

Seq2seq

在机器翻译、文本摘要和图像标注等任务中都取得了很多成功。Google翻译在2016年底开始使用这种模型。该模型主要在下列两篇论文中介绍:

  1. Sutskever et al., 2014,NIPS,Sequence to Sequence Learning with Neural Networks
  2. Cho et al., 2014,EMNLP,Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

一个Sequence-toSequence模型就是输入一个序列,输出一个序列的模型,这个序列的元素可以是单词、字母、图像的特征等,如下图所示。
在这里插入图片描述
一般该模型会由编码器(Encoder)和解码器(Decoder)组成,编码器接受输入序列后生成一个语境(Context),将这个语境传给解码器后,解码器将生成输出序列,如下图所示。
在这里插入图片描述
在机器翻译中,语境(Context)一般是一个向量(一组浮点数)。编码器(Encoder)和解码器(Decoder)都会是一个RNN网络。下图展示了大小为4的语境向量,在实际中,大小一般比较大,如256,512或者1024。颜色的深浅表示数值的大小,大的颜色浅,小的颜色深。
在这里插入图片描述
同样,输入也应该转换成向量,一般一个序列中的元素对应一组向量,如下图所示。通常,将单词转换为向量的算法,称为“word embedding”算法,通过这个算法单词被转换到向量空间,可以代表更多的逻辑上的意义,例如:女王=王-男+女。
在这里插入图片描述
下图展示了第一幅图的具体流程。每接收一个输入向量,语境就进入下一个状态;当三个输入都接收完毕,Encoder得到了HS#3这一个语境。解码器拥有一个隐藏状态(hidden state),会(1) 将上一次的输出向量(最开始则是结束标志encoder出的向量)和当前的隐藏状态作为输入,得到(transform)到另外一个隐藏状态(感觉取名来自状态转移机); (2)新的隐藏状态结合encoder得到的语境,通过一些卷积层得到新的输出向量;(3)新的输出向量+新的隐藏状态重复(1)。
在这里插入图片描述

加入Attention

语境向量的表达能力有限,难以处理长的序列。下面两篇论文提出的attention解决了这一问题:

  1. Bahdanau et al., 2015,ICLR,Neural Machine Translation by Jointly Learning to Align and Translate
  2. Luong et al., 2015,EMNLP,Effective Approaches to Attention-based Neural Machine Translation

如下图所示,编码器会将每个输入得到的语境向量搜集起来;加入Attention模块的解码器:

  1. 查看收到的所有语境向量(每个语境向量会和输入序列中的一个元素相关)
  2. 利用当前隐藏状态给每个语境向量打分,选择分值最大的语境向量(或者其他方式得到一个语境向量:相乘求和)

上述的三个步骤会在每次输出都会重复。下图为展开的加入Attention的网络流程图:
在这里插入图片描述

解码器:

  1. 解码器接受前一个语境向量(初始)和由通过Embedding算法生成的向量,输出当前语境向量
  2. Attention模块根据当前语境向量给所有编码器生成的语境向量打分;并将打分和编码器的语境向量相乘后得到一个新的加入attention后的编码语境向量
  3. 该新生成的编码语境向量与解码器当前语境向量拼接后,可能经过一些卷积层,得到输出序列的元素向量
  4. 解码器接受上一个语境向量和上一步输出序列的元素向量,输出当前语境向量,重复步骤2,3,4直到。

参考资料:
https://jalammar.github.io/illustrated-transformer/
https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值