注意力机制基础
理论
首先回忆一下卷积
一、卷积基于的两个原则
1、平移不变性
一个分类器,比如说我想识别小丁,那这个分类器进行分类的时候,应该是对于位置信息不敏感的,也就是说无论小丁出现在图片上的哪个位置,我用训练好的分类器,参数不变都是可以识别出哪个是小丁的
2、局部性
就是我不需要看到全局的信息,只需要看到周围一部分信息就行了
二、从全连接层应用上面连个原则变成卷积层
先说结论:
从全连接层 hi,j=∑a,bvi,j,a,bxi+a,j+bh_{i,j}=\displaystyle\sum_{a,b}v_{i,j,a,b}x_{i+a,j+b}hi,j=a,b∑vi,j,a,bxi+a,j+b
变成卷积层 hi,j=∑a=−ΔΔ∑b=−ΔΔva,bxi+a,j+bh_{i,j}=\displaystyle\sum_{a=-\varDelta}^{\varDelta}\displaystyle\sum_{b=-\varDelta}^{\varDelta}v_{a,b}x_{i+a,j+b}hi,j=a=−Δ∑Δb=−Δ∑Δva,bxi+a,j+b
变换过程:
类比在简单的全连接层,输入的x是有k个特征的向量,,w是二维矩阵大小(k * i),输出h是有i个特征的向量
现在我们的输入是x一张图片,二维矩阵,那么参数w变成了四维,输出h也是一个二维矩阵,
k,l相当于像素本身的信息,i,j相当于像素的位置信息
hi,j=∑k,lwi,j,k,lxk,l=∑a,bvi,j,a,bxi+a,j+bh_{i,j} = \displaystyle\sum_{k,l}w_{i,j,k,l}x_{k,l}=\displaystyle\sum_{a,b}v_{i,j,a,b}x_{i+a,j+b}hi,j=k,l∑wi,j,k,lxk,l=a,b∑vi,j,a,bxi+a,j+b
这里v是w的重新表示 vi,j,a,b=wi,j,i+a,j+bv_{i,j,a,b} = w_{i,j,i+a,j+b}vi,j,a,b=wi,j,i+a,j+b
然后根据平移不变性,参数v应该不依赖于i,j的信息,所以vi,j,a,b=va,bv_{i,j,a,b} = v_{a,b}vi,j,a,b=va,b
即 hi,j=∑a,bva,bxi+a,j+bh_{i,j} = \displaystyle\sum_{a,b}v_{a,b}x_{i+a,j+b}hi,j=a,b∑va,bxi+a,j+b
再根据局部性,并不需要我们看那么远的信息,即限制了a,b的大小(上下或者左右动),当动的范围超过Δ\varDeltaΔ就不要了
即 hi,j=∑a=−ΔΔ∑b=−ΔΔva,bxi+a,j+bh_{i,j}=\displaystyle\sum_{a=-\varDelta}^{\varDelta}\displaystyle\sum_{b=-\varDelta}^{\varDelta}v_{a,b}x_{i+a,j+b}hi,j=a=−Δ∑Δb=−Δ∑Δva,bxi+a,j+b
总结:平移不变性解释了为什么我可以用同一个卷积核扫过整张图片
局部性解释了,为什么我要用那么大的一个卷积核
注意力机制
简单来说卷积关注的是一个像素点周围,也就是卷积核大小的信息,但这些信息未必是最应该被关心的,注意力机制则是显示的考虑随意线索(意思是有意关心的线索)
- 随意线索被称之为查询
- 每一个线索是一个值(value)和不随意线索(key)的对
- 通过注意力池化层有偏向性的选择某些输入

具体注意力机制是怎么发展成现在的样子呢?
一、非参的注意力池化层
-
给定数据(xi,yi),i=1,...,n(x_i,y_i),i=1,...,n(xi,yi),i=1,...,n
-
平均池化层是最简单的方案:f(x)=1n∑i=1nyif(x)=\frac{1}{n}\displaystyle\sum_{i=1}^ny_if(x)=n1i=1∑nyi
这里f(x)的xf(x)的xf(x)的x是query,即一个新数据进来的时候,关注的是所有信息的平均
-
更好的方案是60年代提出的Nadaraya-Waston
核回归 f(x)=∑i=1nK(x−xi)∑j=1nK(x−xj)yif(x)=\displaystyle\sum_{i=1}^n\frac{K(x-x_i)}{\sum_{j=1}^nK(x-x_j)}y_if(x)=i=1∑n∑j=1nK(x−xj)K(x−xi)yi
xxx:query
xjx_jxj:key
yiy_iyi:value
K是核函数,类似SVM,用来计算新数据x(query)和旧数据xix_ixi(key)之间的距离,相当于对所有给定数据算百分比权重 (像softmax),乘对应的value,思想上像KNN
如果K使用高斯核K(u)=12πexp(−u22)K(u)=\frac{1}{\sqrt{2\pi}}exp(-\frac{u^2}{2})K(u)=2π1exp(−2u2)
那么f(x)=∑i=1nexp(−12(x−xi)2)∑j=1nexp(−12(x−xj)2)yif(x) =\displaystyle\sum_{i=1}^n\frac{exp(-\frac{1}{2}(x-x_i)^2)}{\sum_{j=1}^nexp(-\frac{1}{2}(x-x_j)^2)}y_if(x)=i=1∑n∑j=1nexp(−21(x−xj)2)exp(−21(x−xi)2)yi
=∑i=1nsoftmax(−12(x−xi)2)yi=\displaystyle\sum_{i=1}^nsoftmax(-\frac{1}{2}(x-x_i)^2)y_i=i=1∑nsoftmax(−21(x−xi)2)yi
二、参数化注意力机制
在之前的基础上引入可学习的w
f(x)==∑i=1nsoftmax(−12((x−xi)w)2)yif(x)==\displaystyle\sum_{i=1}^nsoftmax(-\frac{1}{2}((x-x_i)w)^2)y_if(x)==i=1∑nsoftmax(−21((x−xi)w)2)yi
学习一个w来决定注意力,这里的w还是一个标量,以上我们讨论的都是q,k,v都是标量的情况
总结:f(x)=∑i=1nα(x,xi)yi=∑i=1nsoftmax(−12(x−xi)2)yif(x)=\displaystyle\sum_{i=1}^n\alpha(x,x_i)y_i=\displaystyle\sum_{i=1}^nsoftmax(-\frac{1}{2}(x-x_i)^2)y_if(x)=i=1∑nα(x,xi)yi=i=1∑nsoftmax(−21(x−xi)2)yi
α\alphaα:注意力分数 softmaxsoftmaxsoftmax之后:注意力权重

拓展到高维
以上我们讨论的都是q,k,v都是标量的情况,现在拓展到高维
q∈Rq,m对key−value(k1,v1),ki∈Rk,vi∈Rvq\in\mathbb{R}^q,m对key-value(k_1,v_1),k_i\in\mathbb{R}^k,v_i\in\mathbb{R}^vq∈Rq,m对key−value(k1,v1),ki∈Rk,vi∈Rv
注意力:f(q,(k1,v1),...,(km,vm))=∑i=1mα(q,ki)vi∈Rvf(q,(k_1,v_1),...,(k_m,v_m))=\displaystyle\sum_{i=1}^m\alpha(q,k_i)v_i\in\mathbb{R}^vf(q,(k1,v1),...,(km,vm))=i=1∑mα(q,ki)vi∈Rv
α(q,ki)=softmax(a(q,ki))=exp(a(q,ki))∑j=1nexp(a(q,kj))∈R\alpha(q,k_i)=softmax(a(q,k_i))=\frac{exp(a(q,k_i))}{\sum_{j=1}^nexp(a(q,k_j))}\in\mathbb{R}α(q,ki)=softmax(a(q,ki))=∑j=1nexp(a(q,kj))exp(a(q,ki))∈R
现在问题在于如何计算a(q,ki)a(q,k_i)a(q,ki),有两种方式
-
Additive Attention
-
可学习参数:Wk∈Rh×k,Wq∈Rh×q,v∈RhW_k\in\mathbb{R}^{h\times k},W_q\in\mathbb{R}^{h\times q},v\in\mathbb{R}^{h}Wk∈Rh×k,Wq∈Rh×q,v∈Rh
a(k,q)=vTtanh(Wkk+Wqq)a(k,q)=v^Ttanh(W_kk+W_qq)a(k,q)=vTtanh(Wkk+Wqq)
最后计算出aaa是一个数,相当于把key和query合并起来放到一个隐藏层大小为h,输出为1的单隐藏层MLP中
适用于q,k,v大小不同的情况 -
-
Scaled Dot-Product Attention(transformer用的)
-
如果query和key是同样的长度q,ki∈Rdq,k_i\in\mathbb{R}^dq,ki∈Rd,那么可以a(q,ki)=<q,ki>/da(q,k_i)=<q,k_i>/\sqrt{d}a(q,ki)=<q,ki>/d
-
向量化版本:n个query,m个key-value
-
Q∈Rn×d,K∈Rm×d,V∈Rm×vQ\in\mathbb{R}^{n\times d},K\in\mathbb{R}^{m\times d},V\in\mathbb{R}^{m\times v}Q∈Rn×d,K∈Rm×d,V∈Rm×v
-
注意力分数:a(Q,K)=QKT/d∈Rn×ma(Q,K)=QK^T/\sqrt{d}\in\mathbb{R}^{n\times m}a(Q,K)=QKT/d∈Rn×m
-
注意力池化:f=softmax(a(Q,K))V∈Rn×vf=softmax(a(Q,K))V\in\mathbb{R}^{n\times v}f=softmax(a(Q,K))V∈Rn×v
这时候你可能问Dot-Product Attention,没有可学习参数啊,在transformer里,Q,K,V是一个词向量通过三个矩阵Wq,Wk,WvW_q,W_k,W_vWq,Wk,Wv映射过来的
-
-
1771

被折叠的 条评论
为什么被折叠?



