sheng的学习笔记-AI-注意力模型(Attention Model)

 Ai目录:sheng的学习笔记-AI目录-优快云博客

先看下这两个文章:

序列模型:sheng的学习笔记-AI-序列模型(Sequence Models),RNN,GRU,LSTM_音乐识别是一对多吗-优快云博客

机器翻译 

sheng的学习笔记-AI-自然语言处理(NLP),机器翻译,情感分类,词嵌入-优快云博客

RNN的痛点

在机器翻译等RNN模型中,如果输入的时间步路径很长,会对更远的数据遗忘,举例子

像这样给定一个很长的法语句子,在你的神经网络中,这个绿色的编码器要做的就是读整个句子,然后记忆整个句子,再在感知机中传递。而对于这个紫色的神经网络,即解码网络(the decoder network)将生成英文翻译。

它对于短句子效果非常好,于是它会有一个相对高的Bleu分(Bleu score),但是对于长句子而言,比如说大于30或者40词的句子,它的表现就会变差。即便是GRU或者LSTM,也无法处理这么长的句子

注意力模型

用注意力模型,可以优化对长句子的理解,虽然这个模型源于机器翻译,但它也推广到了其他应用领域

大概流程

要将(法语)Jane visite l'Afrique en Septembre翻译成英语,

  1. 对于输出y1(jane),需要关注x输入的x1,x2,x3。。x5,用α<1,1>表示x1(jane)对y1的影响,α<1,2>表示x2(visite)对y1的影响,以此类推,所以在生成y1的时候,有α<1,1>,α<1,2>。。。α<1,5>来表示5个输入对y1的影响
  2. 生成y2(visits)的时候,也会考虑5个输入值,用α<2,1>表示x1(jane)对y2的影响,有α<2,1>,α<2,2>。。。α<2,5>表示5个输入对于y2的影响
  3. x<1>...x<5>作为输入,计算出α的过程,都是lstm或者GRU架构,然后输出a的部分都是编码器,以α为输入和s部分一起计算,得出y的部分,是解码器,这是一个编码/解码器模式的变种
  4. 对于生成y1,需要根据x知道a的矩阵作为输入,以及s<0>作为上一个节点的输入,在s<1>中做计算,生成y1

因为在生成每个y的时候,会考虑所有的输入,所以在长输入的时候也会表现的很好,并且对于每个输入x1,x2...xn会有α来表示这些输入对y的影响

总体框架 

  1. 根据每个x计算出a的值,a<t>代表时间步骤t的a的值,比如x<1>的a就是a<1>,通过rnn架构(lstm或者gru,走双向循环神经网络,这部分内容在sheng的学习笔记-AI-序列模型(Sequence Models),RNN,GRU,LSTM_音乐识别是一对多吗-优快云博客) 计算出a的矩阵
  2. 计算出α(注意,这是阿尔法,不是字母a),α<1,1>代表x1对于y1的影响
  3. 上下文c = ∑α * a 所有时间步的和,这里的意思是c<1>=∑α<1,t'> * a<t'> 其中t'的步骤和,并且注意力权重α将会满足非负的条件,所以这就是个0或正数,它们加起来等于1,意思是α<1,t'>的和为1
  4. 通过c1和s0计算y1,通过y1(t-1时间步的输出)和c2计算y2,这也是个标准的rnn模型

​另找一个架构图,辅助理解 

计算注意力权重

对 于如何计算注意力权重α,看下面的图

  1. 根据x算出a<t'>
  2. 根据整个模型的上一个状态s<t-1>,和a<t'>做一个小型的神经网络,计算出e<t,t'>,代表要生成t,需要花多少关注在时间t'上,比如要生成y1,需要花多少时间在x2上,那就是e<1,2>
  3. 将e在t'的值,除以所有时间步的e的和,就是a<t,t'> 在生成t需要花多少关注在时间t'上,注意公式中有exp(代表e的指数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值