[{"data":1,"prerenderedAt":433},["ShallowReactive",2],{"article:column:/column/llm-to-agent-learning/10":3},{"id":4,"title":5,"body":6,"description":425,"extension":426,"meta":427,"navigation":428,"path":429,"seo":430,"stem":431,"__hash__":432},"column/column/llm-to-agent-learning/10.md","10｜预训练：为什么接着预测能学到语言与任务",{"type":7,"value":8,"toc":405},"minimark",[9,13,16,19,24,27,30,33,36,39,42,45,49,52,55,58,61,64,67,77,84,87,91,94,102,105,108,116,122,125,128,132,135,138,141,144,148,151,154,157,160,163,171,174,178,181,184,187,195,198,202,210,213,221,224,227,231,239,242,250,253,257,260,263,266,272,275,278,281,289,292,296,302,305,310,313,318,321,326,329,332,337,340,345,348,353,356,361,364,367,372,375,380,383,388,391,396,399,402],[10,11,12],"p",{},"“语言模型只是预测下一个token。”这句话描述了常见训练目标，却容易留下一个大洞：如果任务只是接着写，为什么模型后来能回答问题、翻译，甚至写程序？",[10,14,15],{},"答案不能只靠“它压缩了知识，所以理解了世界”来完成。我们需要看清三个环节：一段文本怎样提供训练信号；同一套参数怎样从大量信号中形成可复用的计算；这些计算为什么仍可能在真实任务上失败。",[10,17,18],{},"本文讨论自回归语言模型的预训练。预训练还有其他目标，并不是所有模型都用同一种接续预测方法。",[20,21,23],"h2",{"id":22},"_1原文自己提供目标","1．原文自己提供目标",[10,25,26],{},"假设我们有一句“小猫喝水”。不请人逐条设计问答，而是把已经存在的文字切成token，就能构造“给前面的内容，预测后面的内容”的任务。",[10,28,29],{},"为便于手算，本篇固定使用五个教学token：",[10,31,32],{},"〈始〉／小猫／喝／水／〈终〉。",[10,34,35],{},"〈始〉和〈终〉分别表示开始与结束；真实模型使用什么特殊符号，以及“小猫”会切成几个token，需要看具体分词器。本篇不把这套手工切分当作真实模型结果。",[10,37,38],{},"从这段序列可以得到四个有效预测位置：看到〈始〉，预测“小猫”；看到〈始〉小猫，预测“喝”；看到〈始〉小猫喝，预测“水”；看到完整句子，预测〈终〉。",[10,40,41],{},"目标来自原文自身，所以叫自监督。这里并非没有监督信号，也并非没有人类劳动：文字的创作、资料选择和清洗仍有人参与；省去的是给每一个预测位置额外编一份答案。",[10,43,44],{},"一次遇到“小猫”之后是“喝”，不表示世界上只有这一种续写。其他文本里可能接“跑”“睡觉”。训练反复积累这些条件下的信号，让模型学习分配概率，而不是给每个前缀规定唯一永恒答案。",[20,46,48],{"id":47},"_2输入与目标错开一位","2．输入与目标错开一位",[10,50,51],{},"实际计算不必把四个前缀分别抄成四份。可以把输入写成：",[10,53,54],{},"〈始〉／小猫／喝／水。",[10,56,57],{},"与各位置对齐的目标则是：",[10,59,60],{},"小猫／喝／水／〈终〉。",[10,62,63],{},"同一份输入经过Transformer后，四个位置各自输出一份词表分布。第一个位置用来预测“小猫”，第二个位置用来预测“喝”，依此类推。损失分别检查四份分布给对应目标分了多少概率。",[10,65,66],{},"注意第二个位置的输入是“小猫”，目标是“喝”。“允许读到自己”并不意味着已经读到了目标。输入和目标错开一位，正是避免偷看答案的一部分。",[10,68,69,70],{},"但只错开还不够。虽然“喝”在第二个预测位置之后，它仍出现在整张输入表的第三行。若第二个位置可以读取第三行，就能抄答案。因此，每一层的因果mask都必须阻止读取未来位置。",[71,72,76],"a",{"href":73,"rel":74},"https://arxiv.org/html/1706.03762v7#S3.SS1",[75],"nofollow","原始Transformer对移位与mask的说明",[10,78,79],{},[80,81],"img",{"alt":82,"src":83},"10｜预训练：为什么接着预测能学到语言与任务：图1","/collections-assets/llm-to-agent-learning/c50e48927c9481ffb4a4deba441a2f3508f28198acf0976901cb867cad6f9f51.png",[10,85,86],{},"图1｜输入、下一位目标、目标概率和损失按四个预测位置对齐；下面的三角区标可读输入。四个概率属于四份不同分布，不能加起来当成一个概率总和；每份分布仍在整个词表上归一化。",[20,88,90],{"id":89},"_3训练能并行是因为真实前缀已经给出","3．训练能并行，是因为真实前缀已经给出",[10,92,93],{},"如果第二个位置把“吃”排在“喝”前面，第三个位置接下来收到的是“吃”还是“喝”？",[10,95,96,97],{},"在这里的标准训练方式中，仍然是原文里的“喝”。因为输入整段来自已知文本，不需要等待模型前一个位置选出什么词，再决定下一行输入。这叫teacher forcing，通常译作教师强制。T5原论文也明确用这个术语描述其最大似然训练方式。",[71,98,101],{"href":99,"rel":100},"https://arxiv.org/html/1910.10683v4#S3.SS1.SSS2",[75],"T5的训练说明",[10,103,104],{},"名字里的“教师”不是另一个大型模型，也不是有人守着纠错，而是用真实序列中的前文作为后续预测的条件。于是同一层的多个位置能够一起计算，同时由mask维护各自的可见范围。层与层仍有依赖，不能因此说所有计算都同时完成。",[10,106,107],{},"自由生成时不同。用户只给开头，尚未生成的词没有标准答案供我们提前填入。模型实际输出“吃”，下一步就要基于包含“吃”的前缀继续。它可能沿着自己造成的偏差越走越远。",[10,109,110,111],{},"因此，训练时各位置在真实前缀上预测得不错，不保证自由续写一长段也同样可靠。两种情境的前缀来源不同；理解这一点，比把“训练并行、生成逐步”背成口号更重要。",[71,112,115],{"href":113,"rel":114},"https://arxiv.org/abs/1506.03099",[75],"关于训练与生成前缀差异的原始研究",[10,117,118],{},[80,119],{"alt":120,"src":121},"10｜预训练：为什么接着预测能学到语言与任务：图2","/collections-assets/llm-to-agent-learning/fadf7c1d481f8d822b6dc9fc02ad9732d74d313e434f6468f2ae28c1e7fda32c.png",[10,123,124],{},"图2｜同一处分布把“吃”排在“喝”之前：训练下一位置的输入仍从原文取“喝”，生成下一步则使用实际选出的“吃”。图中没有把训练画成先选词再算loss；损失直接读取分布中标准目标“喝”的概率。",[10,126,127],{},"做一个纸上检查：把原文第三个token“喝”改成“吃”。预测“喝”的那个位置，看不到被改的第三行，所以它的输出分布不变；但该位置的目标变成了“吃”，计分依据随之改变；若两词的概率不同，损失也会改变。之后的位置能读到改动，输出也可能改变。输入可见范围与监督目标，必须分开追踪。",[20,129,131],{"id":130},"_4四份损失怎样合在一起","4．四份损失怎样合在一起",[10,133,134],{},"假设模型给四个正确目标的概率依次是0.5、0.25、0.8、0.5。这里的“正确”只表示与这份原文一致，不保证原文本身的事实正确。",[10,136,137],{},"沿用第04章的负对数损失，使用自然对数，四项约为0.6931、1.3863、0.2231、0.6931。等权平均后，得到约0.7489。",[10,139,140],{},"第二项最大，因为模型只给原文的“喝”分了0.25。参数更新会综合这些位置的信号，沿着降低所用训练目标的方向调整。一次更新同时影响许多输入下的表现，也不保证每个位置都立刻改善。",[10,142,143],{},"在这个例子里，没有“模型先生成四个词，再用人类观感给整句打分”的步骤。训练可以直接计算目标token的损失，把梯度传回词表投影、每层注意力与FFN等可训练参数。输出不必先变成一段可读文字，误差信号就已经存在。",[20,145,147],{"id":146},"_5为什么局部预测会推动更广的能力","5．为什么局部预测会推动更广的能力",[10,149,150],{},"预测对象虽然只有下一个token，可用条件却可能是很长的前文。要在不同材料里降低损失，有时需要抓住比相邻词更复杂的关系。",[10,152,153],{},"例如，前文说“小林把钥匙交给小周，随后小周把它放进抽屉”。当后面问“钥匙现在在……”，只统计“钥匙”后面最常出现什么，不足以分辨这个情境。使用人物、物品和位置之间的联系，才有机会更准确地预测续写。",[10,155,156],{},"这是训练为什么可能推动关系建模的直觉，不是声称看过一句话就必然学会物体追踪。模型也可能抓住题型、常见答案或其他捷径。只有换名字、换地点、改变事件顺序后继续检查，才能区分它用了什么规律。",[10,158,159],{},"同一套参数会参与大量不同文本。若一种表示能在许多样本中降低损失，就有机会被反复强化并复用。例如，处理指代、否定、数字格式或代码结构的计算，可能帮助多个预测位置。训练无需先给这些中间计算逐一命名。",[10,161,162],{},"中间的连接点是参数共享。不同句子的损失都对同一组参数求梯度，按所选目标汇总后更新；不是每句训练完就另存一个专用网络。若两个上下文的信号支持同一种关系，它可能得到反复强化；若信号冲突，就像第07章的小批次例子，需要合并取舍。仅凭这一机制不能证明形成了哪一种内部算法，所以还要用“换名字但保留关系”“交换交付顺序”等受控变化检查。",[10,164,165,166],{},"文本本身还记录了任务过程：文章附摘要，外文附译文，习题附解答，程序附说明。把“问题之后继续写答案”放进同一个条件预测框架，就让预测目标与任务表现发生了联系。不过，能表达为续写任务，不等于一定已经把这个任务学好。",[71,167,170],{"href":168,"rel":169},"https://arxiv.org/html/2406.17557v1#S2",[75],"FineWeb论文对自回归目标与文本任务的说明",[10,172,173],{},"可以把参数知识理解为：训练改变了许多权重，使某些关系和处理方式以后更容易被调用。它通常不是一条事实对应一个独立、可检索的格子，也不会自动带上原始网址、版本和可信度。记住某段文字与学会可迁移的方法可能同时发生，需要分别检验。",[20,175,177],{"id":176},"_6从文件到训练样本还差好几步","6．从文件到训练样本，还差好几步",[10,179,180],{},"一份网页文件不能直接当作模型输入。通常先提取正文、处理明显异常内容，再分词，把得到的序列按训练允许的长度组织成样本。",[10,182,183],{},"长文可能切成多个片段。切断点前后的联系就可能丢失：如果一个名字只在前段出现，后段的代词便少了依据。短文则可能拼接到同一个计算块里，减少空位置，提升处理效率。",[10,185,186],{},"拼接时要说明边界怎么处理。结束符可以告诉模型“前一篇到这里结束”，但符号本身不自动禁止跨文档注意力。若希望文档之间互不读取，还要使用相应的注意力mask；不同训练方案对此可以有不同选择。",[10,188,189,190],{},"若用填充符把长短不同的样本补齐，通常还要排除填充位置的损失。否则模型可能花力气学习没有任务价值的填充模式。这里又出现一个区别：注意力mask控制“能读什么”，损失mask控制“哪些预测计分”，二者不是一回事。",[71,191,194],{"href":192,"rel":193},"https://www.tensorflow.org/text/tutorials/transformer#set_up_the_loss_and_metrics",[75],"TensorFlow官方教程中的填充位置损失处理",[10,196,197],{},"资料如何采样也会改变训练信号。把同一份材料多抽几次，就让其中的模式在更新中占更大份量；一个长文档还可能贡献远多于短文档的有效位置。所以“收集了一万份文件”不足以说明模型实际学了多少、重点学了什么。",[20,199,201],{"id":200},"_7清洗和去重改变的不是文件整洁度","7．清洗和去重改变的不是文件整洁度",[10,203,204,205],{},"网页中可能混有导航菜单、乱码、重复页脚和自动拼接内容。若直接训练，模型也会为预测这些部分花计算。清洗要判断哪些材料值得占用训练预算，并通过实验检查筛选是否真的帮助目标能力。",[71,206,209],{"href":207,"rel":208},"https://arxiv.org/html/2406.17557v1#S3",[75],"FineWeb的数据构建研究",[10,211,212],{},"去重还涉及训练信号的权重。假设同一篇错误说明被转载一百次，不处理重复，就可能让它获得远大于另一篇说明的影响。一百个网址并不自动等于一百份独立证据。",[10,214,215,216],{},"完全相同的文件容易识别，换标题、改页脚的近重复文本则更难；还要留意长段落被许多文档共同复制。已有研究发现，去重可以减少模型复现训练原文，并降低训练集与测试集的重叠，帮助评价更可信。",[71,217,220],{"href":218,"rel":219},"https://arxiv.org/html/2107.06499v2",[75],"去重研究原论文",[10,222,223],{},"评测隔离同样重要。把一篇文章随机切成几段，再把相邻段分到训练集与测试集，可能留下近似内容甚至答案泄漏。应该按任务检查文档、来源与近重复关系，而不是只确认文件名不同。",[10,225,226],{},"过滤也有代价。只保留某一种书面风格，可能减少方言、特定社区表达或少见专业材料。质量没有一个适用于所有目的的简单开关；需要同时检查有效信息、多样性、来源合规与隐私风险，不能把“删得更多”直接等同“更好”。",[20,228,230],{"id":229},"_8真实预训练并非一锅不变的数据","8．真实预训练并非一锅不变的数据",[10,232,233,234],{},"Qwen团队的2025年Qwen3技术报告描述了三个预训练阶段：先用超过30万亿token进行通用训练；再用约5万亿token，提高STEM、代码、推理及合成数据的比例；最后进行长上下文训练，训练序列长度从4096提高到32768。",[71,235,238],{"href":236,"rel":237},"https://arxiv.org/html/2505.09388v1#S3.SS2",[75],"Qwen3预训练阶段",[10,240,241],{},"这些数字对应报告公开的训练口径，其中的近似数据不能当作精确加总。训练序列长度与产品在某些扩展方案下允许的最大输入长度，也不是同一个指标。",[10,243,244,245],{},"报告还说明，预训练资料包含合成的教材、问答、指令与代码片段。可见“预训练”不必等于只读未经组织的自然网页；某条资料长得像问答，也不足以单独判定它属于哪一训练阶段。",[71,246,249],{"href":247,"rel":248},"https://arxiv.org/html/2505.09388v1#S3.SS1",[75],"Qwen3的数据说明",[10,251,252],{},"更重要的是看目标和流程：本阶段在训练什么能力，用什么数据和损失，随后还有哪些后训练步骤。基础模型会接续文本，与它是否稳定遵循用户指令、是否知道何时拒答，是相连但不同的问题。",[20,254,256],{"id":255},"_9预测损失下降仍要单独检查任务","9．预测损失下降，仍要单独检查任务",[10,258,259],{},"做一个刻意构造的小实验：同一评估片段包含9个常见续写位置和1个关键答案位置。",[10,261,262],{},"模型A给常见位置的目标各分0.95，给关键目标分0.10；模型B分别给0.70与0.80。按十个位置等权平均，A的损失约0.2764，低于B的0.3433。",[10,264,265],{},"但如果只关心关键位置，B给目标的概率明显更高。A通过大量常见位置的优势，取得了更好的整体平均数。这不说明预测损失没有价值，而是说明它回答的问题与特定任务的验收问题不完全相同。",[10,267,268],{},[80,269],{"alt":270,"src":271},"10｜预训练：为什么接着预测能学到语言与任务：图3","/collections-assets/llm-to-agent-learning/1f5b04ff3ff3628e8289843eb90c2df774389f164d916004131d409efa6a1764.png",[10,273,274],{},"图3｜九个常见位置加一个关键位置，统一按十个位置等权平均。模型A平均损失更低，模型B给关键目标的概率更高。图中数字不能还原全部候选的排序，也不是完整任务成功率。",[10,276,277],{},"对数学题，可以换成没见过的数；对摘要，可以检查关键信息是否遗漏；对程序，可以运行测试。模型能复述一种方法、在熟悉格式里答对、在变化条件下稳定完成，是不同层级的证据。",[10,279,280],{},"语料中的谣言、过时知识和互相矛盾的说法，也都能成为预测目标。训练目标没有自带一个事实核查器；降低原文预测损失，不能保证以后说出的每句话真实。",[10,282,283,284],{},"最后别把这一章扩展成所有预训练的定义。BERT的代表性目标是从被遮盖或扰动的文本中恢复选中位置，它可以利用目标两侧的上下文，样本构造与本文不同。",[71,285,288],{"href":286,"rel":287},"https://arxiv.org/html/1810.04805v2#S3.SS1",[75],"BERT的预训练目标",[20,290,291],{"id":291},"本章练习",[293,294,295],"h3",{"id":295},"题目",[10,297,298],{},[299,300,301],"strong",{},"问题1｜对齐四个位置",[10,303,304],{},"输入〈始〉／小猫／喝／水各预测什么？为什么输入移位后仍需要因果mask？",[10,306,307],{},[299,308,309],{},"问题2｜追踪一次替换",[10,311,312],{},"固定参数，把原文第三个token“喝”改为“吃”。预测第二个目标的输出分布、目标标签、损失和后续位置分别可能怎样变？",[10,314,315],{},[299,316,317],{},"问题3｜核算训练目标",[10,319,320],{},"四个正确目标概率为0.5、0.25、0.8、0.5，求自然对数平均损失。若训练时第二处选词偏好“吃”，下一输入来自哪里？自由生成呢？",[10,322,323],{},[299,324,325],{},"问题4｜检查边界与证据",[10,327,328],{},"结束符是否自动阻止跨文档读取？仅凭聊天中接受一次纠正，能证明做过参数训练吗？分别说明还需要哪类依据。",[293,330,331],{"id":331},"思考提示",[10,333,334],{},[299,335,336],{},"提示1｜对应问题1",[10,338,339],{},"把第i个输入的输出与原文第i＋1个token对齐，检查答案还可能藏在哪一行。",[10,341,342],{},[299,343,344],{},"提示2｜对应问题2",[10,346,347],{},"先分开输入可见性与监督标签，再看能读到改动的位置。",[10,349,350],{},[299,351,352],{},"提示3｜对应问题3",[10,354,355],{},"逐项取负自然对数再平均；区分真实前缀与模型实际生成前缀。",[10,357,358],{},[299,359,360],{},"提示4｜对应问题4",[10,362,363],{},"一个问题关乎网络信息路径，另一个关乎是否发生参数更新。",[293,365,366],{"id":366},"参考答案与解析",[10,368,369],{},[299,370,371],{},"答案1｜对应问题1",[10,373,374],{},"目标依次为小猫／喝／水／〈终〉。例如“喝”仍在整张输入的第三行，若第二行可读它便会泄漏目标，所以各层还必须用因果mask；有正确mask时各训练位置可在同一层一起计算。",[10,376,377],{},[299,378,379],{},"答案2｜对应问题2",[10,381,382],{},"第二个预测位置只看〈始〉、小猫，故在参数与其他条件固定时输出分布不变。其目标由“喝”变为“吃”，若两者概率不同，损失随之改变。后续位置可读到第三行改动，因此分布可能改变；是否实际改变需看具体参数。",[10,384,385],{},[299,386,387],{},"答案3｜对应问题3",[10,389,390],{},"平均损失为［－ln0.5－ln0.25－ln0.8－ln0.5］÷4＝0.748933…，约0.7489。训练下一位置仍使用原文的“喝”，不用先选词；自由生成若实际选了“吃”，就以包含“吃”的前缀继续。teacher forcing在这里不指另一个模型。",[10,392,393],{},[299,394,395],{},"答案4｜对应问题4",[10,397,398],{},"结束符只表达文档边界，是否阻止跨文档读取要看注意力mask。聊天纠正可作为新上下文影响回答，不足以证明参数更新；需要实际的数据使用、训练与参数更新记录。两者都不能由界面看起来“懂了”来替代检查。",[20,400,401],{"id":401},"下一章",[10,403,404],{},"同一组参数从大量位置接收训练信号，容量和训练机会也都要花资源。下一章把参数量、训练token量与计算预算放在一张账上：预算固定时，模型更大为什么未必更好？",{"title":406,"searchDepth":407,"depth":407,"links":408},"",3,[409,411,412,413,414,415,416,417,418,419,424],{"id":22,"depth":410,"text":23},2,{"id":47,"depth":410,"text":48},{"id":89,"depth":410,"text":90},{"id":130,"depth":410,"text":131},{"id":146,"depth":410,"text":147},{"id":176,"depth":410,"text":177},{"id":200,"depth":410,"text":201},{"id":229,"depth":410,"text":230},{"id":255,"depth":410,"text":256},{"id":291,"depth":410,"text":291,"children":420},[421,422,423],{"id":295,"depth":407,"text":295},{"id":331,"depth":407,"text":331},{"id":366,"depth":407,"text":366},{"id":401,"depth":410,"text":401},"从信息表示和学习出发，用可核算的例子与白板图逐步理解大模型、后训练、推理和Agent系统。","md",{},true,"/column/llm-to-agent-learning/10",{"title":5,"description":425},"column/llm-to-agent-learning/10","N7weZ02f1_Aj7z126VNVfubd79cdOGTUaf-HNaSsdGQ",1791935828762]