Attention

Attention的常见做法:
第一步:S=F(Q,K)
第二步:A=Softmax(S)
第三步:multiply(A,V)
第一步是个相似度的计算,常见的相似度计算有点乘,拼接,感知机。第二步是搞成概率的样子,就是相加为1,第三步是一个点乘就是让每个部分乘上他的权重然后得到最后Attention输出的值。
TensorFlow中两个实现:
tf.nn.softmax(S)
tf.multiply(A, V),#表示两个同维矩阵对应位置处相乘,乘后维度不变

下面说下原理:

1.为什么需要attention?

语音识别或机器翻译领域传统Encoder-Decoder方案遇到性能瓶颈。传统Encoder直接将所有输入(x1, …,x4)编码至固定向量c,再通过decoder进行解码,该思路缺陷显而易见,每个输入没有显示的权值表示,导致每个输入的贡献相当。

图1. 传统Encoder-Decoder框架
0?wx_fmt=png
基于此缺陷,设计出带attention的Encoder-Decoder框架,如图2。这里面用C1,C2和C3代替了原始的C,Ci是输入的不同组合构成的,也就是说,Decoder不同时刻关注输入的组合是不一样的。例如解码Y1时只需要关注x1和x2,x3和x4的权重可以为0。

图2: 引入attention的Encoder-Decoder框架
在这里插入图片描述
2. 什么是attention?

2.1 常规思路理解

图3. 基于attention计算图示

在这里插入图片描述
target预测的计算如图3所示,公式如下:
在这里插入图片描述
其中si表示Decoder中时刻i的隐状态,计算公式如下 :
在这里插入图片描述
其中ci采用对Encoder层的所有隐状态h加权累和,attention思想在此体现。
在这里插入图片描述

其中aij是eij的softmax输出,eij是一个对齐模型,表征decoder的i状态和encoder的j状态的相关性,计算公式如下

在这里插入图片描述

对齐模型eij的计算方式有多种,不同的计算方式表示不同的attention模型。

进一步,将对齐模型表示成score(ht,hs),decoder层的隐层向量hs和encoder层的隐层向量hs的对齐模型,常见计算方式有点乘dot,权重网络映射general,以及concat映射。

在这里插入图片描述

2.2 K-V-Q思路理解

图4. key-value-query图示

在这里插入图片描述
将encoder模块的source设计成<key,value>的键值对形式,对于语音识别任务,key和value是相同的,decoder模块的query和key进行逐个计算相似度,生成权重系数,再乘以value就获得最终的attention value,更细致的步骤如图5所示。

阶段一,F(Q,K)计算Query和Key的相似度s;阶段二,进行softmax归一化生成权重attention系数a;阶段三,attention系数同value相乘累加获得最终的Attention value。

图5. Attention机制的另一种理解

0?wx_fmt=png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值