深入理解深度学习——注意力机制(Attention Mechanism):注意力汇聚与Nadaraya-Watson 核回归

分类目录:《深入理解深度学习》总目录

相关文章:
·注意力机制(AttentionMechanism):基础知识
·注意力机制(AttentionMechanism):注意力汇聚与Nadaraya-Watson核回归
·注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction)
·注意力机制(AttentionMechanism):Bahdanau注意力
·注意力机制(AttentionMechanism):多头注意力(MultiheadAttention)
·注意力机制(AttentionMechanism):自注意力(Self-attention)
·注意力机制(AttentionMechanism):位置编码(PositionalEncoding)


深入理解深度学习——注意力机制(Attention Mechanism):基础知识》介绍了框架下的注意力机制的主要成分: 查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚,注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出。 本文将介绍注意力汇聚的更多细节, 以便从宏观上了解注意力机制在实践中的运作方式。 具体来说,1964年提出的Nadaraya-Watson核回归模型是一个简单但完整的例子,可以用于演示具有注意力机制的机器学习。

简单起见,考虑下面这个回归问题: 给定的成对的数据集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x n , y n ) } \{(x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n)\} {(x1,y1),(x2,y2),,(xn,yn)}, 如何学习 f f f来预测任意新输入 s s s的输出 y ^ = f ( x ) \hat{y}=f(x) y^=f(x)?根据下面的非线性函数生成一个人工数据集, 其中加入的噪声项为 ϵ \epsilon ϵ
y i = 2 sin ⁡ ( x i ) + x i 0.8 + ϵ y_i = 2\sin(x_i) + x_i^{0.8} + \epsilon yi=2sin(xi)+xi0.8+ϵ

平均汇聚

先使用最简单的估计器来解决回归问题。 基于平均汇聚来计算所有训练样本输出值的平均值:
f ( x ) = 1 n ∑ i = 1 n y i f(x)=\frac{1}{n}\sum_{i=1}^ny_i f(x)=n1i=1nyi

但这个估计器的预测函数值和真实函数值相差很大。

非参数注意力汇聚

显然,平均汇聚忽略了输入。 于是Nadaraya和Watson提出了一个更好的想法, 根据输入的位置对输出进行加权:
f ( x ) = ∑ i = 1 n K ( x − x i ) ∑ j = 1 n K ( x − x j ) y i f(x) = \sum_{i=1}^n\frac{K(x - x_i)}{ \sum_{j=1}^nK(x - x_j)}y_i f(x)=i=1nj=1nK(xxj)K(xxi)yi

其中 K K K是核(kernel)。 上式所描述的估计器被称为 Nadaraya-Watson核回归(Nadaraya-Watson Kernel Regression)。 这里不会深入讨论核函数的细节, 但受此启发, 我们可以将注意力机制框架的角度重写上式, 成为一个更加通用的注意力汇聚(Attention Pooling)公式:
f ( x ) = ∑ i = 1 n α ( x , x i ) y i f(x)=\sum_{i=1}^n\alpha(x, x_i)y_i f(x)=i=1nα(x,xi)yi

其中 x x x是查询, ( x i , y i ) (x_i, y_i) (xi,yi)是键值对。 比较上式和平均汇聚的公式, 注意力汇聚 y i y_i yi是的加权平均。 将查询 x x x和键 x i x_i xi之间的关系建模为注意力权重(Attention Weight) α ( x , x i ) \alpha(x, x_i) α(x,xi), 如上式所示, 这个权重将被分配给每一个对应值 y i y_i yi。 对于任何查询,模型在所有键值对注意力权重都是一个有效的概率分布: 它们是非负的,并且总和为1。

为了更好地理解注意力汇聚, 下面考虑一个高斯核(Gaussian Kernel),其定义为:
K ( u ) = 1 2 π exp ⁡ ( − u 2 2 ) K(u)=\frac{1}{\sqrt{2\pi}}\exp(-\frac{u^2}{2}) K(u)=2π 1exp(2u2)

将高斯核代入上式可以得到:
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ⁡ ( − 1 2 ( x − x i ) ) 2 ∑ j = 1 n exp ⁡ ( − 1 2 ( x − x j ) ) 2 y i = ∑ i = 1 n Softmax ( − 1 2 ( x − x i ) 2 ) y i \begin{aligned} f(x) &= \sum_{i=1}^n\alpha(x, x_i)y_i\\ &= \sum_{i=1}^n\frac{\exp(-\frac{1}{2}(x - x_i))^2}{ \sum_{j=1}^n\exp(-\frac{1}{2}(x - x_j))^2}y_i\\ &= \sum_{i=1}^n\text{Softmax}(-\frac{1}{2}(x - x_i)^2)y_i \end{aligned} f(x)=i=1nα(x,xi)yi=i=1nj=1nexp(21(xxj))2exp(21(xxi))2yi=i=1nSoftmax(21(xxi)2)yi

在上式中, 如果一个键越是接近给定的查询, 那么分配给这个键对应值的注意力权重就会越大, 也就“获得了更多的注意力”。值得注意的是,Nadaraya-Watson核回归是一个非参数模型。 因此, 上式是非参数的注意力汇聚(Nonparametric Attention Pooling)模型。 现在来观察注意力的权重。 这里测试数据的输入相当于查询,而训练数据的输入相当于键。 因为两个输入都是经过排序的,因此由观察可知“查询-键”对越接近, 注意力汇聚的注意力权重就越高。

参数注意力汇聚

非参数的Nadaraya-Watson核回归具有一致性(Consistency)的优点: 如果有足够的数据,此模型会收敛到最优结果。 尽管如此,我们还是可以轻松地将可学习的参数集成到注意力汇聚中。例如,与上式略有不同, 在下面的查询 x x x和键 x i x_i xi之间的距离乘以可学习参数:
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ⁡ ( ( − 1 2 ( x − x i ) ) w ) 2 ∑ j = 1 n exp ⁡ ( − 1 2 ( x − x i ) ) w ) 2 y i = ∑ i = 1 n Softmax ( − 1 2 ( ( x − x i ) w ) 2 ) y i \begin{aligned} f(x) &= \sum_{i=1}^n\alpha(x, x_i)y_i\\ &= \sum_{i=1}^n\frac{\exp((-\frac{1}{2}(x - x_i))w)^2}{ \sum_{j=1}^n\exp(-\frac{1}{2}(x - x_i))w)^2}y_i\\ &= \sum_{i=1}^n\text{Softmax}(-\frac{1}{2}((x - x_i)w)^2)y_i \end{aligned} f(x)=i=1nα(x,xi)yi=i=1nj=1nexp(21(xxi))w)2exp((21(xxi))w)2yi=i=1nSoftmax(21((xxi)w)2)yi

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/131074826