尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

LLM那些事 03:Transformer 与注意力——聚光灯扫过每一个字

LLM那些事 03:Transformer 与注意力——聚光灯扫过每一个字 1. 引言它怎么知道「他」是谁上一篇《训练三阶段——从会接龙到会听话到会思考》的结尾我说过接龙在它脑子里具体怎么算出来的本篇接着来分析。先看一段话「小王看见小李盯着电脑发愁走过去问他怎么了。」这里的「他」你一眼就锁定是小李——那个在发愁的人。可它是怎么知道的它没有眼睛面前只有一串 token。它怎么就把「他」对上了隔了好几个词的那句里的「小李」我的答案一句话注意力。它读句子不是逐字记下来的是算出来的——算的是「谁该被重视」。这篇就拆这笔账怎么算怎么让一个字能「看」到相隔很远的另一个字。2. 为什么需要注意力传话会走样先回到接龙。上一篇讲过它一个 token 一个 token 往外蹦每蹦一个就看着前面已有的文字猜下一个。问题藏在这里前面那一大段文字它该怎么「看」最朴素的念头是只看紧挨着它的那一个 token。可语义常常要联系很远。「他」要解释清楚得回去找「小李」——中间隔着十几个 token。只看前一个它连「他」是个代词都看不出来。有人试过另一种做法把看过的都背下来一路带过去。这个思路有个学名叫 RNN做法是把前面所有内容不断压缩成一个「进度小结」每读一个 token 就更新一次小结再带着它往前走。听着合理毛病也在这每次更新都是一次压缩越靠后的信息被挤得越淡。传话游戏你玩过吧——几十个人排成一排第一个人说句悄悄话传到队尾往往面目全非。RNN 就是在玩一场跨很多步的传话传到「他」这里前面「小李」的影子早被稀释没了。所以需要另一种机制不靠传话把全文摊开放在眼前谁和谁有关当场算。这就是注意力。其实注意力不是记忆是计算关注。它不「记住」小李它是在算「他」这个位置该把多少注意力分给「小李」那个位置。这是它读懂上下文关系的全部答案。3. 注意力直觉一束聚光灯注意力这名字取得好因为它干的事跟你读文章时干的几乎一样。你读一段长文眼睛并不平均用力。「小王看见小李盯着电脑发愁」——你的视线自然落在「小王」「小李」「发愁」上跳过「的」「了」「在」。读到后面的「他」你会回头确认这个「他」是那个发愁的人。跳过无关句、盯住关键句这本身就是一套注意力分配。给材料划线也是同一个动作。你复习时拿荧光笔把重要的句子涂亮不重要的留白。注意力就是模型在给自己划线读每个词时它都决定——哪些词值得多看一眼哪些一眼带过。区别在于模型把这个「多看一眼」做成了显式的账。每读一个词它对全文每一个位置都算出一个关注度相关的权重高无关的权重低。然后它把所有位置的信息按这个权重加权混合当成这个词的「新理解」。换句话说每个词都在重新理解自己——通过扫一遍全文看哪些词该影响自己。这就是那束聚光灯。光扫过全文每一个字照到谁、照多亮都是它算出来的关注度。下一章拆这束光具体怎么算。4. QKV问、被问、和回答把「算关注度」拆开核心是三个角色我压成一句话问、被问、和回答。论文里它们叫 Q、K、V——Query查询、Key键、Value值。名字唬人角色不唬人。Q 是「我在问什么」。每个词重新理解自己时先掏出一个问题。比如「他」这个代词它的 Q 大概是「我指谁」——它带着这个问题去扫全文。K 是「你有什么值得我看」。全文每个词都举着一块招牌写着自己是啥。名词举着「我是个人名」动词举着「我是动作」。K 就是这块招牌负责让别的词一眼认出它能回答什么问题。V 是「真正要记住的」。K 是门面V 是内容。别的词认出了「小李」真正能拿去更新理解的是「小李」背后的完整信息——他是个人、他在发愁、他是这场对话的对象。V 就是这份完整信息。三者怎么配合一句话Q 和 K 两两对上对得上分数高分数变成权重按权重取 V。放到开头那句小王Q我该问谁去对上小李的招牌K我是在发愁的人对上了于是从小李的 V 里取出「他在发愁、是对话对象」更新小王对上下文的理解。全文每个词都在同时做这件事。其实注意力分数不是玄学是三个向量两两对上的结果——问、被问、和回答。谁和谁对上眼谁就被重视。图里只画了一条主线但注意那个「K 其他词」同一个 Q是同时去和全文每一个词的 K 对一遍的。这就是注意力「一眼扫全文」的真相。5. 多头注意力好几盏灯各管一面一束聚光灯够吗不够。你读文章时同时盯好几件事谁是主角、谁在做什么、情绪是松是紧、时间先后。如果只有一盏灯它顾了指代就顾不了情感。所以 Transformer 不只用一束光而是并排好几束每束管一面。这叫多头注意力multi-head attention。「头」就是那几盏灯各配一套自己的 Q、K、V 权重各算各的关注度。有的头专管指代——「他」盯着人名有的头管语法——动词盯着主语宾语有的头管语气——「发愁」连着消极词。结果怎么合起来每盏灯各自算出一个「新理解」再把它们拼成一份更完整的。有点像几个同事同时读一份报告一个盯数字、一个盯逻辑、一个盯措辞散会各自报一条你拼起来就是全面得多的印象。所以多头不是炫技是「一个角度不够得多角度同时看」的工程化。它读上下文比你想象的稳不是某一种规律生效是好几套规律在同时投票。6. 位置编码座位号这一章解决一个很反直觉的问题注意力本身分不清先后。你算「他」该看谁时是把「他」的 Q 和全文每个词的 K 都拿去对一遍。问题来了把「小李」和「小王」换个位置算出来的分数一模一样——因为注意力只比「像不像」不比「谁在前谁在后」。可「小王看见小李」和「小李看见小王」意思完全两回事。顺序信息得另外注入。做法是在每个 token 上按它的位置绑一个「座位号」让它带着座位号去算注意力。剧场里的座位必须有号否则大家同时开口你分不清谁坐哪排、谁先谁后。位置编码就是这个座位号。现代主流方案叫 RoPE旋转位置编码。它不做一张查位置的表而是把查询和键两个向量按位置旋转位置越靠后转的角度越大。两个向量一旋转再做点积时结果里就天然带着「这两个词隔多远」的信息——相对距离直接编进了分数。2026 年你叫得上名字的开源模型——Llama、Mistral、Qwen、Phi-3、DeepSeek——默认全是它。细节在技术深挖那节这里先记住一个类比座位号。7. 堆多层 复杂度越看越抽象越长越贵单层注意力算完这个词已经「重新理解」过一次了。但一层不够——它认得出代词认不出整个故事。于是把同样的机制堆很多层第一层的结果喂给第二层再算一次一层层往上叠。叠出来的效果很有意思底层管字面高层管语义。底层注意力抓的是「谁在句子里的位置近」这种表面关系越往上它越能抓住「这句话整体在讲什么」。你读到一句话先认得每个词再拼出意思——模型的层叠就是在反复重建这个从字面到语义的过程。每多一层它「看」的东西就更抽象一层。代价也在这。注意力每算一次都要让每个 token 和全文每个 token 比一次——这没法偷懒。窗口里有 n 个 token就要比 n×n 次。数学上叫 O(n²)我说人话窗口翻一倍成本涨四倍。算一下1K 窗口每层约 100 万次比较128K 窗口每层约 170 亿次。这还只是一层几十层叠上去数字再翻几十倍。这一下就解释了一件事为什么它一次能记住的长度是有限的。上下文窗口不是产品经理拍脑袋定的上限是计算成本和内存成本顶着的天花板。2026 年旗舰模型把窗口推到了 100 万 token 的量级Claude、Gemini、GPT-5.5、DeepSeek V4 那批都是这个档最大的广告口径到了 1000 万——可实际能可靠用到的往往只有宣传的一半左右。窗口到底卡在哪、为什么聊久了会忘这是下一篇《上下文窗口的边界》的正题这里先埋个引子。8. 技术深挖可跳过这节写给想看机制细节的开发者跳过不影响主线。QKV 怎么来的每个 token 最初只是一个向量embedding。要得到它的 Q、K、V不是凭空变出来的而是把这个向量分别乘上三个可学习的权重矩阵 W_Q、W_K、W_V——同一句话问什么、举什么招牌、记什么内容都是训练里学出来的分工。三个矩阵每个头一套所以「多头」不是三份是 头数×3 份。softmax 注意力分数注意力分数的标准算式叫 scaled dot-product attention先算 Q 和 K 的点积QK^T再除以 √d_kd_k 是向量维度防止维度大了点积值爆炸然后过 softmax 归一化成权重最后按权重对 V 加权求和。softmax 的作用是让所有权重加起来等于 1谁大谁小一目了然。多头拼接每个头各自算出一份「带权重的新理解」然后把所有头的结果拼接起来再乘一个输出权重矩阵 W_O得到这一层的最终输出。分头算、合起来用——这是 2017 年《Attention Is All You Need》那篇论文就定下的架构后来的模型基本沿用了这套骨架。位置编码绝对、相对、RoPE位置编码大致三代。第一代绝对位置编码给每个位置配一个向量加进 token 的 embedding——GPT-2 那代用学习出来的表原版 Transformer 用正弦余弦公式能表达位置但学不到「相对距离」的关系。第二代相对位置编码直接把「相隔多远」作为一个偏差项参与计算能表达距离但要改注意力算式。第三代就是 RoPE把 Q、K 向量按位置做旋转两个旋转后的向量做点积结果天然只跟它们的相对距离有关——不用改算式相对距离自己冒出来。这正是它成为 2026 主流的原因。Llama 3 还把 RoPE 的基础频率从默认的 10000 调到了 500000就为了在更长的上下文里保持分辨力截至 2026-08-23 WebSearch 核实。KV cache为什么越长越贵账本之一前面说 128K 窗口每层约 170 亿次比较那是算力。还有一笔账叫内存比算力更卡。自回归是逐 token 生成的每吐一个 token都要回头把前面的 K、V 再算一遍。为了不重复劳动工程上把它们缓存下来这就是 KV cache。问题是缓存涨得快一个 GPT-3 级别的模型1750 亿参数每多一个 token 的上下文K、V 缓存就要多占约 4.5MB 显存FP16 精度截至 2026-08-23 WebSearch 核实。128K 上下文光这笔缓存就接近 570GB——一块 H100 才 80GB。所以长上下文不是「想给多少给多少」是显存先顶不住。这也解释了 2026 年大量论文在做 KV cache 压缩和换出——不是闲的是内存真不够。9. 收束你早就懂注意力回到开头那句「他」。现在你知道了它不是去查「他小李」这条笔记——它在每个位置算了一笔「谁该被重视」的账Q 问、K 答、V 给内容多头各管一面座位号补上顺序再一层层叠出抽象。其实这一整套你其实早就会。你读长文时会跳过废话、盯住关键句会在「他」出现时回头找「小王」还是「小李」——你在用的就是注意力。模型只是把这件你做得无比自然的事算成了明明白白的分数。它不是记住了上下文是每次都在重新计算「谁该被重视」。下一篇本系列第 4 篇《上下文窗口的边界》既然注意力要全文两两比、KV 缓存线性涨那窗口到底为什么有限、聊久了为什么忘、超了窗口它会怎么办。想跟上系列可以关注我别走丢。如果你还没动手现在就可以做个实验回想你最近问 AI 的一段长对话是不是越聊它越「记不住」开头这个「越聊越笨」的现象下一篇会拆个底朝天。
返回列表