transformer之前的attention

前言

 写着写着Transformer又新开一篇介绍Attention机制,因为一个模型往往不是腾空出世的,它建立在许多基础之上。但精力有限,我们又不能从一点深究到很远,所以要选择自己觉得有必要花时间看的知识点。
 这篇文章就看看transformer中的self-attention与attention机制到底有什么牵连。主要总结两篇博客,但建议还是找国外的好一点。
【1】https://zhuanlan.zhihu.com/p/127774251 开头
【2】https://blog.csdn.net/u012526436/article/details/86293981


题外话:在目标检测中,学完bubbliiiing这位大神里面的已经够了。至于nlp还没找到像这位大神介绍得有全面,代码又容易实现的博主。如果有的话,希望您能在评论区分享一下。


简介

Attention机制最早是在计算机视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文 《Recurrent Models of Visual Attention》,他们在RNN模型上使用了attention机制来进行图像分类。随后,Dzmitry Bahdanau 等人在论文 《Neural Machine Translation by Jointly Learning to Align and Translate》中提出,在sequence-to-sequence模型中,只用encoder的最后一个隐层结果作为整个句子的编码或者作为decoder的输入是有缺陷的,尤其是RNN机制实际中存在梯度消失的问题,对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有的有效信息,所以随着所需翻译句子的长度的增加,这种结构的效果会显著下降;并且对于decoder的输出结果,不同位置上的输出结果会更加依赖于相对应位置的输入,像在机器翻译中,输出的第一个词一般会基于输入序列的前面部分词语,而输出的最后一个词一般会基于输入序列靠后面的词。

attention是一种能让模型对重要信息重点关注并充分学习吸收的技术,它不算是一个完整的模型,应当是一种技术,能够作用于任何序列模型中。

正文

 传统的机器翻译基本都是基于Seq2Seq模型来做的,该模型分为encoder层与decoder层,并均为RNN或RNN的变体构成,如下图所示
在这里插入图片描述

在encode阶段,第一个节点输入一个词,之后的节点输入的是下一个词与前一个节点的hidden state,最终encoder会输出一个context,这个context又作为decoder的输入,每经过一个decoder的节点就输出一个翻译后的词,并把decoder的hidden state作为下一层的输入。该模型对于短文本的翻译来说效果很好,但是其也存在一定的缺点,如果文本稍长一些,就很容易丢失文本的一些信息。

 Attention模型的encoder会把所有的节点的hidden state提供给decoder,而不仅仅只是encoder最后一个节点的hidden state。在decode阶段,模型会选择最适合当前节点的context作为输入。
 选择机制:
  (1)确定哪一个hidden state与当前节点关系最为密切
  (2)计算每一个hidden state的分数值(分数值代表相关性)
在这里插入图片描述

计算步骤:
把每一个encoder节点的hidden states的值与decoder当前节点的上一个节点的hidden state相乘,如下图,h1、h2、h3分别与当前节点的上一节点的hidden state进行相乘(如果是第一个decoder节点,需要随机初始化一个hidden state),最后会获得三个值,这三个值就是上文提到的hidden state的分数,注意,这个数值对于每一个encoder的节点来说是不一样的,把该分数值进行softmax计算,计算之后的值就是每一个encoder节点的hidden states对于当前节点的权重,把权重与原hidden states(encoder的3个)相乘并相加,得到的结果即是当前节点的hidden state。可以发现,Atttention的关键就是计算这个分值。

在这里插入图片描述

图中右上角应该是利用time step3产生的hidden state

 Attention模型decoder过程,这部分链接的作者讲得不清楚,看下面的公式科学一点


在这里插入图片描述
在这里插入图片描述
采用GRU结构,E是输出语言的词嵌入。
C i C_i Ci为context vector
S i S_i Si为decoder的下一个hidden state

总结

通过Attention机制的引入,打破了只能利用encoder最终单一向量结果的限制,从而使模型可以集中在所有对于下一个目标单词重要的输入信息上,使模型效果得到极大的改善。还有一个优点是,我们通过观察attention 权重矩阵的变化,可以更好地知道哪部分翻译对应哪部分源文字,有助于更好的理解模型工作机制,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值