本文入选【技术写作训练营】优秀结营作品,作者:林天文
在 2021 年,随着 CLIP 工作首次公开亮相,从来没有那么活跃过的多模态领域带给研究人员一种新鲜的感受——训练一次到处都能用的感觉原来这么愉悦~
从小众领域卷入热潮的 CLIP
CLIP 真秀
在认识 CLIP 之前,我的刻板印象常告诉我通用大模型就是少数几个顶级科技公司才能玩得起的技术,仿佛训练吞电站,调用费千百。直到看到朱毅老师亲自讲解并演示怎么部署和变着花样调戏 CLIP。尽管 CLIP 也是个烧钱烧数据集的工作,但是它舍弃了庞大的体格,在「模态对齐」上下苦功夫。这个能用语言调戏的双感官模型居然真正走入了我的低端电脑,并在我面前秀了一波「袖珍」身体带来的优秀泛化能力。
起初我只是把它当作一个相当朴实的炫富工作,但自从在 CLIP 这慢慢了解了多模态之后,我开始对单一模态的工作指指点点。刚开始我只是无脑放点狠话,比如「视觉是聋子、哑巴」之类。到后来我越思考就想得越多,比如我们的汉字那么博大精深的语义体系视觉模型居然一直都无法从类别文本标注中感受到。我对单一模态越来越失望,再往后会去憧憬一些可能的解决方案,比如模型哪天开始能够看到自己标签上的汉字象形意义,是否能够学得更好……
当我彻底沉迷上多模态之后,我也爱上了 Zero-shot 这种不用训练也可以举一反三的理论。在 CLIP 诞生之前,多模态领域对于怎么处理不同感官之间复杂关系一直停留在理论的设想上,直到 CLIP 花重金印证了「模态对齐」的意义,并促进大家思考模态之间有什么样的关系值得模型去学习。「模态对齐」是引导模型真正学会模态间关系的理论,比如咱只看一根香蕉的照片可以联系很多种语言表达,比如「长的」、「黄黑相间的」、「食物」、「水果」……而反过来,我们看到「香蕉」也会拥有各种各样的想象,比如漫画风格的、油画的、照片里的……当然模态间的关系可能不只是这样,但当 CLIP 引入对比学习为两个多样性极好的模态建立起这种双向联想时,感官之间的合作已经足够简单,这也降低了 CLIP 在下游视觉或语言任务中举一反三的难度。
CLIP 的后世影响
CLIP 给出的解决方案表面上看非常朴素,只需要假设互联网数据集足够大,模型总能够学习到这种花样多多的模态双向关系。俗话说得好,活久了什么怪事也都能见到~CLIP 也比较谦虚,在论文的一开始就提出自己只是在实践上往前走了很远而没有太多理论创新。然而,有强大泛化能力的 CLIP 同时也以 88.4% 和 51% 的精度尴尬地透露了自己在 MNIST、SVHN 等数字类数据集上泛化的无力感,因为在 CLIP 的印象里,很少见过互联网上会把哪个数字跟数字的特写照片放在一起。虽然很尴尬,但不影响 CLIP 在计算机图形学、向量数据库等细分领域,甚至分割、目标检测等各个细分任务上凭借强大的通用 Zero-shot 性能顺利出圈,诞生了大量后续的创新工作。SAM 也发扬了 CLIP 的「模态对齐」思想并在监督学习分割领域秀了一波 Zero-shot 和超大分割监督数据集廉价孵化技术。
从生成式的视角再遇见多模态
在分析多模态与生成算法的缘份之前,应该先了解一个无监督领域的技术,即「自编码」。自编码器通常是以编解码的架构训练的,其任务通俗点描述也很简单,即「自己生成自己」。既然要生成,那花样可就多了。以图像为例子,可以先把原始的输入压缩干净(图像 => 向量),再让模型尝试恢复原图(向量 => 图像)。经过不断压缩-解压的训练,我们就能够强迫模型学习自己感受图像高度抽象的特征(一般称编码得到的向量为数据的表征),从而让模型很好地认识数据的全貌,并作为预训练模型应用到下游任务。
理解了自编码的概念之后,我们可以尝试重新理解「自」在自编码中的意义。上面我带小伙伴们理解的「自」是指原始输入,比如我可以让自编码器重建一段句子、一张图片、一条语音等,甚至更极端地把这些句子、图片、语音等掩盖住一部份再来压缩,并重建出没有掩盖之前的状态,比如 BERT、MAE 等。那么我们怎么重新认识「自」并玩出花来呢?下面我展示其中一种视角:
- 图像 => 向量 => 图像:这里以视觉任务的自编码为例子。这是我们一开始定义的「自」编码,你可以尝试把这个流程改成下面的形式