恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
注意力机制计算规则学习
首页
资讯中心
/
注意力机制计算规则学习
注意力机制计算规则学习
发布时间:2026/10/12 1:58:47
注意力机制首先在机器翻译领域效果好后来在transformer架构中大放异彩形成当前LLM大语言模型的基石题外话注意力机制是实验探索出来的并不是严格的数学推导所以QKV的解释五花八门目前没有统一理论的根本原因在于注意力机制是工程上先行的产物其有效性依赖于大量实验调优如缩放因子、多头设计、位置编码这些细节很难被单一理论框架完全涵盖。这其实反映了当前AI研究的一个普遍特征经验驱动 理论驱动。很多突破性技术如ReLU、Dropout、BatchNorm、残差连接都是先在实践中发现有效后续理论解释才慢慢跟上而且往往滞后且不完整。。不错的基础知识补充文章1.超详细讲解注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制https://blog.csdn.net/qq_70350287/article/details/1477959462.注意力机制完全详解https://blog.csdn.net/qq_45998729/article/details/1614447840 分类当QKV或者QKV同一个源头只是不同变换而已是为自注意力机制除此之外是为一般注意力机制。为啥有QKV没有原因计算规则是这样的qk得到注意力权重矩阵然后再和v相乘就得到了注意力矩阵。这样效果不错如果你实验出来4个效果更好那就是变革。Q:查询张量一般是解码器部分上个时间步的隐藏层输出或者上个时间步的输出上个时间步的隐藏层输出接入全连接神经网络后的输出。为了生成谁就是谁的Q。K:一般是解码器部分上个时间步的隐藏层输出或者上个时间步的输出上个时间步的隐藏层输出接入全连接神经网络后的输出。V:编码器所有时间步的输出集合张量。softmax:归一化算概率值。1 encoder-decoder 文本翻译框架1.1 不带注意力框架这种不带注意力机制的encoder-decoder框架缺点是效果不太好decoder生成时用同一个中间表达张量c来生成注意力不集中、分散。1.2 带注意力框架带注意力机制的在decoder生成时用不同中间表达张量c来生成就像人的注意力一样生成各个输出时集中实验效果比不带注意力机制的好。1.2.1 传统计算步骤KV≠Q。解码器第一个时间步的输入是指定的随机的隐藏层输入go起始符。第2个一直到最后时间步的输入的go起始符由中间语义张量替代。计算解码器当前时间步的中间表达张量步骤步骤1计算编码器所有时间步输出结果的权重通过Q解码器上个时间步的输出结果或者隐藏层输出作为Q与编码器所有时间步的输出结果是为K:[K1K2……Kn]进行点乘再做softmax计算出编码器各个时间步输出结果的权重就是概率。原来权重这么计算的就是Q.K示意。这就要求解码器的输出是1xn就是编码器有n个时间步这样才能和V进行计算。步骤2加权和计算注意力张量编码器各个时间步输出结果的权重再和编码器对应时间步的输出结果相乘然后再求和形状不变值改变得到中间语义张量。这步就是个矩阵运算因为矩阵运算可以实现它。比如注意力权重矩阵attention是1xn的形状就是编码器共有n个时间步的输出结果n个输出组成了V假设每个输出是m个那么V就是nxm的形状它也是步骤1说的K这里就是KV。那么上面这段计算的话用矩阵运算就是attention x V形状就是1xm1xn nxm矩阵运算完成了权重相乘以及相加即加权和。步骤3计算解码器当前时间步中间表达张量把Q和注意力张量进行拼接concat得到。也就是说先计算出编码器的各个时间步的输出结果存起来这是不变的。变的是解码器每个时间步的Q是不同的需要拿Q计算出解码器当前时间步的输入先用QK算出编码器各个时间步输出结果的权重再乘以V进行加权和算出注意力张量再和Q拼接计算出解码器当前时间步的输入——中间表达张量c。用QK计算概率注意力权重用V算中间注意力张量最后和Q拼接成输入。1.2.2 改进版解码器第一个时间步的输入不是指定的随机的隐藏层输入go起始符了而是编码器最后时间步输出的隐藏层结果go起始符。第2个一直到最后时间步的输入的go起始符由中间表达张量c替代。这个没变。但是解码器的每个时间步中间表达张量c计算变了主要变化是权重计算。它不再是KV≠Q了它是K≠V≠Q了。Q是上个时间步的输出结果。K是上个时间步的隐藏层输出。V不变——还是编码器每个时间步输出结果的集合。但是求权重方式变了KQ这里拼接后接入神经网络全连接层学习权重矩阵这个改进有啥理论依据么没有就是实验效果好于是诞生了注意力计算规则1。2 注意力计算规则2.1 注意力计算规则1注意力计算规则11.QK进行拼接送入神经网络全连接层其输出经过softmax得到encoder的所有输出的对应权重概率矩阵。2.然后这个权重矩阵和encoder的输出结果矩阵V矩阵相乘得到加权和的矩阵这就是注意力张量。3.注意力张量再和Q拼接再送去全连接神经网络输出最终的中间表达张量c——当前时间步的decoder的输入的一个张量。4.当前时间步的中间表达张量c上一个时间步的隐藏层输出作为decoder的当前时间步输入然后输出一个结果。这样1-4进行循环decoder就不断输出生成文本这就是语言的输出。至于QKV的相等不相等关系看你选择了和上面的注意力计算规则1没关系在规则1下你这QKV关系想怎么搞怎么搞。注意力计算规则1小结第一个拼接FC输出后经过softmax得到权重概率矩阵。第二个拼接FC输出得到当前时间步的最终的一个输入。有个重复的核心是拼接FC。可以看到核心节点是权重矩阵计算中间表达张量c计算输出。主要是计算这两点有2个神经网络层目前用全连接层当前也可以尝试其他神经网络结构这也是研究点让它具备了学习能力第一个神经网络层学习生成权重矩阵第二个神经网络层学习生成中间表达张量c。2次拼接都有Q。2.2 注意力计算规则2attention(Q,K,V) softmax(Q*K的转置/缩放系数 * V)计算非常简单Q直接和K的转置相乘就得到了概率值缩放后再和V相乘就得了中间表达张量。没有了拼接变得简单。3.encoder-decoder带注意力的文本翻译流程