Attention机制介绍

 

attention机制介绍(基于encoder-decoder框架)

直观对比

  1. 分心模型
    在这里插入图片描述

此处公式不是很严谨,每个f进行的操作应该是各不相同的。或者可以理解为重载函数,因为输入的参数个数本就不同。例如当decoder为RNN时,若y1=f(C),则y2=f(g(C,y1)),其中g(C,y1)是当前时刻的隐藏层的值。
image

  1. 注意力模型
    在这里插入图片描述
    在这里插入图片描述

关键点:每一个输出的语义编码C都是不同的,每个输入对不同C的影响不同(i.e. 每个输入对不同的C有不同的权重)。

改进的依据(为什么能够做到改进)

以机器翻译为例,翻译’Tom chase Jerry’时,如果是分心模型,decoder使用的是同一个C,那么同一个输入对所有输出产生的影响是相同的。但是,输入’Tom’对输出’汤姆’的影响应该远大于其他输入,输入’Jerry’对输出’杰瑞’的影响应该远大于其他输入。因此,对不同输出,C应当不同。

具体解释(soft attention)

如何获得每个语义编码C

在这里插入图片描述

C1、C2和C3的运算方式也有多种,一种可能的方式是根据源语句子单词的注意力分配概率分布(权重)进行计算。
image
其中f2是encoder对输入单词进行的某种变换,例如使用RNN模型的得到的结果就是隐藏层的值。g就是为获得不同的向量C而对参数进行的某种计算,一般方式就是求和。
 

图形表示每个C的计算过程

在这里插入图片描述

如何获得每个输入的权重

以encoder和decoder都为RNN的模型为例。
注意:要么在encoder的最后有个结束,要么在decoder的开头有个开始。一定有个过渡的过程。

  1. 分心模型
    在这里插入图片描述

  2. 加入注意力机制
    (1)我自己的理解(前一个输出和前一个隐藏层共同决定当前隐藏层,当前隐藏层再和attention value产生中间向量,最后得到当前输出结果)
    下图方式是使用Ht和hi计算得ati,原始方式是使用Ht-1和hi计算得ati。
    F是进行的某种运算(某种函数),得到的是该输入在当前时刻对应的注意力分数。

第一步(输出Y1)
在这里插入图片描述

后续是相同操作
在这里插入图片描述

(2)另一种理解(前一个输出、前一个隐藏层和attention value共同决定当前隐藏层,并由隐藏层直接获得当前输出结果)
在这里插入图片描述

如何计算相似度

1)点乘:最简单的方法,  s ( q , k ) = q T k s(q, k) = q^Tk s(q,k)=qTk

2)矩阵相乘:  s ( q , k ) = q T W k s(q, k) = q^TWk s(q,k)=

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值