Some Thoughts on Multimodal LLMs

对话张祥雨

1. TL;DR

  • 2015年 ResNet 出来之后, CV 的模型 scaling 问题基本解决, 此时监督数据逐渐成为瓶颈, 于是开始尝试通过无监督方法进行 data scaling
  • 2020年前后的 CV 自监督方法, 如 Contrastive Learning 和 MIM 方法, 充其量只是学到了某种不变性, 本质上是 hand-crafted 的特性, 并不是 data-driven
  • CV 本身生成、理解和人类对齐并不是闭环, NLP 领域这三者是闭环
  • 用互联网海量的图文交错混排数据做训练, 图文理解表现优秀, 但是生成理解一体化还是做不到, 理解对生成控制比较弱
  • NTP 的机制决定了随着模型增大, 大模型在数学这种比较局限的推理能力, 其实是先上升然后饱和, 模型进一步扩大反而效果下降, 类似开口向下的抛物线
  • o1 的反思机制是一个 CoT 的 CoT, 即 Meta CoT, 打破了传统落子无悔的范式约束
  • o3 的多模态推理告诉我们, 多模态推理的 pattern 需要在预训练语料中见过, 才能通过 rule-base RL 激发出更强的泛化能力
  • 多模态领域的 GPT 时刻, 即多模态生成理解一体化, 可能会在1年内到来
  • 如果类比人脑的记忆机制, long context 可能并不是必须的, 多个 agent 组合也能同样做端到端训练
  • 真正的第三代智能 agent 是指拥有内生的驱动力, 能自发的和环境交互, 即自主学习, 并且能从自然语言中获得反馈
  • 当前应用类的 agent 实际本质上还是只是第二代智能体 reasoner, 真正的 agent 第三代智能体可能在未来2年内出现

2. 从早期 CV 的 Scaling 聊起

用现在的观点看, scaling 包括了算力 scaling、数据 scaling 和模型 scaling:

  • 算力 scaling, 不是瓶颈。2006年 CUDA 推出, 经过几年生态发展, 算力相对而言是足够的
  • 数据 scaling, 不是瓶颈。2009年的时候李飞飞推出了百万量级的 ImageNet 图片分类数据集, 数据量相对也是足够的
  • 模型 scaling, 是瓶颈。2013年 AlexNet 出来, 把神经网络从以前的几 M 扩增到700M, 效果立即显现出来, 但如何进一步往上 scale 成了问题

祥雨博士期间研究方向正好是模型 scaling 问题:

  • 分辨率 scaling: 有算力和数据则相对容易解决
  • 宽度 scaling: 训练梯度消散问题, 用 MSRA init 能相对好的解决这个问题
  • 深度 scaling: 训练梯度消散问题, ResNet 的出现比较漂亮的解决了这个问题

单个模型的 scaling 问题解决了, 祥雨来到了旷视, 由于业务有大量边缘端场景, 所以研究重点转到了小模型下的结构探索问题, 开坑 NAS (Neural Architecture Search) 方向。2019年提出了 SPOS (Single Path One-Shot) 方法, 需要一个超大的 supernet, 此时模型变大了很多, 发现数据重新变成了瓶颈。

3. CV 自监督阴云密布

  • 2018年 NLP 领域发生了范式上的突破, 就是出现了 BERT, 即用无监督方式在海量语料上做预训练, 然后下游任务 finetune
  • 对大尺度的 CV 模型而言, 数据重新变成了瓶颈, 并且短期内很难获得大量高质量的带标签数据, 因此眼光转向了无监督的训练方法
  • 2019年上半年 google 提出了 UDA 方法 (Unsupervised Data Augmentation for Consistency Training)
  • UDA 它没有使用传统的高斯噪声、dropout 噪声或简单的仿射变换作为扰动, 而是使用了监督学习中最先进的数据增强方法(如图像的 RandAugment 和文本的回译)来生成更真实、多样化的噪声。这种方法在相同的一致性训练框架下, 为六种语言任务和三种视觉任务带来了显著改进
  • 2019年下半年, 更多的工作如 MoCo 和 SimCLR 等, 都在对比学习(Contrastive Learning)方向做了深入的探索。
  • 当时 CV 界就在想, 对比学习是否为 CV 的 BERT 时刻了, 但实际效果发现小模型比较 work, 一旦模型变大效果就很一般
  • 然后到了2020年, ViT 成功把 transformer 结构整合到了 CV 任务上, 此时大家无监督的研究热情又激发起来了
  • 有的照着 GPT 提出了 iGPT, 有的照着 BERT 提出了 BEiT, 还有以恺明的 MAE 为代表的 MIM (Masked Image Modeling)方法
  • 在图像分类任务上, 以上这些无监督预训练+下游 finetune 的方法, 从所未有的逼近全监督训练的 baseline 方法
  • 但祥雨对此是谨慎乐观的, 因为这些方法都只在小模型上 work, 模型 scale up 之后, 效果就大打折扣
  • 经过深入的研究发现, Contrastive Learning 和 MIM 方法充其量只是学到了某种不变性, 本质上是 hand-crafted 的特性, 并不是 data-driven
  • Contrastive Learning 中依赖用 augmentation 构造正负样本, 负样本起的作用是 regularizer, 鼓励最大熵, 防止信息坍缩。分子其实是在学习一种不变性, 这个不是数据赋予, 而是人为设计的 augmentation 赋予
  • MIM(Masked Image Modeling)本质上学的是遮挡不变性, 例如一个水瓶被挡住, 只露个头, 模型能识别出他是个瓶子。这种遮挡不变性, 在模型变大或者数据量变多的时候, 并没有新的知识, 也就是没有 scale up 特性

4. 生成、理解和人类对齐

  • 2022年祥雨看到了 Jason Wei 关于思维链和涌现的两篇文章《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》和《Emergent Abilities of Large Language Models》, 大受震撼。觉得 CV 还在研究基础表征问题, NLP 已经在研究逻辑推理的智能特性了。
  • 对此开始反思 CV 和 NLP 的差别, 发现核心点为在 NLP 里面生成、理解和人类对齐是天然一体的, 是自闭环的, 但是在 CV 里面是相互分离的。
  • 先说 NLP

    • GPT 的 decoder-only 本来就是生成架构, 所以天生是生成模型
    • GPT 的输出依赖前面已经生成的序列, 如果序列发生了修改, 例如插入了用户的问题等, 后面的输出也随之改变, 这个是理解的过程
    • 最后训练 GPT 的语料都是来自人类语言, 因此天然跟人类对齐
  • 再看回 CV

    • 一张静态图片, 最充分利用数据集信息的建模方式是把每个像素的联合概率分布给求出来, 这个是生成部分
    • 但这个建模方式本身是很多选择的, 并没有额外的信息让这种方式必须符合人的理解。人类理解这张图片的信息并不蕴含在图片里面, 图片是大自然的产物
    • 换句话说, 如果外星人或者机器人来, 看到一个被遮挡的杯子, 推断出这是个杯子的方法不一定是遮挡不变性。遮挡不变性这个不是图片本身蕴含的信息, 而是 MIM 这类方法训练过程引入的先验
    • 既然 CV 本身生成、理解和人类对齐并不是闭环, 那是否能借助语言这个拐杖, 来实现视觉领域的智能的, 于是发力重点为视觉和语言的对齐研究上。

5. 多模态生成理解一体化

  • 视觉与语言的对齐, 思路就是用互联网海量的图文交错混排数据做训练, Step-1V 模型就是沿用这种方法得到的
  • 具体来说, 文字和图片分别做 tokenizer, 然后全部当做无监督语料, 遇到图片则预测图片 token, 遇到文字则预测文字 token。这个是在预训练阶段就开始, 而同时期其他方法不同, 其他方法一般都是训练完语言模型之后, 再把其他的模态通过后训练对齐的方法植入
  • 为了进一步实现生成和理解的一体化, 在返回到像素空间的时候, 外挂了一个预训练好的 diffusion 模块
  • 最后发现 Step-1V 的图像和文字的相容性很好。例如把字写到图片上, 直接问关于这些文字的问题, 和先把文字通过 OCR 识别出来后提问效果一样好。这说明模型已经完全能够自由地利用文字和图像这两个模态的信息进行思考。
  • 但是 Step-1V 有个明显短板, 就是图片生成比较差。同时做实验发现如果训练中途去掉生成模块, 对最后的理解部分收敛几乎没有影响。而同时期的 Gemini 1.0也没能做到理解和生成架构统一, GPT4V 也是外挂 DALL-E 实现的图片生成。
  • 祥雨一直在尝试把生成和理解做在一起, 思路是生成和理解交叉相互迭代。具体来说, 视觉生成模型训练需要图片和文字 pair, 其中文字可以用新的理解模型打标, 然后可以得到新的生成模型;然后把这个新的生成模型接入理解模型来一起训练, 得到更好的理解模型。以此类推, 是否可能到了中间某一步两个 domain 的 gap 会越来越小呢。
  • 很遗憾最终1+1没有大于2

    • 生成模块对理解模块完全没有作用, 正向和负向作用都没有, 去掉生成模块完全不影响理解模块
    • 理解模块对生成模块的控制作用很弱。例如生成模块产生肢体畸变或者违反几何约束, 并且把这样的图片直接送给理解模型, 它能够准确地告诉这个东西是不符合常识的

6. Next Token Prediction 有 Bug

  • Step-2是个野心勃勃的计划, 参数上万亿, 激活参数200B, 同时训练数据也等比例变多, 因此整体的算力复杂度跟 Step-1相比是平方关系
  • 这么大的语言模型, 经过前后9个月的炼制, 却发现有明显的偏科。文科非常好, 例如写作能力;但是理科出奇的差, 例如数学推理能力, 甚至不如7B 的模型。
  • 为了寻找原因, 后续补齐了1B, 7B, 30B 再到70B 的消融实验。首先排除了数据质量问题, 并且发现模型通用对话能力, 尤其是情商和知识量, 确实模型越大效果越好;但模型推理能力, 尤其是数学这种比较局限的推理能力, 其实是先上升然后饱和, 模型进一步扩大反而效果下降, 类似开口向下的抛物线
  • 对于这个模型越大, 数学推理能力先升后降的怪现象, 祥雨展开了细致的研究, 最后竟然矛头直指 NTP(Next Token Prediction)机制
  • 首先数学推理问题是需要比较长推导过程, 一步步演算, 如果其中有一步错了, 那么最后往往就错了。大模型之所以表现差, 直接原因是过度自信, 有时候解体省略中间过程, 一口爆出最终结果, 但较高概率是错的;反观小模型, 比较谦逊老实, 一步步推导, 反而不容易失误
  • 那造成大模型这种表现的本质原因是什么, 其实是 NTP 的信息压缩机制使然。举个思想实验, 假设是十几个数字相加的计算题, 50%的数据来自互联网, 绝大都是直接给出答案的; 另外有50%是精心挑选的样本, 包含详细计算过程。这两种分布形成了截然不同的两个峰, 而 NTP 的过程就是驱动模型尽可能同时拟合这两个分布
  • 对于小模型, 因为脑容量有限, 所以它只能拟合右边包含详细计算过程的分布。因此表现就很老实, 几乎不会一口爆出答案
  • 对于大模型, 因为脑容量比较大, 除了右边分布外, 还能部分拟合左边分布, 但不完美。因此会出现过度自信的一口爆的情况
  • 具体到 Step-2的模型, 200B 的激活参数, 十几位的加法, 90%一口爆能得到正确结果, 但是还有10%就是过度自信的错误结果
  • 推广到更难的数学题, 往往需要较长的演算过程, 大模型偷懒就不老老实实算, 中间有一步取巧跳过了, 一旦错了就会谬之千里
  • 其实 NTP 在业界大家对它的批评也很多了, 因为它本质是个 behavior cloning, 天生容易 OOD, 容易在中间出现分叉, 陷入了一个他没见过的环境, 很多幻觉是这样产生的。

7. o1 的反思机制

  • 解决上述 NTP 问题的方法就是引入 rule-base RL 的损失函数, 因为 rule-base RL 是不管中间过程的, 不会跟 NTP 一样要求每一个 token 都跟训练集一样, rule-base RL 只关心最终结果对不对
  • 在 rule-base RL 的引导下, 大模型和小模型就一视同仁了。大模型不是喜欢跳步嘛, 但它只要跳步它就会降低遇到正确答案的概率, 因此大模型跳步的问题就缓解了。模型越大, 加上 rule-base RL 效果提升越好, 原因是 baseline 起点更低。
  • 但很快又发现, 对于某些问题, 加上 rule-base RL 后依然就是做不对, 这种本质难的问题, 在 o1出来之后却提升巨大, o1是怎么做到的呢?
  • o1的秘密武器就是反思机制, 这是一种新的 pattern, 对于 RL 来说, 业内开玩笑的说法是 pattern is all you need。好的 pattern 的就是科学的思维链组织方式, 然后用 RL 算法激发一下, 就能得到不错的效果。这里的 RL 算法可以是 PPO、GRPO, 甚至 REINFORCE++, 其实差别不太大。
  • 为什么反思机制就能大幅提高复杂逻辑问题的求解正确率呢?这里本质上是所谓 Meta CoT 在发挥作用。
  • 先说说大语言模型的 CoT, 其实别看输出 token 噼里啪啦, 大部分的输出概率是非常高的, 只有个别 critical token 需要谨慎决策。比如4k-5k 的 CoT, 真正 critical token 只有10个左右。所以随机 roll 的时候, 有一定概率能蒙对。
  • 但基础版 CoT 有个问题, 就是"落子无悔", 也就是只能闷着头往前走, 一旦发现错了, 是没有机制回头的。而 o1的 CoT, 是可以输出到一半, 反思前面的输出, 悔棋推倒再来。也就是可以在各种 CoT 里面切换, 所谓的 meta CoT
  • 那能否训练 LLM, 让它硬做对每个 critical token 呢?答案是否定的。原因是 transformer 每次 forward 的计算复杂度就是 O(N), 也就是每步思考的 complexity 是有上限的。对于足够复杂的数学的问题, 他是无法根据这个题目以及前面一些浅显的推导就立刻决定中间某一步该往那个分支去走的。也就说他的当前 decision 的 complexity 已经远超了就单个 token 所能干的事情的上限。
  • 那人类是怎么解决类似问题的呢?其实很多数学问题, 都依赖一些巧妙的构造, 比如说算到最后一步, 刚好某一个未知数被消掉, 这道题就可解。如果消不掉, 那么得换个构造方法。人类在算完之前, 也根本不知道这条路是否行得通。
  • 所以总结一下 o1的反思机制, 就是遇到了 critical token, 不知道往左还是往右的时候, 随机选一个分支, 当意识到没选对的时候, 有反向边可以连回来, 进入另外一个分支。
  • 理解了 o1的反思机制为什么能解决更复杂的数学问题之后, 剩下就是回答为什么 o1能学出来, 其同时期他模型却没有学出来?
  • 这里数据起了关键作用, OpenAI 使用的数据中就蕴含了这类反思数据。国外的 mathoverflow 这些网站, 高赞的答主都会把所有思考过程展示出来, 可能推导着一半卡壳了, 然后过一阵发现忽略了某个因素, 加入之后能走通了;而国内的高赞答主特别喜欢用"注意到"这类词, 把脚手架都拆掉了。

8. o3 的多模态推理

  • 在理解了 o1的反思机制之后, 祥雨尝试把反思机制迁移到纯视觉上, 进行视觉空间慢思考的尝试, 即视觉推理。
  • 具体来说, 设置若干必须在图像空间推理才能解决的问题, 比如走迷宫、钟表读数、数物体、问表格中的字母在第几行第几列等。这类问题的特点是对人类很简单, 但也没有简单到一口就直接输出的地步。
  • 同时参考了人类求解这些问题的方法, 就是在图上圈点标注, 例如走迷宫会画线, 碰壁了再回来;数物体会把数过的物体画圈标记等。允许多模态模型做圈点标注, 例如走迷宫的话, 就是第一张图片走一次, 第二张图片再走一次。生成了大量的上述任务的数据。
  • 但结果比较遗憾, 在人工合成的任务上确实学会了, 但是几乎没有泛化能力, 例如走迷宫的只会走迷宫, 不会钟表读数。
  • 此时 OpenAI 的 o3出现了, 支持多模态下的 CoT, 虽然只支持简单的图像操作编辑, 例如 crop 和 resize 等, 但泛化能力非常好。同时 o3虽然没法解走迷宫问题, 操作空间相对受限, 但是在它自己支持的操作空间内, 求解的效果比祥雨人造数据视觉推理得到的模型要强不少。
  • 经过了深入的探究, 最终答案终于浮出水面, 原来人为设计的 pattern 不能空穴来风, 得在预训练模型里面确实见过才可以
  • o3的训练语料里面, 包含了电子维修网站的数据。例如有人收音机坏了然后上传了一张电路板图片, 然后有答主就让他把某个局部放大, 发现某个电容烧了, 然后又转移到另外一个地方, 发现元件坏了之类的。
  • 这类 pattern 受限要在预训练过程中见过, 然后再用 RL 来强化和激发出这种 pattern。预训练语料中虽然很稀疏, 但是到处都有这种 pattern 的散布, 他就顺带着他把跟这些语料相连的非常广大的这些领域都给激发出来了, 就融会贯通。这个就是 o3的图像编辑操作泛化能力比较强的原因。
  • 反观圈点批注这类人工合成的数据, 在预训练中没有就过类似 pattern 的数据, 所以激发不出来, 泛化性有限
  • 理解到这一层, 那后续多模态推理至少有三条路

    • 一条是不扩大动作空间, 但是遵循"pattern 在预训练数据中要出现"的原则。在预训练语料里面扩增数据类型, 例如教学视频。里面包含了激光笔和每一步的拆解, 但是如何高效清洗出这些数据是个棘手问题
    • 另一条就是限制 domain, 只做能一口爆任务, 让模型先有单步推理能力。例如给个几何图, 要求连接其中 A 和 B 两个端点;或者给个编辑任务, 能在任意背景下完成任务。但这个要求数据纯度比较高, 尤其是互联网的数据要仔细清理。Step1X-Edit 是该思路下的模型, 效果还可以。做好了一口爆, 再搭积木一样解决更难的视觉推理问题。
    • 还有一条是扩大动作空间, 扩展出更多类似 crop+resize 的能力, 这个难度比较大, 需要更多数据
  • GPT4o 理解对生成的控制效果还是不错的, 具体怎么做的不知道, 小 A 觉得可能是沿着上述路径3继续深耕, 多模态推理更强了之后, 再和生成一体了
  • 祥雨认为多模态领域的 GPT 时刻, 即多模态生成理解一体化, 可能会在1年内到来

9. Long Context 真的必要吗?

  • 人类的记忆系统, 有三种记忆体:

    • 短期记忆, 也叫 working memory。大致2-4秒, 例如记电话号码, 是可以保证无损的
    • 中期记忆: 几秒到几个星期不等
    • 长期记忆, 海马体记忆。反复刺激的记忆会逐渐进入海马体成为长期记忆。按神经网络类比, 就是固化成了权重
  • 如果按码率计算, 视觉信号2-4秒, 大约换算成30-40k token。跟当前 long context 动辄100k 甚至1M token 相比, 少1个量级以上。因此从人脑的原理出发, 短期记忆就能完成的任务, 128k 长下文完全够了
  • 当前 AI 应用追求1M 以上的 long context, 仅仅是因为很方便把信息一次性灌入。尤其是当要做 retrival 任务的时候, 例如大海捞针, 那需要足够的长下文容纳全量信息, 一点都不能忘。
  • 但其实过长的 long context 并不会促进智能压缩, 而是导致死记硬背。先不说计算量大幅度增加完全不 scalable, 实际模型效果上也会变差, 原因是 context 干扰。例如一张数学卷, 一种是做一题清空然后做下一题, 另外一种是一口气全部做完。第二种效果要远远差于第一种效果。这就是注意力涣散问题, 因为有太多相似的 context 在他这个上下文里没有清空。
  • 由于现在有 function call 和 RAG, 无限长 context 任务其实可以用多个模型联合完成。类比人类看完一本书找查找相关信息, 都是先大致有印象在哪一章, 然后再重新去翻阅, 人类是有 context 转移特性的。
  • 具体来说, 可以构造两个 LLM, 一个是固定长度的普通 transformer, 一个是无限长的 linear tranformer。类似脑区分工, 第一个负责 plan, 第二个负责 action。plan 模型负责规划, 到了具体分支执行了, 把 context 传入给第二个模型, 得到结果后返回到 plan 模型。这样原来 CoT 成千上万的结点, plan 模型只需要存储从根节点到叶子结点的路径信息, 即 high-level 架构信息, 复杂度变成 log 级别; action 模型不需要记忆历史信息, 只需要执行当前结点任务
  • 上述架构可能会被认为是拼 agent, 比不过端到端。但是其实这个也能端到端训练, 因为在 CoT RL 的训练范式下, 只关注最终结果对不对。两个 agent 可以自行 communicate, 选择是否清空缓存, 反正长度限制摆在这里。

10. 自主学习 (在线学习)

  • 其实从今天大模型的演进来说, 你会就很明显地发现就真正的核心的驱动力是两根轴, 横轴是底层算法, 纵轴是模态。

    • 自然语言模态下, 算法轴从原点出发, 首先出现了 NTP 范式, 这个范式很快被迁移到视觉模态下。
    • NTP 范式能解决多模态一部分问题, 但还是有一部分无法解决。久而久之大家就怀疑 NTP 范式是否真的 work, 然后推动了自然语言新范式 CoT RL 的产生
    • CoT RL 新范式又被迁移到视觉模态下, 开启新一轮循环
    • 因此两个轴的关系是螺旋上升
  • OpenAI 有五级智能理论, 当前经历了 chatbot 和 reasoner, 正在朝着 agent 迈进。reasoner 的训练范式是 CoT rule-base RL, 这里的 reward 还是来自外部的, 不是内生的。开玩笑的说法就是带着 KPI 在训练, 但人做每件事并不是都有 KPI 的。
  • 因此当前 CoT rule-base RL 的局限性就是数据没法 scale, 例如编程问题一个 project 你得搭一个环境, 整一套 docker, 然后测试数据配套给出, 才能得到一个训练 sample。
  • 因此真正的第三代智能 agent 是指拥有内生的驱动力, 能自发的和环境交互, 即自主学习, 并且能从自然语言中获得反馈。
  • LangChain 本质上是第一代智能体 chatbot 的延伸, 因为 pipeline 是人工设计的, 大家通过 prompt engineering 把流程串起来。
  • 当前应用类的 agent 实际本质上还是只是第二代智能体 reasoner, 这个调用过程不是 prompt 激发, 是 RL 激发, 调用与不调用是智能体自己说了算, 只要最大化定义的 RL 奖励即可。但注意这里还是有外部环境的 reward 为前提, 这个就不满足第三代智能体自主学习的要求了
  • 祥雨认为未来2年内可能第三代智能体能出现