神经网络注意力机制

  1. 概述
    当神经网络来处理大量的输入信息时,也可以借助人脑的注意力机制,只选择一些关键的信息输入进行处理,用来提高神经网络的效率。在目前的神经网络模型中,可以将max pooling和gating机制近似地看作是自下而上的基于显著性的注意力机制。此外,自上而下的聚焦式注意力也是一种有效的信息选择方法。例如:给定一篇很长的文章,然后就此文章的内容进行提问,提出的问题只和文章中某个段落中的一两个句子相关,其余都无关的。为了减小神经网络的计算代价,只需要把相关的片段挑选出来让后续的神经网络来处理,而不需要把所有文章内容都输入到神经网络中。

  2. 为什么要引入Attention机制?
    计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
    优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。可以借助人脑处理信息过载的方式,例如Attention机制可以提高神经网络处理信息的能力。

  3. Attention机制基础知识
    X X X = [ x1 , ⋯ , xN ] 表示 N N N 组输入信息,其中每个向量 xi , i ∈ [1, N N N ]都表示一组输入信息。为了节省计算资源,不需要将所有的信息都输入到神经网络中,只需要从X中选择一些和任务相关的信息。注意力机制的计算可以分为两步:
    (1)在所有输入信息上计算注意力分布;
    (2)根据注意力分布来计算输入信息的加权平均

  • 3.1 注意力分布
    • 为了从 N N N 个输入向量 [x1 , ⋯ , xN ] 中选择出与某个特定任务相关的信息,需要引入一个和任务相关的表示,称为查询向量 q,并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。

    • 给定一个和任务相关的查询向量q,用注意力变量 z z z ∈ [1, N N N] 来表示被选择信息的索引位置,即 z = i z=i z=i表示选择了第 i i i 个输入向量。为了方便计算,下面首先介绍Soft Attention注意力机制。首先计算在给定 q q q X X X 下,选择第i个输入向量的概率 α i \alpha_{i} αi

      α 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 ( s ( x j , q ) ) \alpha_{i}=p(z=i|X,q)=softmax(s(x_{i},q))=\frac{exp(s(x_{i},q))}{\sum_{j=1}^{N}exp(s(x_{j},q))} αi=p(z=iX,q)=softmax(s(xi,q))=j=1Nexp(s(xj,q))exp(s(xi,q))
      其中 α i \alpha_{i} αi称为注意力分布, S ( x i , q ) S\left(\mathbf{x}_{i}, \mathbf{q}\right) S(xi,q)是注意力打分函数,可以使用下面的几种方法来计算:

    • 加性模型 s ( x i , q ) = v T tanh ⁡ ( W x i + U q ) s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{v}^{\mathrm{T}} \tanh \left(W \mathbf{x}_{i}+U \mathbf{q}\right) s(xi,q)=vTtanh(Wxi+Uq)

    • 点积模型 s ( x i , q ) = x i T q s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q} s(xi,q)=xiTq

    • 缩放点积模型 s ( x i , q ) = x i T q d s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\frac{\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}}{\sqrt{d}} s(xi,q)=d xiTq

    • 双线性模型 s ( x i , q ) = x i T W q s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} W \mathbf{q} s(xi,q)=xiTWq

  • 上式中 W W W U U U v v v是可学习的参数, d d d 是输入向量的维度。理论上,加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高。但当输入向量的维度d比较高,点积模型的值通常有较大的方差,从而导致softmax函数的梯度比较小。因此,缩放点积模型可以很好地解决这个问题。双线性模型可以看做是一种泛化的点积模型。
  • 加权平均
    注意力分布 α i \alpha_{i} αi可以解释为在给定任务相关的查询q时,第i个输入向量受注意的程度。下面采用一种软性的信息选择机制对输入信息进行汇总。
    a t t ( X , q ) = ∑ i = 1 N α i x i = E z ∼ p ( z ∣ X , q ) [ x z ] att(X, q)=\sum_{i=1}^{N}\alpha_{i}x_{i}=E_{z\sim p(z|X,q)}[x_{z}] att(X,q)=i=1Nαixi=Ezp(zX,q)[xz]
    上式称为软注意力机制(Soft Attention Mechanism)。下图给出了软注意力机制的示例图:
    在这里插入图片描述
    上图键值对模式就是普通模式的推广。
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值