跳到主要内容
赞助推荐 Claude Team 合租,少折腾账号
AI 大模型 #MIT《How to AI (Almost) Anything》:多模态 AI 逐讲精读

数据稀缺的模态,要靠别的模态来养

16 分钟阅读阅读(139)
#MIT《How to AI (Almost) Anything》:多模态 AI 逐讲精读
赞助推荐 团队协作里的 AI 办公工作台

做机器人的人都熟悉一种处境:你想训一个新传感器上的模型,真实数据只有几千条,但同一个场景下,摄像头数据有几百万条、激光雷达数据有几千万条。你眼睁睁看着隔壁模态躺着金山,自己手里却只有沙子。

这不是你一个人的问题。医疗数据、生理传感器、嗅觉信号、罕见行为标注,几乎所有”非主流模态”都长这样:任务很真,数据很穷。Paul Liang 在这节课里讲的”跨模态迁移”,就是给这类穷人指一条活路:让富数据模态当老师,把它学到的东西折算成你这条穷模态能用的能力

赞助推荐 一人公司 · 创业装备库
赞助推荐 一人公司 · 创业装备库

这是 MIT《How to AI (Almost) Anything》的第 8 讲(原视频),主题是 跨模态迁移。

这一讲的总判断:跨模态迁移吃的是”冗余”

Paul 整节课讲了三套方法,听上去技术细节差得很远,但最后他在收尾时点了一句最值钱的话:所有这些方法,前提都是两个模态之间有冗余信息(redundancy),而你关心的任务,恰好落在这块冗余里。

冗余在这里不是贬义。它指的是两个模态描述了同一件事的一部分,像两张地图覆盖到同一片区域。冗余越大,跨模态迁移越好做。如果你的两个模态各说各话,完全没有重叠,所有”借东风”的招数都失效。

这句话听一遍轻飘飘,放到工程里却是个非常硬的判断。它直接决定你该不该做跨模态迁移、能从哪条模态借到东西借多少才会饱和。后面 Paul 讲的三套方法,迁移学习、协同学习(co-learning)、模型归纳(model induction),其实是这条判断的三种工程化形态。

第一套:把”预训练-微调”做到多模态尺度

第一种思路最熟,就是大家天天用的预训练加微调。在一个大数据源上把模型预训练好,再把它适配到你关心的小任务上。

Paul 重点不在重复这条老路,而在它最近的一次升级:一个 Transformer 处理几十种模态。他展示了自己组里 2023 年的工作 IMnt,以及 DeepMind 的 Generalist Agent。这类模型不再区分”自然语言模型”和”视觉模型”,直接把语言、语音、手势、图像、传感器时序、医疗记录全部塞进同一个 Transformer。

技术上怎么吃下这么多东西?Paul 给了个简洁的答案:先把一切序列化。文字本来就是 token 序列,语音按采样率切片也是序列,图像切成像素块是序列,机器人传感器按时间步排列还是序列。序列化之后,Transformer 学的是同一种东西:序列里相邻位置之间的依赖关系。模态身份只用一个 one-hot embedding 标识:语言是 [1,0,0,0],图像是 [0,1,0,0],仅此而已。

效果上 Paul 给了一组数字:目标任务只做监督学习准确率 67%,加一个无关模态预训练涨一格,加两个再涨,加到三个又涨。没有显式告诉模型”语言和机器人时序有共同结构”,光是塞进同一个 Transformer 一起训,性能就会单调上行。这是这套方法最反直觉、也最值得记住的点。

但 Paul 自己也提示了硬伤。这套模型假设”模态身份只是一个 one-hot 标识符”,其实丢掉了大量模态特有的结构。比如时序数据的连续性、图像的二维空间关系,都被压成一个序列处理。混合专家(mixture of experts)是近来的修正方案:让一部分专家专门处理某些模态,但又不彻底切开。这是这条线后面的演进方向。

第二套:协同学习,训练时多一只手,测试时撒手

迁移学习的前提是有个大模型可以微调。但很多情况下你没那么幸运,只是手头训练时多一种模态可用,测试时这个模态没了。比如你研究的是听障人士的语音转写,训练时你有同步的视频(看口型),但部署的时候只有麦克风。

这个场景 Paul 叫 co-learning,直译过来叫”协同学习”。规则很简单:辅助模态 B 只在训练时出现,测试时只用主模态 A。

这一节是整堂课最技术、也最有意思的部分。Paul 给了三种做法,每一种背后都是一个不同的”借东风”哲学。

第一种:通过融合(fusion)借。训练时把 A 和 B 融合成一个联合表征,测试时把 B 的输入位置填 0(或者填均值),只让 A 的那一路真正激活。Paul 引了 2014 年那篇用深度玻尔兹曼机(早期的生成模型,可以理解为变分自编码器的前辈)做图文联合训练的论文,以及更早 2011 年的多模态深度学习:用音频和视频一起训,测试时只给视频,结果比纯视频监督学习还好。他们测的是经典的 McGurk 效应:人看一个嘴型说”ga”、听到的是”ba”,大脑就会觉得听到了”da”。视觉和听觉在这个任务里是真冗余,所以 borrow 得动。

第二种:通过对齐(alignment)借。不把两个模态融成一坨,而是各学各的表征,再通过一个相似度函数把它们拉到同一个空间。Paul 引了 2013 年那篇”零样本跨模态迁移”,可以理解为 CLIP 的史前版本。训练时让”cat”这个词向量(embedding,把词映射到一组数字)和真正的猫图片在表征空间里相邻;测试时来了一张全新的猫图片,模型从来没见过 cat 这个类别,但它能把图片投到那个对齐空间里,找到最近的词向量,直接给出”cat”的预测。这就是零样本分类的雏形。

机器人这块他还给了一个特别贴肉的例子:训练时让机械臂的摄像头视觉和力觉传感器学一个对齐空间,正样本是同一时刻配对的视觉+力觉,负样本是错配的。学好之后,这套表征单独喂给视觉或者单独喂给力觉,都比直接监督学习要强。这跟上一讲讲过的对齐方法是一脉相承的。

第三种:通过翻译(translation)借。前两种都把 B 放在输入端,这种把 B 放在输出端:训练时让模型从 A 去预测 B,把这个”预测 B 的能力”当作辅助任务。预测得越准,A 编码出的表征就越富信息。

Paul 自己组里的例子是情感识别:用语言去预测说话人当时的面部表情。即使最后只用语言做情感分类,因为编码器被强迫学过”什么语言对应什么表情”,它编出的语言表征就比纯监督学到的好。他还讲了一个更深的版本,循环翻译:语言 → 视觉表征 → 再反推回语言,加入循环一致性的约束。

更脑洞的应用是帕金森早筛。研究者想用睡眠呼吸数据预测帕金森症,数据是 10 小时的连续录音,标签只有一个比特:有没有帕金森。10 小时输入对一个比特输出,监督信号稀薄得几乎没法训。他们的做法是同时让模型预测脑电波(EEG)信号,脑电波也是 10 小时的连续信号,瞬间从”10 小时对 1 比特”变成”10 小时对 10 小时”。预测脑电的能力反过来喂养了主任务,帕金森识别也上来了。

这个例子的妙处在于,它把”协同学习”的本质讲透了:当你的主任务监督信号太稀薄,借另一个模态当密集监督是一种廉价但很有效的杠杆

Paul 难得讲了一次反例

整节课让我印象最深的不是上面这些”涨点”的故事,而是 Paul 中段那一段反例。

VideoBERT 和 VisualBERT 是 2019、2020 年很火的工作,在 BERT 上加了视频/视觉的联合预训练。直觉上这应该让模型同时变强。Paul 直接抛出对比数字:BERT 在一个语义角色标注任务上原本是 90%,加了视频联合训练之后掉到 65%,跌了 25 个点。在常识问答这种你直觉上”应该用得到视觉”的任务上,有时候涨一点,有时候反而掉。

他用一句话总结这条线:”如果某篇论文标题里写着’Does X help?’,大概率答案是不 help,不然他们就直接讲结果了。”这是整节课唯一一段他没在卖力推销技术的地方,也恰好是最值得记的地方。所有跨模态迁移的招数,前提都是冗余足够、任务在冗余里。这两个条件不满足,加模态就是加噪声,加得越多掉得越狠。

第三套:你只有 API,怎么办

最后一段 Paul 讲了一个很现实的场景:现在大模型几乎都只给 API,你看不到权重、改不了参数,但你又想让多个模态/多个模型互相帮忙,怎么办?

他从单模态情形热身,讲了自训练(self-training):你有少量带标签数据训一个分类器,再用这个分类器给大量无标注数据打”伪标签”(pseudo label),挑最自信的那一批加进训练集,迭代下去。这套思路在今天的大模型时代被反复重生:data augmentation、distillation、rejection sampling,内核都是它。

到了双模态,1998 年的协同训练(co-training)是更经典的算法。两个模态各训一个分类器,模态 A 的分类器把它最自信的样本打上标签,这个标签喂给模态 B 的分类器训练;反过来 B 也帮 A 打标签。两个分类器轮流当对方的老师。

Paul 给的例子是视频动作识别:RGB 帧和光流(optical flow,描述像素在相邻帧之间怎么移动的)两个模态轮流标注对方的无标签数据。静态画面认得出来的动作(吃饭、看书)RGB 分类器自信,RGB 就帮 flow 老师打标签;动作幅度大的(挥杆、跳跃)flow 分类器自信,flow 就回帮 RGB。

这套 1998 年的算法在今天最有意思的回响,是多 LLM agent 协作。GPT-3 和 BERT 互标数据,或者多个不同的大模型互相 debate、互相给中间结论打分,本质上就是 co-training 在大模型时代的变体。Paul 直接说”这条线很大程度上启发了今天多 agent 的玩法”,我觉得这个判断是站得住的。

我会怎么用 / 放到机器人上看

这一讲对我做机器人云服务的最大启发,是把”跨模态迁移”从一个论文里的招数,落成了一套面对真实部署场景的决策框架。

机器人本身就是个跨模态迁移天然的试验场。一台扫地或清洁机器人身上,激光雷达、深度相机、IMU、里程计、碰撞传感器、电机电流、麦克风,每一种数据的标注成本和数据量都差得离谱。视觉数据可以批量爬、批量自动标;力觉、IMU 上做精细动作识别,标注全靠现场人工跟车,一天采不到几十条。Paul 讲的”穷模态借富模态”问题,在我们这儿是每天的工程现实。

具体几个我会去落地的方向。

第一,玻璃门和反光场景的协同学习。清洁机器人在商场最头疼的事之一是玻璃门,激光雷达打过去直接穿透,视觉看上去又是一片反光。我们传统做法是规则兜底:多个传感器投票,有一个说”前方有障碍”就停。Paul 的协同学习思路给了另一条路:训练时同时喂激光、视觉、超声、碰撞,让模型学一个能从”视觉反光纹理”反推”这里其实有玻璃”的表征;部署时即使某一路传感器临时出问题,联合表征还撑得住。这跟我们现在的传感器降级逻辑能接得很紧。

第二,稀有故障样本的跨模态翻译。机器人云上每天几十万条运行日志,真正”翻车”的故障可能只有几千条,典型的标签稀薄场景。我们可以借鉴帕金森那个例子的思路:不直接用故障标签训分类器,而是让模型从早期传感器数据预测后期更密集的传感器轨迹(比如从开机前 10 秒预测开机后 1 分钟的电机电流曲线)。预测得准的样本,中间表征对故障也会更敏感。把”翻车与否”这个稀薄标签的训练,变成”翻车前的轨迹长什么样”的密集训练。

第三,新机型冷启动的 co-training。我们每出一款新机型,都要重新积累一遍标注数据,周期很长。但老机型上有大量已标注数据,新机型上有大量无标注运行数据,而且两边大部分场景是重叠的(都是商场、都是医院、都是写字楼)。这正好是 co-training 的设定:老机型分类器先标新机型最自信的那批数据,反过来训练一个新机型的初始分类器,再让新机型分类器帮老机型补一些它原本看不到的角度。这套 1998 年的老算法,在我们这种”多机型迭代”的业务里还能再活一遍。

第四,警惕 Paul 那段反例。VideoBERT 那个 25 点掉点不是花絮,是警告。我们之前有过一次教训:把激光特征硬塞进一个本来只用视觉的语义分割模型,期望”多模态总是更好”,结果模型在标准测试集上掉了 4 个点。事后复盘正是 Paul 这套话的工程版:两个模态在那个具体任务上的冗余很弱,激光提供的不是补充信息,而是噪声扰动。做跨模态迁移之前,最该花时间的不是搭模型,而是先量两个模态对当前任务的互信息(mutual information,粗略理解就是”知道一边对预测另一边有多大帮助”)。互信息高了再上手,这套方法才省力。

最后

Paul 这节课其实是一节很”务实”的课。它没有一个统一的、闪闪发光的新方法,而是把跨模态迁移这件事拆成了三种工程实现:能改模型权重就做协同学习,只有 API 就做模型归纳,有大数据池子就做大一统预训练。三套方法背后是同一句话:冗余可借,稀缺可补,但前提是借得对、补得准

如果只让我记一件事,我会记 VideoBERT 那个 25 点掉点。它提醒我,跨模态迁移没有免费午餐:加一个模态,可能让性能涨,也可能让它崩。下一讲开始进入大模型部分,Paul 会讲第 7 讲,大型基础模型的训练与扩展。

本系列

MIT《How to AI (Almost) Anything》共 12 讲,这是我的逐讲解读:

  1. 这门 MIT 课不教模型,教你怎么”想” AI
  2. 怎么做 AI 研究:读论文、找想法、快速验证
  3. 数据、结构与信息
  4. 实用 AI 工具
  5. 常见模型架构
  6. 多模态对齐
  7. 多模态融合
  8. 跨模态迁移 (本篇)
  9. 大型基础模型
  10. 大型多模态模型
  11. 强化学习与交互
  12. 人机交互
赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型
赞(0)
未经允许不得转载:80aj » 数据稀缺的模态,要靠别的模态来养
赞助推荐 低成本上手 Claude Code 的中转选择
赞助推荐 低成本上手 Claude Code 的中转选择
赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型