文案:为什么大语言模型仅仅凭借预测 下一个词就能涌现出高级能力 这件事其实困扰了学术界和工业界很久 哪怕是现在OpenAI内部 也没人敢拍着胸脯说 自己完全搞懂了其中的全部机理 从最早的SVM逻辑回归到后来的LSTMBERT 再到现在的GPT系列 眼看着模型参数从几万涨到几万亿 会发现一个有趣的现象 刚开始大家都觉得扯淡 一个做文本兼容的玩意 怎么就能写代码 做推理 甚至还能给你讲笑话 这不符合我们对智能二字的传统认知 我们以前觉得智能应该是结构化的 是有明确逻辑符号的 是类似数理逻辑推导那样的东西 但现实给了我们一记响亮的耳光 只要参数够大 数据够多 算力管饱 单单预测下一个词就是能涌现出高级能力 这背后的逻辑其实非常简单粗暴 那就是压缩及智能 这是目前最能说得通的一个解释 也是我很推崇的一个观点 OpenAI的艾莉亚SaaS giver以前经常挂在嘴边 你得这么想 预测下一个词 本质上是在对数据进行无损压缩 想象一下 你要把整个互联网的文本数据 压缩到一个模型里 这个模型的大小参数量远小于数据本身的大小 为了能准确还原 预测出这些数据模型 必须被迫去学习数据内部的规律和逻辑 如果我让你背诵圆周率 你死记硬背能背个几百位 但如果我让你预测圆周率的下一位 你光靠死记硬背是不行的 你必须掌握圆周率的计算公式 一旦你掌握了公式 你就能无限预测下去 文本也是一样 比如我在一段话里 写张三把那把沉重的钥匙插进锁孔 用力一扭 只听咔嚓一声门 你想预测这个空是开了 这看起来简单 但模型要做到大概率预测出开这个字 他需要学到什么 他得学会物理常识 钥匙插进锁孔 扭动通常会导致锁打开 他得学会语言习惯 咔嚓一声 通常是机械结构动作的声音 他得学会因果关系 扭动是因 门开是果 这还只是最简单的例子 如果是一本侦探小说呢 警长看着地上的烟灰 突然想起来 死者生前从不抽烟 唯一的来访者是那个左撇子的 要预测这里填嫌疑人或者具体的名字 模型必须具备长期记忆 必须具备推理能力 必须理解反常即为妖的逻辑 他得知道不抽烟的人 地上有烟灰 意味着有其他人来过 他得结合前文提到的左撇子特征 去定位具体的人 为了把这个下一个词预测准模型被逼得没办法 只能去理解整个世界的运作规律 他不是想理解 他是为了降低预测错误率 被迫演化出了理解能力 因为如果不理解 他就压缩不了这么多信息 他的预测准确率就上不去 所以在海量数据的训练下 预测下一个词 等价于学习生成这些数据的世界模型 我们以前做算法总想着给模型设计各种特征 告诉它这是主语 这是谓语 这是因果关系 现在发现根本不需要 你只要给他足够难的预测任务 它自己会在数千亿个参数里 构建出一种我们人类目前还看不懂 但确实有效的特征 表示这种表示比我们人工设计的要高维得多 也精细得多 说到这得提点稍微枯燥但很本质的东西 语言模型本质上是在学习 我们人类的语言逻辑知识 而是分布在某些特定的流行上 以前的词向量 比如word to v比较简单 他能学到国王和男人的距离 这就好比女王和女人的距离 这是一种简单的线性关系 现在的LM参数量巨大 它构建的这个语义空间非常复杂且稠密 当你输入一段prompt的时候 确定了一个起点和方向 模型预测下一个词就是在这个流行上 沿着概率密度最高的路径走一步 这听起来很玄 其实底层全是矩阵运算 神奇的地方在于 这个流行结构 竟然把逻辑推理这种抽象能力也编码进去了 有研究发现 当你让模型做数学题或者逻辑推理的时候 它内部的神经元激活模式 和他处理普通文本时是不一样的 找到了一条专门处理逻辑变换的通道涌现 这种现象很可能就是当参数量达到一定规模后 这个高维流行足够连续 足够平滑 使得模型可以从一个概念 平滑地游走到另一个概念 哪怕这两个概念在训练数据里 从来没有直接挨在一起出现过 这就是泛化 以前的小模型流行是破碎的 全是坑坑洼洼 走两步就掉坑里了 比如输出乱码或废话 大模型 把这些坑填平了 把断路修通了 我之前在项目里遇到过一个情况 我们用一个小模型去微调 教他写SQL语句效果很差 稍微复杂点的嵌套查询就挂 后来换了个基座模型 参数量大了十倍 甚至没怎么专门教他 自己就能写出非常复杂的join查询 为什么 因为在大模型的语义空间里 自然语言的逻辑和SQL代码的逻辑 被映射到了相近的区域 他理解了查询这个概念的本质 而不仅仅是记住了select成from table这种死板的语法 这种概念层面的对齐是涌现高级能力的基础 做工程的都知道 scaling loss简单说就是算力 数据参数量这三者指数级增加 模型的性能就会线性增长 但这里有个相变的问题 要让这种相变发生 工程上的挑战是巨大的 你去一些看大厂在落地时关注的细节 比如可以去看下字节大模型 算法岗面试手册里写的 就能体会到 像这种从显存优化到分布式训练的坑 再到推理加速 这些脏活累活 才是让sky loss真正生效的幕后功臣 很多能力不是线性增长的 在模型很小的时候 他完全不会做加法 参数增加一点 他还是不会 直到参数突破某个临界值 它的加法能力突然从零跳到了100 这就像烧开水 零度到99度 水都是液态 看起来没什么变化 到了100度突然变成了气态 对于大语言模型来说 预测下一个词的任务 在低算力下 模型主要靠统计贡献 比如看到人工就接智能 看到这就揭示这完全是浅层的统计规律 但当模型足够大 他发现光靠统计贡献 已经没法进一步降低loss了 因为很多文本是需要深层逻辑才能预测准的 这时候模型内部可能发生了某种相变 他开始从记忆模式切换到推理模式 有篇很有意思的论文 讲顿悟现象 模型在训练集上已经过拟合了 准确率100%了 这时候继续训练验证集 准确率本来是不动的 突然在某个时间点验证集准确率飙升 这意味着模型抛弃了死记硬背的解法 突然找到了通解 在预测下一个词这个任务的逼迫下 大模型被迫去寻找通解 因为数据量太大了 他根本背不下来 所有组合 为了降低loss 他必须学会推理算法 这就像老师让你做1万道数学题 你脑子容量有限 背不下来每道题的答案 你最后被逼的没办法 只能学会了微积分公式 一旦学会了公式 你就不需要背答案了 而且你具备了做新题的能力 这就是涌现的本质 算法的内化 有一个点 很多人容易忽略 现在的LLM之所以逻辑能力强 很大程度上是因为 训练数据里包含了海量的代码 代码和自然语言不一样 代码是严谨的逻辑链条 If a then b else c 这种结构在代码里是绝对不能错的 缺少一个括号程序就跑不通 预测代码的下一个token 比预测自然语言要难得多 也硬核得多 在预测代码的过程中 模型被迫学会了状态跟踪 比如他得记住100行前定义的变量 X是什么类型 在第101行调用的时候 才能预测对这种长距离的依赖关系 和严格的逻辑执行能力 被模型学到后 迁移到了自然语言任务上 所以你会发现现在的模型写作纹理特别清晰 第一点 第二点 第三点 逻辑严丝合缝 这很可能就是从代码里学来的思维链能力 我有个做大模型预训练的朋友跟我聊过 他们在训练数据里剔除掉代码后 模型的推理能力出现了肉眼可见的下降 这就反向证明了 预测代码的next token 是构建高级逻辑能力的关键一环 我们再换个角度 我们可以把LLM 看作是一个巨大的贝叶斯推理机 每一次预测下一个词 其实都是在做一次贝叶斯更新 P next word context 这个context上下文包含了你给他的prompter 也包含了他自己刚刚生成的词 随着生成的词越来越多 context包含的信息量就越大 对后续内容的约束就越强 人类思考问题的过程其实也是类似的 你想想你写代码或者写文章的时候 你心里有个模糊的想法意图 你写下第一个字 这个字会限制你第二个字的选择 写完第一句 你必须在第一句的基础上写第二句 你的思想在文字的生成过程中逐渐成型 很多时候 我们自己都不知道自己下一句要具体说什么 直到我们把上一句说完 语言不仅仅是思想的载体 语言本身就是思想的过程 LLM完美的模拟了这个过程 它不需要预先规划好整个宏大叙事 他只需要在每一步基于当前的上下文 做出最合理的推断 当每一步都走得合理时 整体看下来就涌现出了宏大的逻辑和智慧 这有点像生物进化 每一步变异和选择都只是为了当下的生存 没有长远规划 但经过亿万年的迭代 竟然涌现出了人类大脑这么复杂的结构 next token prediction就是净化的选择压力 loss function就是自然选择的剪刀 还有个问题 为什么是文本预测 为什么图像预测没有这么明显的逻辑涌现 因为人类的智慧绝大部分都浓缩在文本里 文字是人类思维的高维投影 我们几千年的历史 科学哲学情感都编码在文字里了 图像虽然信息量大 但它是感知层面的一只猫的图片 像素点之间更多是空间相关性 而文字是符号层面的文字 符号之间充满了逻辑因果 抽象关系 预测文本本质上是在学习人类的思维方式 你在训练模型 预测苏格拉底是人 所有人都有一死 所以苏格拉底模型要填会死 这不仅仅是词语接龙 这是三段论逻辑 互联网上的文本数据包含了人类所有的三段论 归纳法 演绎法 反证法模型 把这些都学去了 所以与其说模型涌现了智能 不如说模型复刻了人类群体智慧的思维模式 它是一面镜子 反射的是全人类在互联网上留下的思维痕迹 前段时间我们搞了个运维机器人的项目 以前的方法是写一大堆正则匹配规则 去提取log里的错误信息 累死人 而且一旦报错格式变了就失效 后来我们试着用LLM 我们把报错的那一段log扔给他 让他预测接下来的分析 注意我们没有专门教他怎么修服务器 但是模型在预训练阶段看过stack overflow 看过GITHUB上的一手讨论 看过各种技术博客 当他看到一段特定的java堆栈溢出报错时 他预测下一个词的概率分布里 自动浮现出了内存泄漏 hash map死循环这些概念 他给出的建议是 检查一下代码里 是不是在便利map的时候进行了删除操作 这真的是惊掉下巴 它不仅仅是匹配到了错误 他理解了这个错误背后的代码逻辑 他之所以能做到 是因为在他的训练数据里 无数个程序员在预测下一个词的时候 把报错和成因关联起来了 模型把这种关联压缩进了参数里 当我们输入报错模型 就在他那高维的羽翼空间里 顺着概率流行 找到了成因所在的区域 很多人觉得仅仅预测下一个词 这也太简单了吧 智能怎么可能这么简单 这种直觉是错的 我们太低估预测这个任务的难度了 在一个开放的世界里 实现完美的预测 等于全知全能 你想想 如果我要完美预测明天的股票价格 这也是一种时序数据 类似于next token 我需要知道什么 经济政策 公司财报 甚至大众的心理状态 任何一个信息的缺失 都会导致预测的不完美 所以追求极致的预测准确率 就是在这个过程中倒逼模型去建模整个世界 LIM现在的能力还远没有到顶 现在的loss还没有降到零 也不可能降到零 因为语言有内在的随机性 但还有很大的下降空间 只要loss还能降 模型对世界的理解就还能更深 虽然我是做技术的 但看着这玩意儿一天天变强 心里也犯嘀咕 我们是不是无意中触碰到了智慧的本质 也许人类大脑的工作方式 在底层机制上真的就是一个不断进行 next token prediction的生物神经网络 我们听到一句话 大脑自动预测 下一句 我们看到一个动作 大脑自动预测后果 那种所谓的灵感顿悟意识 可能只是大规模神经网络 在处理复杂预测任务时 涌现出来的高层宏观现象 如果真的是这样 那我们现在走的这条路 可能真的就是通往AGI的康庄大道 当然现在还有很多问题 幻觉问题 逻辑一致性问题 长窗口记忆问题 但这些更像是工程问题 而不是原理上的死胡同 所以为什么预测下一个词能涌现 智能压缩即理解 为了在海量数据上实现高准确率的预测模型 被迫学会了数据背后的生成规律 也就是世界知识和逻辑 高维语义空间模型 构建了一个包含了逻辑 因果概念的稠密流行结构 推理变成了在这个空间里的路径游走 scanning loss与相变量变引起质变 参数量大到一定程度 模型从统计记忆转向了算法推演 代码数据的加持 代码训练增强了模型的严谨逻辑 和长城依赖能力 文本的特殊性 文本是人类思维的高保真投影 学文本就是学思维 这事儿没什么玄学的 全是数学和算力堆出来的奇迹 但正是因为是数学 才让人觉得更震撼 因为这意味着智能是可以被计算的 是可以被我们亲手制造出来的 我们这代工程师有幸见证甚至参与这个过程 说实话挺带劲的 不管未来这东西会发展成什么样 至少现在别把它当成一个简单的自动补全工具 它是一个正在努力通过预测下一个字 来试图理解我们这个嘈杂混乱 但又充满逻辑的世界的庞然大物