注意力机制计算介绍
接下来,我们来稍微讨论注意力机制计算。正如之前的博客所介绍,当前主流业界的大规模参数模型中的一个重要组件就是注意力机制(Attention)。那么当前,首先需要搞清楚的就是,什么是注意力机制的计算,如何理解?
在这一篇博客中,我会尝试联系传统的网络模块,从传统的网络模块理解注意力机制的计算的机制是什么,然后再介绍它的一些性质和特殊场景下的变种。
通用注意力机制建模
首先,本文并不直接对着注意力公式来理解。事实上,如果直接对着注意力公式来理解,可能会有点“无法理解”,至少是和其他网络之间的联系。所以,我们先从深度学习最基础的形式出发。在这里需要澄清一点的是,当前主流大语言模型中所使用的因果自注意力(Causal self-attention)是通用注意力的特殊情况。
回到最简单的深度学习网络——多层感知机(MLP)上:
可以看到,一个最简单的多层感知机是一个带非线性函数变换的两层的线性变换。其中参数
我们从常见的任务来理解,如房价状态分类任务,输入是某一个房子的各类信息,可以由一个房子的不同属性所构成
这是一个非常基础的矩阵乘法,对于一个中间状态向量
接着,我们再来看卷积神经网络(CNN)。为什么会有卷积神经网络,或者说卷积神经网络解决了多层感知机哪些没有处理好的内容呢?
首先,卷积神经网络大量使用在图像处理领域上,其一个主流核心观点是,卷积神经网络本身是许多过滤器(filter)的集合,通过多个自适应的大小不同参数不同的过滤器提取图像特征来做图像任务,如分类,生成等。
举个例子,对于一个输入的图像
从这个公式上可以看到,模型参数
当然,这样做是有好处的:
- 利用了图像的平面信息更好提取信息。一个像素位置周围的像素的信息是有关系的,其不同的组合形式表示不同的状态,通过模型给定的过滤器提取这样的状态为后续的任务提供基础。
- 减少了计算开销。从矩阵计算来说,通过更小的矩阵计算,以窗口化的形式完成图像特征的提取,减少了计算开销。
接下来,我们借助上述回顾的内容,尝试扩展到文本,在扩展文本之前,我们做几个思想实验来更好地理解,文本需要什么样类型的神经网络更合适。
思想实验1:像素/图像特征向量化
在卷积神经网络基础上,我们假设输入的图像的颜色元素是向量形式,或者,提取出来的图像特征元素是向量形式,即网络所接受的输入每一个元素都是向量形式。
首先,这样的假设是合理的,对于神经网络来说,它本质上并不理解颜色像素是“什么”,而只是知道有一个数值强度,而通过向量形式,也就是一个维度空间能够更好地表达颜色\特征之间的关系。传统的特征提取过程可以理解为一定范围内的颜色数值强度之间模式的信息提取,提取以后仍然是一个数值,这个数值可以理解为上一层过滤器的匹配程度。
对于下一层的网络来说,如果能够知道上一层的过滤器的参数状态是什么,即组合
所以,此时整个网络所接受到的输入就是一组向量的输入,即
在这个变化下,我们再重新思考卷积神经网络的变形,对比公式(4),可以意识到计算过程完全不需要改变:
这仍然是通过一个固定大小的过滤器给定对应的权值,对于不同的向量有着不同的重要程度再求和,这就是向量形式的带权求和。
对于多层感知机的向量形式推广也是类似的,假设一个房子的属性不再是简单的数值,而是每一个富有含义的状态向量,那么通过一层神经网络的变换得到的中间的向量状态,对于其中一个分量结果
思想实验2:可变大小的特征提取
接着,我们再思考一个事情,传统的卷积神经网络有一个常见的隐形要求是固定输入大小,这一方面确保经过多层卷积神经网络以后输出的维度是固定的,但也导致在面对不同尺寸的图像输入的时候(训练也是如此)首先就需要对图像进行大小规模处理,比如放缩到某尺寸规模,再进行神经网络处理。
我们尝试换思路,不是让图像放缩大小来适应网络,而是让网络能够适应不同尺寸的图像,这就要求网络本身能够处理变化的尺寸。我们设想一个最简单的变换,通过适应可变大小的网络变换提取信息,假设输入是可变大小的图像,输出是固定大小的维度。
此时,我们重新思考公式(5)的时候就会发现一个问题,卷积神经网络的权值是固定的,而输入是变化的,它无法适应可变大小的输入,此时我们需要一个能够根据这个区域大小变化的神经网络模块。
既然我们需要一个随着区域大小变化的神经网络模块,我们可以直接从区域出发,假设某个区域中有
此时,这个权值
为了防止数值溢出,即这个区域较大,此时求和的数值可能会很大在数值上会溢出,所以可以做一个平均对数值大小进行控制有:
到这里,我们的通用注意力计算也呼之欲出。接下来我们整理上述公式,导出一个通用的注意力公式。
通用注意力计算形式
从上述的思想实验中,可以得知,假如我们要处理一批可变大小的向量之间的关系,就需要公式(8)这种形式的神经网络模块。具体观察公式(8)可以看到,对于区域$X=(\vec{x}_1, \dots, \vec{x}N)
公式(9)和公式(8)没有本质上的区别仅仅只是一些符号的改变。从公式(9)延伸出来的意义,
这种形式的能够处理可变大小向量的神经网络模块就不再是存储适配区域大小的权值,而是记录上述的变换
Attention的具体物理意义与变种
接下来,通过上述推导的通用注意力计算形式来理解常见的注意力的变种。
常用的通用注意力形式
首先介绍当前常用的”通用”形式[1,2,3]。从公式(10)出发,
其中
而对于
公式(10)的计算就可以写成:
补充:在具体计算中会对
扩展1:矩阵形式
假设领域A中选择的不是1个而是
这也是我们常说的并行形式,从上述的公式来看,并行形式本质上是多个过滤器对同一个区域作用的过程。
扩展2:mask形式
除此之外,在一些场景下,并不希望所有的区域向量
因果序列的自注意力
如果我们把场景限定在文本上[3],我们会发现,文本可以看做是一组带顺序的向量所构成一个维度的信息,通过注意力计算能够得到带序列的文字信息聚合状态。对于每一个顺序位置
仔细观察该公式的下标,遍历随着序列的位置而不同。除此之外,所有的自注意力,但从上述的推导来看,
类似地,该背景下也有矩阵形式,但由于要满足每一个过滤器的位置限制,所以还需要通过屏蔽位置后续的信息来达到序列信息的性质。
参考材料
[1] PyTorch. MultiheadAttention[EB/OL]. https://docs.pytorch.org/docs/2.13/generated/torch.nn.MultiheadAttention.html.
[2] PyTorch. torch.nn.functional.scaled_dot_product_attention[EB/OL]. https://docs.pytorch.org/docs/2.13/generated/torch.nn.functional.scaled_dot_product_attention.html.
[3] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.
- 标题: 注意力机制计算介绍
- 作者: Wings
- 创建于 : 2026-08-05 10:00:00
- 更新于 : 2026-08-11 17:18:15
- 链接: https://www.wingslab.top/深度学习/注意力机制计算介绍/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。