【大语言模型基础(2)】自注意力与多头机制:QKV、缩放与因果掩码
文章目录摘要1. 为什么需要自注意力2. Q、K、V 到底是什么一个具体例子3. Attention 公式在干什么第一步计算相似度第二步做缩放第三步s o f t m a x \mathrm{softmax}softmax归一化第四步对V a l u e ValueValue做加权平均4. 为什么 GPT 需要因果掩码BERT 和 GPT 的差别因果掩码怎么做5. 多头注意力为什么有用可以把它理解成6. 看注意力权重要注意什么7. 一张图就能记住的核心逻辑摘要Transformer 到底是怎么做到的在当前位置先看完整句话再决定自己该变成什么样这件事主要靠两样东西Q / K / V s o f t m a x Q / K / V \mathrm{softmax}Q/K/Vsoftmax把整句话的信息汇总成当前位置的新表示。因果掩码causal mask让同一套注意力公式在 GPT 里变成“只能看过去”。本文会顺着这条线讲清楚自注意力的直觉、QKV 的分工、缩放因子d k \sqrt{d_k}dk的作用以及为什么多头注意力和掩码会让 Transformer 既能理解语言也能生成语言。1. 为什么需要自注意力先看一个最经典的现象bank在“河岸”语境里是河边的岸在“银行”语境里是金融机构。同一个词放进不同句子里意思完全不同。这说明一个词的表示不能只看它自己还得看上下文。早期 RNN 的思路是把信息按顺序往后传但句子一长前面的信息很容易在传递中变弱、变形。Transformer 选择了另一条路让每个位置直接和所有位置交互由模型自己决定该重点关注谁。这就是自注意力的出发点。2. Q、K、V 到底是什么自注意力里常见的三个字母看起来抽象其实可以理解得很直白。QueryQ QQ当前位置“在问什么”KeyK KK每个位置“是什么类型的信息”ValueV VV每个位置“真正提供的内容”你可以把它想成一个匹配过程我现在这个词想从整句话里借一点信息回来但我得先判断谁最相关。一个具体例子看这句话The animal didn’t cross the street becauseitwas too tired.这里我们关心的是it指的是谁对于当前位置的it来说Q u e r y QueryQuery表示我在找一个能解释“too tired”的对象。句子里每个词都有自己的K e y KeyKey。每个词真正带来的语义内容是它自己的V a l u e ValueValue。it的Q u e r y QueryQuery去和所有K e y KeyKey做匹配后会发现和animal的匹配度高和street的匹配度低于是s o f t m a x \mathrm{softmax}softmax之后animal对应的权重更大。最后it会主要吸收animal的V a l u e ValueValue信息于是它的表示里就带上了“它指的是 animal”这层上下文。一句话概括Q QQ在问问题K KK决定谁该被关注V VV提供真正要拿走的信息。3. Attention 公式在干什么标准的缩放点积注意力公式是A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q K ⊤ d k ) V \mathrm{Attention}(Q, K, V) \mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) VAttention(Q,K,V)softmax(dkQK⊤)V这条式子看起来长其实只有四步第一步计算相似度Q K ⊤ QK^\topQK⊤意思是当前位置和所有位置分别有多相关。第二步做缩放Q K ⊤ d k \frac{QK^\top}{\sqrt{d_k}}dkQK⊤这里的d k d_kdk是K e y KeyKey向量的维度。为什么要除以d k \sqrt{d_k}dk因为维度越大点积的数值通常越容易变大s o f t m a x \mathrm{softmax}softmax就会变得特别尖锐注意力几乎只押在一个位置上训练会更不稳定。所以这个缩放因子本质上是在给s o f t m a x \mathrm{softmax}softmax降温让注意力分布别太极端。第三步s o f t m a x \mathrm{softmax}softmax归一化s o f t m a x \mathrm{softmax}softmax会把相似度变成权重保证所有权重加起来等于1 11。这一步之后你得到的不再是“分数”而是“我到底该听谁多少”。第四步对V a l u e ValueValue做加权平均最后把这些权重乘到V VV上得到当前位置的新表示。也就是说自注意力本质上是在做一次“按相关性加权的信息汇聚”。4. 为什么 GPT 需要因果掩码这里是很多人第一次真正理解“生成式模型”和“理解式模型”区别的地方。BERT 和 GPT 的差别BERT做的是理解任务允许一个位置看到整句话的左右上下文。GPT做的是生成任务要建模的是p ( x t ∣ x t ) p(x_t \mid x_{t})p(xt∣xt)也就是只能根据前面的词预测下一个词。如果在训练时当前位置还能看到未来词那就等于把答案泄露给模型了。这当然不行。因果掩码怎么做做法很简单在注意力分数矩阵里把未来位置也就是j t j tjt的部分填成− ∞ -\infty−∞s o f t m a x \mathrm{softmax}softmax之后这些位置的权重就会变成0 00这样一来模型虽然“看得见”整个矩阵结构但实际上未来的信息在计算上被彻底屏蔽了。最重要的一点是Attention 的公式没变变的是“允许谁参与计算”。所以BERT 和 GPT 可以共享同一类注意力机制但因为掩码不同最终学到的是完全不同的建模方式。5. 多头注意力为什么有用如果只有一个注意力头模型每次只能用一种方式看问题。但语言里的关系不止一种有的关注语法有的关注指代有的关注语义有的关注长距离依赖多头注意力的做法是把隐藏维度切成几份每一份独立做一套注意力最后把结果拼接起来这样模型就可以同时从多个角度理解同一句话。可以把它理解成不是一个人独自判断“谁重要”而是几位专家各看一遍一个专家看语法一个专家看语义一个专家看指代关系最后把大家的意见综合起来。多头注意力的价值就在这里它让模型不只学一种相关性而是并行学习多种关系模式。6. 看注意力权重要注意什么很多工具都能把注意力权重画成热力图看起来很直观。但这里有一个常见误区注意力权重不是语法树也不等于人类可解释的最终答案。它只是模型内部的一种统计信号说明某些位置在当前计算中更受关注。它可以帮助我们观察模型但不能简单地把它当成“模型真正理解了什么”的唯一证据。7. 一张图就能记住的核心逻辑如果把整篇内容压缩成一句话那就是自注意力是在全句范围内按相关性重新分配信息而因果掩码决定模型能不能看未来。再展开一点就是Q QQ当前位置在问什么K KK谁和这个问题更匹配V VV匹配成功后拿走什么信息s o f t m a x \mathrm{softmax}softmax把匹配分数变成权重d k \sqrt{d_k}dk防止注意力过于尖锐m a s k \mathrm{mask}mask决定能看过去、还是能看全句多头让模型同时用多种视角理解句子Transformer 的聪明之处不在于它“记住了句子”而在于它学会了在每个位置上重新判断整句话里谁最重要。而 GPT 和 BERT 之所以走向不同方向只是因为它们在同一套注意力公式上分别加上了不同的“观看权限”。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2460761.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!