Attention

Attention

1.1认知神经学中的注意力

注意力一般分为两种:一种是自上而下的有意识的注意力,称为聚焦式
(Focus)注意力。聚焦式注意力是指有预定目的、依赖任务的、主动有意识地
聚焦于某一对象的注意力。
另一种是自下而上的无意识的注意力,称为基于显著性(Saliency-Based)的注意力。
基于显著性的注意力是由外界刺激驱动的注意,不需要主动干预,也和任务无关。

一个和注意力有关的例子是鸡尾酒会效应。当一个人在吵闹的鸡尾酒会上
和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而
忽略其他人的声音(聚焦式注意力)。同时,如果未注意到的背景声中有重要的
词(比如他的名字),他会马上注意到(显著性注意力)。

1.2 神经网络中的Attention

当用神经网络来处理大量的输入信息时,也可以借鉴人脑的注意力机制,只
选择一些关键的信息输入进行处理,来提高神经网络的效率。

在目前的神经网 注意力机制也可称为注意力络模型中,我们可以将最大汇聚
、门控(Gating)机制来近似 模型。看作是自下而上的基于显著性的注意力机制。

除此之外,自上而下的会聚式注意力也是一种有效的信息选择方式。
以阅读理解任务为例,给定一篇很长的文章,然后就此文章的内容进行提问。
提出的问题只和段落中的一两个句子相关,其余部分都是无关的。

为了减小神经网络的计算负担,只需要把相关的片段挑选出来让后续的神经网络来处理,
而不需要把所有文章内容都输入给神经网络。

X = [ x 1 , ⋅ ⋅ ⋅ , x N ] X = [x_1, · · · , x_N ] X=[x1,,xN]表示N 个输入信息,为了节省计算资源,不需要将所
有的N 个输入信息都输入到神经网络进行计算,只需要从X 中选择一些和任务
相关的信息输入给神经网络。

注意力机制的计算可以分为两步:
一是在所有输入信息上计算注意力分布,
二是根据注意力分布来计算输入信息的加权平均。

注意力分布

给定一个和任务相关的查询向量 q,我们用注意力变量 z ∈ [ 1 , N ] z \in [1, N] z[1,N]

查询向量 q 可以是动态生成 来表示被选择信息的索引位置
,即z = i表示选择了第i个输入信息。为了方便计算,

采用一种“软性”的信息选择机制,首先计算在给定q 和X 下,选
择第i个输入信息的概率 α i α_i αi
α i = p ( z = i ∣ X , q ) = s o f t m a x ( s ( x i , q ) ) α_i = p(z = i|X,q)\\ =softmax(s(x_i,q)) αi=p(z=iX,q)=softmax(s(xi,q))

其中 α i α_i αi 称为注意力分布(Attention Distribution), s ( x i , q ) s(x_i , q) s(xi,q)为注意力打分函数,
可以使用以下几种方式来计算:
在这里插入图片描述
其中W, U, v为可学习的网络参数,d为输入信息的维度。

理论上,加性模型和点积模型的复杂度差不多,
但是点积模型在实现上可以更好地利用矩阵乘积,
从而计算效率更高。

但当输入信息的维度d比较高,点积模型的值通常有比较大方差,
从而导致softmax函数的梯度会比较小。
因此,缩放点积模型可以较好地 解决这个问题。
双线性模型可以看做是一种泛化的点积模型。

加权平均

注意力分布 α i α_i αi 可以解释为在给定任务相关的查询q时,第i个信息受
关注的程度。采用一种“软性”的信息选择机制对输入信息进行汇总,
a t t ( X , q ) = ∑ i = 1 N α i X i att(X,q) = \sum_{i= 1}^Nα_iX_i att(X,q)=i=1NαiXi

此称为软性注意力机制(Soft Attention Mechanism)。
下图给出软性注意力机制的示例。
在这里插入图片描述

1.3Attention变体

硬性注意力

上文提到的注意力是软性注意力,其选择的信息是所有输入信息在注
意力分布下的期望。

此外,还有一种注意力是只关注到某一个位置上的信息,叫
做硬性注意力(Hard Attention)。

硬性注意力有两种实现方式:

(1)一种是选取最高概率的输入信息,即
a t t ( X , q ) = x j , j = a r g m a x i = 1 N α i att(X,q) = x_j,\quad j = argmax_{i=1}^N \alpha_i att(X,q)=xj,j=argmaxi=1Nαi

(2)另一种硬性注意力可以通过在注意力分布式上随机采样的方式实现。

键值对注意力

更一般地,我们可以用键值对(key-value pair)格式来表示输入信息,其
中“键”用来计算注意力分布 α i α_i αi,“值”用来计算聚合信息。

( K , V ) = [ ( k 1 , v 1 ) , ⋅ ⋅ ⋅ , ( k N , v N ) ] (K, V ) = [(k_1, v_1), · · · ,(k_N , v_N )] (K,V)=[(k1,v1),,(kN,vN)]表示N 个输入信息,给定任务相关的
查询向量q 时,注意力函数为
a t t ( ( K , V ) , q ) = ∑ i = 1 N α i v i att((K,V),q) = \sum_{i=1}^N \alpha_iv_i att((K,V),q)=i=1Nαivi

当K = V 时,键值对模式就等价于普通的注意力机制。

Attention的应用

注意力机制主要是用来做信息筛选,从输入信息中选取相关的信息。

注意力机制可以分为两步:

一是计算注意力分布 α,

二是根据 α 来计算输入信息的加权平均。

2.1指针网络

指针网络(Pointer Network)[Vinyals et al., 2015]是一种序列到序列模型,

输入是长度为n的向量序列 X = x 1 , ⋅ ⋅ ⋅ , x n X = x_1, · · · , x_n X=x1,,xn

输出是下标序列 c 1 : m = c 1 , c 2 , ⋅ ⋅ ⋅ , c m , c i ∈ [ 1 , n ] , ∀ i c_{1:m} = c_1, c_2, · · · , c_m,c_i ∈ [1, n], ∀i c1:m=c1,c2,,cmci[1,n],i

在这里插入图片描述

2.2自注意力模型

如果要建立输入序列之间的长距离依赖关系,可以使用以下两种方法:

一种方法是增加网络的层数,通过一个深层网络来获取远距离的信息交互

另一种方法是使用全连接网络。

全连接网络是一种非常直接的建模远距离依赖的模型,
但是无法处理变长的输入序列。

不同的输入长度,其连接权重的大小也是不同的。

这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,
这就是自注意力模型(Self-Attention Model)

假设输入序列为 X = [ x 1 , ⋅ ⋅ ⋅ , x n ] ∈ R d 1 × n X = [x_1, · · · , x_n] \in R^{d_1 \times n} X=[x1,,xn]Rd1×n

输出序列为 H = [ h 1 , ⋅ ⋅ ⋅ , h N ] ∈ R d 2 × N H = [h_1, · · · , h_N ] \in R^{d_2 \times N} H=[h1,,hN]Rd2×N

首先我们可以通过线性变换得到三组向量序列:

Q = W Q X ∈ R d 3 × N K = W K X ∈ R d 3 × N V = W V X ∈ R d 2 × N Q = W_QX \in R^{d_3 \times N}\\ K = W_KX \in R^{d_3 \times N}\\ V = W_VX \in R^{d_2 \times N} Q=WQXRd3×NK=WKXRd3×NV=WVXRd2×N

其中Q, K, V 分别为查询向量序列,键向量序列和值向量序列, W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV
别为可学习的参数矩阵。

h i = a t t ( ( K , V ) , q i ) = ∑ j = 1 N α i j v j = ∑ j = 1 N s o f t m a x ( s ( k j , q i ) ) v j h_i = att((K,V),q_i) \\ = \sum_{j =1} ^ N \alpha_{ij}v_j\\ = \sum_{j =1 }^Nsoftmax(s(k_j,q_i))v_j hi=att((K,V),qi)=j=1Nαijvj=j=1Nsoftmax(s(kj,qi))vj

其中 i , j ∈ [ 1 , N ] i, j \in [1, N] i,j[1,N]为输出和输入向量序列的位置,连接权重 α i j α_{ij } αij由注意力机制动
态生成。

下图给出全连接模型和自注意力模型的对比,其中实线表示为可学习的权
重,虚线表示动态生成的权重。

由于自注意力模型的权重是动态生成的,因此可以处理变长的信息序列
在这里插入图片描述参考 :https://nndl.github.io/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值