文章

被 Transformer、CNN 这些词唬住过吗?一堂 MIT 的课,把它们讲成了同一件事

Transformer、CNN、GNN、LSTM,每个名词背后都是一篇难懂的论文,好像 AI 是一堆互不相干的黑魔法。可 MIT 这门《How to AI Almost Anything》的第三讲,用一个统一的框架把它们全讲成了同一件事。听懂了,你会发现它们其实没那么玄。

被 Transformer、CNN 这些词唬住过吗?一堂 MIT 的课,把它们讲成了同一件事

这是「AI 没那么玄」系列的第一篇。这个系列想干一件事:把那些被名词和公式吓住的 AI 概念,一个个还原成普通人能听懂的道理。今天这篇,来自 MIT 一门很火的课《How to AI Almost Anything》。

你大概被这些词唬住过:Transformer、CNN、GNN、LSTM。

每一个背后,都是一篇看不懂的论文。它们被单独拎出来,一个一个介绍给你,好像人工智能就是一大堆互不相干的黑魔法,学会一个还有下一个,永远学不完。

可 MIT 这门课的第三讲,老师一上来就说了句大实话:今天这节课,像是拿消防水管喝水。因为他要把深度学习里所有常见的模型架构,用一个统一的框架,讲成同一件事。

我把这一讲啃完了。听懂之后最大的感受是:它们真的没那么玄。今天就把这套框架,用大白话转给你。

第一件事:再复杂的 AI,都只在做两个动作

老师说,任何一个深度学习模型,说到底只在反复做两个动作。

第一个动作,叫学表示。意思是把原始的、乱糟糟的数据,压成更抽象、更精炼的特征。比如给一张照片,模型从密密麻麻的像素里,慢慢提炼出“这块是飞机”“这块是天空”“这块是地面的房子”。原始像素又多又碎,特征却精炼又有意义。

第二个动作,叫聚合信息。把各部分学到的东西拼到一起,得出对整体的理解。飞机、天空、房子这几块拼起来,模型才反应过来:哦,这是一张航拍图。

就这两个动作,一层套一层,反复交替,就构成了整个模型。

那些名词呢?不过是做这两件事的不同积木罢了。全连接、卷积、注意力,是做“学表示”的积木;拼接、相加、取最大值、注意力,是做“聚合信息”的积木。你读到的任何一篇 AI 论文,Transformer 也好,CNN 也好,本质都只是把这些积木换了个搭法。区别只在于,积木摆在哪、按什么顺序摆。

第二件事:分清“该忽略什么”和“该在意什么”

如果说两个动作是积木,那真正的设计哲学,是搞清楚两件相反的事。

一件叫不变性:输入变了,但答案不该变。一张写着“3”的图,你把它上下左右挪几个像素,转个 45 度,甚至从彩色变成黑白,它还是“3”。一个好模型,就该对这些变化无动于衷。

另一件叫等变性:输入变了,答案就得跟着变。还是那张图,但这次任务是把数字和背景分开。你要是把整张图往上挪两个像素,那张分割结果,也必须跟着往上挪两个像素,分毫不差。

听着有点绕,但这件事关乎生死。因为你要是不把这些性质提前“焊”进模型,模型就只能靠海量数据自己去慢慢悟。

课程里有个例子特别吓人。假设你有一组数据,是无序的集合,比如五张照片,让模型挑出最不对劲的那一张。照片摆放的先后顺序,显然不该影响答案,ABCDE 和 ECDBA 应该给出同一个结果。可如果模型没设计好,把这两种顺序当成两码事,那你就得把五张照片的所有排列,整整一百二十种,全喂给它,它才学得会。数据量凭空翻一百多倍。而只要设计对了,一份数据就够。

那把性质焊进去的手,叫参数共享

具体怎么焊?核心手法就四个字:参数共享。

说白了,就是处理每一个元素,每个词、每个像素块、每个节点,都用同一套参数,同一把尺子去量。再配一个不在乎顺序的聚合方式,比如简单相加,模型自然就获得了该有的不变性,还顺手省下天量的数据。

记住这两把钥匙,两个动作加一条哲学,接下来你会看到,所有花哨的架构,都能被一次性打开。

用这两把钥匙,挨个打开那些名词

先看处理语言和时间序列的模型,从 RNN 到 Transformer。这类数据的讲究是:对整段时间的平移不敏感,却要对词的顺序极其敏感。把“狐狸跳过狗”改成“狗跳过狐狸”,意思全变了。手法还是那套:每个时间步共享参数,再跨时间一点点累积信息。

RNN 是串行地攒,读一个词、并进之前的记忆,再读下一个。Transformer 呢,用的是注意力,一次性并行地算出所有词两两之间的关系。听着高级,骨子里和 RNN 一模一样,区别只是一个串行、一个并行。而所谓注意力,拆开也不神秘:生成一个词时,给前文每个词打个分,决定该参考谁多一点,再按分数加权求和。就这么回事。

再看图像,从 CNN 到 Vision Transformer。图像的讲究是对小幅平移不敏感。你要是把每个像素都连到所有输出,一张两百乘两百的图就是四万个像素,连起来的矩阵大到算不动。于是 CNN 只看局部的小窗口,比如三乘三,窗口之间再共享参数,这就是卷积。加上池化,也就是一小块里只取最大值,模型对轻微抖动更稳。低层先学会看边缘,边缘拼成部件,部件再拼成完整的物体。而 Vision Transformer 更干脆,把图切成一块块小片,当成一串“词”,直接套用 Transformer。你看,还是那两件事。

最后是图,也就是节点和连线构成的网络,社交关系就是典型。手法依旧:每个节点共享参数,再顺着谁和谁相连去聚合邻居的信息。

这一讲最漂亮的收尾在这里:集合、序列、图像,其实全是图的特例。集合,是只有点、没有连线的图;序列,是连成一条链的图;图像,是每个像素只和上下左右相连的图。一个框架,通吃所有。

所以,AI 没那么玄

讲到这儿,你大概能松口气了。

人工智能不是一堆互不相干的黑魔法。它更像乐高:两个动作,学表示和聚合信息,是积木;一条哲学,分清该忽略什么、该在意什么,是图纸。你过去觉得难,多半是因为每个模型都被当成一头全新的怪物,单独介绍给你,没人告诉你它们其实是一家人。

这门课还留了两篇反常识的延伸阅读,顺带勾你一下。一篇叫“苦涩的教训”,说的是越往后发展,越是那些少用人类经验、猛堆数据和算力的大模型赢到最后。另一篇讲“双下降”,说模型明明看着已经练过头、学不动了,再往下死磕,居然又突然开了窍。这两件事,都和传统课本教的恰好相反。往后我想专门写写它们。

留一个能带走的东西给你。下次再有人朝你甩出 Transformer、扩散模型、GNN 这些词,你不必慌,先在心里问三句:它在学什么表示?又在怎么聚合信息?对什么该装看不见,对什么该分毫必究?这三句能答上来,你就已经摸到这门手艺的骨架了。

MIT 这门《How to AI Almost Anything》,我打算挑着往下写。想跟的话,点个关注,我们下一篇见。

本文是我对该课程第三讲的通俗转写,为了让没有基础的读者也能读懂,做了大量简化和打比方,略去了不少数学细节,比如注意力机制里 Q、K、V 矩阵、缩放和 softmax 的具体运算。想深入的读者,建议去看原课程。理解有偏差的地方,欢迎指正。

本文由作者按照 CC BY 4.0 进行授权