注意力机制分类、原理、应用

1.简介

 注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。上述机制通常被称为注意力机制
 综上,注意力机制主要有两个方面:决定需要关注输入的哪部分;分配有限的信息处理资源给重要的部分
 在深度学习中,注意力可以借助重要性权重向量来实现:在预测或推断一个元素时,如图片中的像素点或句中的一个词,我们使用注意力向量来判断,它与其他元素有多强的关联性,然后对加权后的向量求和逼近最后的目标值(target)。

2.注意力机制的诞生

注意力机制最早于2014年在计算机视觉中提出。但是本文的讨论以机器翻译任务上的seq2seq模型为例。

Seq2Seq模型: 将一个输入序列(source)转化为另一个序列(target),两个序列都可以是不定长的。

场景:

  • 多语言机器翻译(文本或语音)
  • 问答对话对话生成系统
  • 将句子解析为语法树

结构:循环神经网络结构

  • 编码器:处理序列输入并压缩信息到一个固定长度的上下文向量中。上下文向量被当做是输入序列的语义概要。
  • 解码器:由上下文向量初始化,并每次产生一个转码输出。

源输入和目标输出的语义对齐问题由上下文向量学习和控制。上下文向量处理三方面的信息:

  1. 编码器的隐藏状态
  2. 解码器的隐藏状态
  3. 源输入和目标输出的对齐

在这里插入图片描述
缺点: 固定长度上下文向量无法记忆长句子。
解决方法: 提出注意力机制(Bahdanau 2015)。注意力机制考虑了上下文向量和所有序列输入的信息,构建了“连接”。每一个输出元素下的连接的权重都是自动学习的。上下文向量已经考虑了整体输入序列信息,不需要担心遗忘的问题。
在这里插入图片描述

3.不同类别的计算原理

计算步骤:

  1. 在所有输入信息上计算注意力分布
  2. 根据注意力分布来计算输入信息的加权平均

3.1.普通模式注意力

定义:

  • 和任务有关的查询向量 q \bm q q
  • 注意力变量 z ∈ [ 1 , N ] z\in [1,N] z[1,N]表示被选择信息的索引位置。即 z = i z=i z=i表示选择了第 i i i个输入信息
  • 在给定 q \bm q q X X X下,选择第 i i i个输入信息的概率 α i \alpha_i αi称为注意力分布(Attention Distribution)
  • s ( x i , q ) s(x_i, \bm q) s(xi,q)为注意力打分函数

计算注意力分布:
α i = p ( z = i ∣ X , q ) = s o f t m a x ( s ( x i , q ) ) = e x p ( s ( x i , q ) ) ∑ j = 1 N e x p ( x j , q ) \alpha_i=p(z=i|X,\bm q)\\=softmax(s(x_i,\bm q))\\=\frac{exp(s(x_i,\bm q))}{ \sum_{j=1}^{N}exp(x_j,\bm q)} αi=p(z=iX,q)=softmax(s(xi,q))=j=1Nexp(xj,q)exp(s(xi,q))

注意力打分函数:

  • 加性模型 s ( x i , q ) = v T t a n h ( W x i + U q ) s(x_i,\bm q)=v^Ttanh(Wx_i+U\bm q) s(xi,q)=vTtanh(Wxi+Uq)
  • 点积模型 s ( x i , q ) = x i T q s(x_i,\bm q)=x_i^T\bm q s(xi,q)=xiTq
  • 缩放点积模型 s ( x i , q ) = x i T q d s(x_i,\bm q)=\frac{x_i^T\bm q}{\sqrt d} s(xi,q)=d xiTq
  • 双线性模型 s ( x i , q ) = x i T W q s(x_i,\bm q)=x_i^TW\bm q s(xi,q)=xiTWq
    其中, W , U , v W,U,v W,U,v为可学习的网络参数, d d d为输入信息的维度。

理论上,加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高。但当输入信息的维度 d d d比较高,点积模型的值通常有比较大方差,从而导致softmax函数的梯度会比较小。因此,缩放点

  • 16
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值