LLM 怎么生成回答?揭秘“思考“过程
系列大语言模型原理科普5 篇本篇第 3 篇难度⭐⭐ 零基础 浅显技术字数约 9500 字阅读时间20 分钟 开篇你输入问题后发生了什么想象一下这个场景你在对话框输入今天天气怎么样 ↓ 点击发送 ↓ 等待 1-2 秒 ↓ LLM 回复我很好谢谢关心你呢但这 1-2 秒内LLM 内部经历了什么它是怎么把你的问题变成回答的第 1 篇我们知道了 LLM 是什么第 2 篇我们知道了它是怎么学习的。今天这篇我会带你走进 LLM 的大脑看看它内部是怎么工作的。你会了解输入的文字怎么变成数字自注意力机制的详细计算过程96 层每层都在做什么数字怎么变回文字为什么会有幻觉一、整体流程从输入到输出的旅程在深入细节之前我们先看整体流程。LLM 生成回答分为 5 个步骤第 1 步输入编码文字 → 数字 ↓ 第 2 步位置编码记住字的顺序 ↓ 第 3 步注意力层找字与字的关系 ↓ 第 4 步前馈层处理信息 ↓ 第 5 步输出解码数字 → 文字重复第 3-4 步 96 次然后输出。 图 1整体流程输入你好吗 ↓ [1] 输入编码 → [1234, 5678, 9012] ↓ [2] 位置编码 → 记住顺序 ↓ [3] 注意力层 → 找关系重复 96 次 ↓ [4] 前馈层 → 处理信息 ↓ [5] 输出解码 → 我很好二、第 1 步输入编码文字怎么变成数字2.1 为什么要变成数字LLM 是计算机程序它只认识数字。文字对人类有意义对计算机没有。所以第一步是把文字变成数字。你好吗 → [1234, 5678, 9012]这个过程叫编码Encoding。2.2 分词把句子拆成字/词编码之前需要先分词。分词是什么就是把句子拆成字或者词。中文分词 我喜欢吃苹果 → [我, 喜欢, 吃, 苹果] 英文分词 I like apples → [I, like, apples]为什么要分词如果按字分词汇量小几千个汉字但丢失词义如果按词分词汇量大几十万个词但保留词义大语言模型通常用子词Subword我喜欢吃苹果 → [我, 喜, 欢, 吃, 苹, 果] I like apples → [I, like, app, les]子词的好处词汇量适中约 5 万个能处理新词保留部分词义 技术小知识分词算法常用的分词算法 1. BPEByte Pair Encoding - 从字符开始合并频繁出现的组合 - 例子apple → app le 2. WordPiece - BPE 的变体Google 用 - 例子playing → play ##ing 3. SentencePiece - 把整个句子当字符串处理 - 支持多语言2.3 词嵌入字/词变成向量分词后每个字/词都有一个编号Token ID。我 → 1234 喜欢 → 5678 吃 → 9012 苹果 → 3456但这个编号还不够需要变成向量Vector。什么是向量就是一个数字列表。我 → [0.1, -0.5, 0.3, ..., 0.8] 长度为 4096为什么用向量一个数字只能表示是谁向量可以表示含义相似的词向量相近喜欢的向量[0.1, -0.5, 0.3, ...] 爱的向量 [0.1, -0.4, 0.3, ...] 很接近 苹果的向量[0.8, 0.2, -0.1, ...] 香蕉的向量[0.7, 0.3, -0.1, ...] 很接近 图 2词嵌入词汇表5 万个词 我 → 编号 1234 → 向量 [0.1, -0.5, 0.3, ...] 你 → 编号 1235 → 向量 [0.2, -0.4, 0.2, ...] 喜欢 → 编号 5678 → 向量 [0.3, -0.3, 0.4, ...] 向量长度4096每个词用 4096 个数字表示 技术小知识向量维度向量长度维度决定了表达能力 - 小模型2048 维 - 中模型4096 维 - 大模型8192 维 维度越高能表达的含义越丰富 但计算量也越大。三、第 2 步位置编码记住字的顺序3.1 为什么需要位置编码LLM 有一个问题它并行处理所有字不知道字的顺序。我喜欢吃苹果 和 苹果喜欢吃我 词是一样的但意思完全相反。怎么解决给每个字加上位置信息。第 1 个字我 位置 0 第 2 个字喜欢 位置 1 第 3 个字吃 位置 2 第 4 个字苹果 位置 3这个过程叫位置编码Positional Encoding。3.2 位置编码怎么实现位置编码也是一个向量和词向量相加。我的词向量 [0.1, -0.5, 0.3, ...] 位置 0 的向量 [0.0, 0.0, 0.0, ...] 相加后 [0.1, -0.5, 0.3, ...] 喜欢的词向量 [0.3, -0.3, 0.4, ...] 位置 1 的向量 [0.1, 0.1, 0.1, ...] 相加后 [0.4, -0.2, 0.5, ...] 吃的词向量 [0.5, -0.1, 0.2, ...] 位置 2 的向量 [0.2, 0.2, 0.2, ...] 相加后 [0.7, 0.1, 0.4, ...]这样每个字都有了位置信息。 技术小知识位置编码公式位置编码用正弦和余弦函数 PE(pos, 2i) sin(pos / 10000^(2i/d)) PE(pos, 2i1) cos(pos / 10000^(2i/d)) 不用懂细节知道核心思想就行 - 不同位置有不同的编码 - 相邻位置编码相近 - 可以表示相对位置 图 3位置编码词向量 位置向量 带位置的词向量 我 [0.1, -0.5, ...] [0.0, 0.0, ...] [0.1, -0.5, ...] 喜欢 [0.3, -0.3, ...] [0.1, 0.1, ...] [0.4, -0.2, ...] 吃 [0.5, -0.1, ...] [0.2, 0.2, ...] [0.7, 0.1, ...] 苹果 [0.6, 0.0, ...] [0.3, 0.3, ...] [0.9, 0.3, ...]四、第 3-4 步注意力层 前馈层核心处理编码完成后进入核心处理阶段。这个阶段重复 96 次每层都在做类似的事。4.1 自注意力机制找字与字的关系自注意力机制是 LLM 的核心。它的作用是让每个字注意其他字找关系。怎么工作分 4 步第 1 步生成 Q、K、V 向量每个字生成三个向量QQuery查询我想找什么KKey键我是什么VValue值我的内容我Q[...], K[...], V[...] 喜欢Q[...], K[...], V[...] 吃Q[...], K[...], V[...] 苹果Q[...], K[...], V[...] 类比想象你在图书馆找书 Q查询你想找的书的主题 K键每本书的标签 V值书的内容 你用 Q 去匹配 K找到相关的书 然后读取 V书的内容。第 2 步计算注意力分数用 Q 和 K 计算每个字之间的关系。苹果的 Q × 每个字的 K 注意力分数 苹果注意我0.1 苹果注意喜欢0.2 苹果注意吃0.3 苹果注意苹果0.4第 3 步Softmax 归一化把分数转成概率加起来等于 1。苹果注意我0.1 → 10% 苹果注意喜欢0.2 → 20% 苹果注意吃0.3 → 30% 苹果注意苹果0.4 → 40%第 4 步加权求和根据概率加权求和 V 向量。苹果的新向量 10% × 我的 V 20% × 喜欢的 V 30% × 吃的 V 40% × 苹果的 V这样苹果就融合了其他字的信息。 图 4自注意力机制句子我 | 喜欢 | 吃 | 苹果 苹果的注意力计算 1. 生成 Q、K、V 苹果的 Q [...] 所有字的 K [...], [...], [...], [...] 所有字的 V [...], [...], [...], [...] 2. 计算注意力分数 Q × K1 0.1注意我 Q × K2 0.2注意喜欢 Q × K3 0.3注意吃 Q × K4 0.4注意苹果 3. Softmax 归一化 0.1 → 10% 0.2 → 20% 0.3 → 30% 0.4 → 40% 4. 加权求和 新向量 10%×V1 20%×V2 30%×V3 40%×V44.2 多头注意力从多个角度看上面的过程只做了一次注意力计算。大语言模型会做多次这叫多头注意力Multi-Head Attention。头 1关注语法关系 头 2关注语义关系 头 3关注上下文 ... 头 8关注其他关系每个头独立计算然后把结果合并。 类比多头注意力就像 8 个人同时读一句话 第 1 个人关注语法主谓宾 第 2 个人关注词性名词、动词 第 3 个人关注情感褒义、贬义 ... 第 8 个人关注逻辑因果、转折 最后把 8 个人的发现合并 得到更全面的理解。 技术小知识为什么用多头单头注意力只能关注一种关系。 多头注意力可以 - 同时关注多种关系 - 提高表达能力 - 更鲁棒一个头失效其他头还能用 通常用 8-32 个头。4.3 前馈网络处理信息注意力层之后是前馈网络Feed-Forward Network。前馈网络是什么就是一个简单的神经网络每层独立处理信息。输入向量 → 线性变换 → 激活函数 → 线性变换 → 输出向量作用进一步处理注意力层的信息增加非线性让模型能表达复杂关系 图 5注意力层 前馈层输入 ↓ [自注意力层] ← 找字与字的关系 ↓ [残差连接] ← 保留原始信息 ↓ [层归一化] ← 规范化 ↓ [前馈网络] ← 处理信息 ↓ [残差连接] ← 保留原始信息 ↓ [层归一化] ← 规范化 ↓ 输出传给下一层4.4 96 层都在做什么大语言模型有 96 层每层都在做类似的事。但不同层关注的东西不同层级关注内容例子1-16 层底层字词级别词性、语法17-64 层中层短语级别短语结构、局部语义65-96 层高层句子级别整体语义、逻辑关系例子句子我喜欢吃苹果因为它很甜 底层1-16 层 - 苹果是名词 - 喜欢是动词 - 甜是形容词 中层17-64 层 - 喜欢吃苹果是动宾结构 - 因为它很甜是原因状语 高层65-96 层 - 它指代苹果 - 甜是喜欢的原因 图 696 层处理输入 → 层 1-16 → 层 17-64 → 层 65-96 → 输出 ↓ ↓ ↓ 字词级别 短语级别 句子级别 词性/语法 短语结构 整体语义五、第 5 步输出解码数字怎么变回文字经过 96 层处理后得到了一个向量。这个向量需要变回文字。5.1 预测下一个字输出的向量通过一个线性层变成词汇表大小的向量。96 层输出[0.1, -0.5, ..., 0.8] 长度 4096 ↓ 线性层 ↓ 词汇表分数[8.5, 1.0, 0.3, ..., 2.1] 长度 50000每个数字代表一个字的分数。然后用Softmax转成概率词汇表分数 → Softmax → 概率分布 好8.5 → 85% 不错1.0 → 10% 烂0.3 → 3% 其他2.1 → 2%选概率最高的字作为输出。5.2 递归生成一个字变成长篇大论生成一个字后把它加到输入里再预测下一个字。这就是递归。第 1 轮 输入今天天气 输出真 第 2 轮 输入今天天气真 输出好 第 3 轮 输入今天天气真好 输出 第 4 轮 输入今天天气真好 输出适 第 5 轮 输入今天天气真好适 输出合 ... 重复直到生成结束标记 技术小知识结束标记怎么知道什么时候结束 词汇表里有一个特殊标记EOSEnd of Sentence 当模型预测出EOS时就停止生成。 例子 今天天气真好。EOS ↑ 到这里停止 图 7递归生成第 1 次输入我 → 预测爱 → 输出我爱 ↓ 第 2 次输入我爱 → 预测学 → 输出我爱学 ↓ 第 3 次输入我爱学 → 预测习 → 输出我爱学习 ↓ ... 第 100 次预测EOS → 停止 最终输出我爱学习因为学习能让我进步...六、为什么会有幻觉技术原因大揭秘读到这里你可能有个问题LLM 为什么会胡说八道从技术角度看有几个原因6.1 原因 1概率生成≠事实LLM 生成文字是基于概率不是基于事实。问2025 年诺贝尔文学奖得主是谁 LLM 的思考过程 1. 见过很多诺贝尔文学奖得主是 XXX的句子 2. 计算每个名字的概率 3. 选概率最高的 它不知道 2025 年还没颁奖 它只是在预测听起来像真的答案。这就是幻觉的根本原因。6.2 原因 2训练数据有错误LLM 的知识来自训练数据。如果训练数据有错误LLM 也会学到错误。训练数据地球是平的错误信息 ↓ LLM 学到这个知识 ↓ 问地球是什么形状 答地球是平的错误互联网上有很多错误信息LLM 无法区分真假。6.3 原因 3过度泛化LLM 会从训练数据中学习规律。但有时会过度泛化。训练数据 - 美国总统住在白宫 - 英国首相住在唐宁街 10 号 - 法国总统住在爱丽舍宫 LLM 学到的规律国家领导人都住在有名的房子里 问德国总理住在哪里 LLM 答德国总理住在某某宫编造 它没见过正确答案就根据规律编了一个。6.4 原因 4注意力分散有时候注意力机制没有注意到关键信息。句子小明昨天去了北京今天去了上海 问小明现在在哪里 如果注意力机制 - 注意北京40% - 注意今天10% - 注意上海50% 可能答错因为没有正确理解时间顺序。 图 8幻觉原因幻觉的 4 大技术原因 1. 概率生成 ≠ 事实 [████████████████] 40% 2. 训练数据有错误 [████████] 25% 3. 过度泛化 [████] 20% 4. 注意力分散 [██] 15%七、总结3 分钟回顾核心要点读完这篇文章你应该记住这几点 核心要点1. 整体流程5 步输入编码文字→数字位置编码记住顺序注意力层找关系前馈层处理信息输出解码数字→文字2. 输入编码分词拆成字/词子词分词词嵌入字/词变成向量4096 维3. 位置编码记住字的顺序用正弦/余弦函数编码4. 自注意力机制核心Q、K、V 向量计算注意力分数Softmax 归一化加权求和5. 多头注意力8-32 个头从多个角度理解6. 96 层的作用底层1-16字词级别中层17-64短语级别高层65-96句子级别7. 输出解码线性层 → Softmax → 概率选概率最高的字递归生成8. 幻觉的技术原因概率生成≠事实训练数据有错误过度泛化注意力分散 下篇预告读完这篇你可能有个问题LLM 到底能做什么不能做什么它的能力边界在哪里哪些任务它擅长哪些任务它不擅长第 4 篇《LLM 能做什么能力边界全解析》我会全面分析 LLM 的能力。你会看到能力雷达图5 维评分擅长任务的详细分析不擅长任务的技术原因使用检查清单什么场景能用/不能用真实翻车案例下周五我们继续。 互动时间读完这篇文章你有什么问题欢迎在评论区留言我会尽量回答。你也可以做个小测试看看自己有没有理解 小测试1. LLM 输入编码的第一步是什么 A. 位置编码 B. 分词 C. 注意力 2. 词向量的作用是什么 A. 表示编号 B. 表示含义 C. 表示顺序 3. 自注意力机制中Q、K、V 分别代表什么 A. 查询、键、值 B. 问题、答案、结果 C. 输入、处理、输出 4. 多头注意力的作用是什么 A. 提高速度 B. 从多角度理解 C. 减少计算 5. 96 层中高层65-96关注什么 A. 字词 B. 短语 C. 句子级别语义 6. 幻觉的根本原因是什么 A. 程序 Bug B. 概率生成≠事实 C. 数据太少 答案1.B 2.B 3.A 4.B 5.C 6.B系列文章第 1 篇大语言模型是什么✅第 2 篇LLM 是怎么学习的✅第 3 篇LLM 怎么生成回答本文✅第 4 篇LLM 能做什么下周五第 5 篇LLM 的局限性和未来最后更新2026-04-02下一篇4 月 9 日周五发布如果你觉得这篇文章有帮助欢迎点赞、收藏、转发让更多人看懂大语言模型
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2483098.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!