Attention简单学习

博主刚刚入门深度学习领域,然后最先接触的是Transformer的相关学习
然后对其框架中self-attention中的Attention机制进行了简单学习

文章也是学习借鉴很多大佬的文章笔记,仅供大家参考,如果有疏忽遗漏欢迎大家在评论中指出

是什么Attention

引入Attention机制是为了解决传统encoder-decoder模型存在的信息丢失问题

encoder将输入的信息(句子)压缩为一个定长的向量,然后decoder将其解码转换为对应的信息(句子),然而,在encoder的压缩过程中,对于较长的信息(句子),会存在信息丢失的问题。

因此提出Attention机制,通过对不同的输入分配不同的权重,然后在decoder解码过程中选出对当前决策影响(权重)最大的特征值

优点

  • 参数少
    • 与CNN,RNN相比,复杂度和所需的参数较少
  • 速度快
    • 每一步的计算不依赖与上一步的计算结果,因此可以进行并行计算

原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iU8Xv1o3-1620981095706)(Attention简单了解/2019-11-13-3step.png)]

步骤

  • query和key进行相似度计算(对齐模型),得到权值
  • 将权值进行softmax归一化,得到可直接使用的权重
  • 将权重与value进行加权求和

相似度计算

  • 点乘
    • s ( q , k ) = q T k s(q,k)=q^Tk s(q,k)=qTk
  • 矩阵相乘
    • s ( q , k ) = q T k s(q,k)=q^Tk s(q,k)=qTk
  • cos相似度
    • s ( q , k ) = q T k ∣ ∣ q ∣ ∣ ∗ ∣ ∣ k ∣ ∣ s(q,k)=\frac{q^Tk}{||q||*||k||} s(q,k)=qkqTk
  • 串联,将q与k拼接起来
    • s ( q , k ) = W [ q ; k ] s(q,k)=W[q;k] s(q,k)=W[q;k]
  • 多层感知concat
    • s ( q , k ) = v a T t a n h ( W q + U k ) s(q,k)=v_a^Ttanh(W_q + U_k) s(q,k)=vaTtanh(Wq+Uk)

本质思想

从关注全部到关注重点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJycz2ro-1620981095707)(Attention简单了解/2019-11-13-only-attention.png)]

将source中的的元素理解成一个个<key,value>数据对,对于Target中的某一个query,计算query与key的相似度,得到每个key对应的value权重,然后对value进行加权求和,得到最终Attention数值。
A t t e n t i o n ( Q u e r y , S o u r c e ) = ∑ i = 1 S a l i g n ( Q u e r y , K e y ) ∗ V a l u e Attention(Query,Source)=\sum_{i=1}^{S}align(Query,Key)*Value Attention(Query,Source)=i=1Salign(Query,Key)Value

分类

计算区域

Soft Attention

所有key求权重概率,每个key都有对应一个权重。

缺点,计算量较大

Hard Attention

精确定位到一个key,即该key的权重概率为1,其余key的概率为0。

实现

  • 选取概率最高的输入信息
  • 在对齐模型的概率分布上进行随机采样

缺点,损失函数与Attention分布之间的函数不可导,无法在反向传播算法中训练

Local Attention

综合上述两种Attention,先用Hard Attention定位到某个点,然后以该点为中心得到一个窗口区域,在该区域使用Soft Attention

所用信息

对一段文本使用Attention所需要的信息,包括

  • 内部信息,该文本本身
  • 外部信息,除该文本的额外信息

General Attention

所有信息参与计算

通常用于构建两段文本关系的任务,如阅读理解中,问题与文章的联系

query包含外部信息,根据外部query对文本进行对齐

Local Attention

只使用内部信息,即key,query,value只与输入文本有关

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值