论文笔记-Towards All-in-one Pre-trai
论文:https://arxiv.org/pdf/2211.09807.pdf
一句话总结:提出了一个预训练的统一框架,提出多任务多模态的一阶段预训练方法 M3I。
在大模型时代下,预训练通用模型底座+下游任务微调逐渐称为主流做法,预训练方法决定了模型能力如何。
1. 预训练方法
预训练方法根据使用的监督的形式和模态类型可以分为三种:
- 有监督预训练
- 自监督预训练
- 弱监督预训练
1.1 有监督预训练
有监督训练听起来已经是历史的眼泪了。在大规模预训练兴起之前,常见的做法是在 ImageNet 上训练一个模型,然后在下游任务上进行迁移学习。
随着模型规模的增大,数据需求也随着增大,而带有人工标注的数据是有成本的,无法随着模型一起增加。
1.2 自监督预训练
自监督学习只利用图像本身进行学习,不需要人工标注。根据对图像的操作,可以分为两类:
- inter-view,也可以称为 instance discrimination(ID) tasks,基于同一图像的两个不同的增强视角
-
intra-view,常见做法是 masked image modeling(MIM),基于同一个 view 的图像学习特征
self-supervised learning
1.2.1 Inter-view tasks
主要思想:相似图像的表征在特征空间中应该更加接近,也就是基于对比的思想去设计预训练方法,可以分为三类:
Contrastive learning
比如 SimCLR, MoCo。利用图像增强获得正样本,计算特征之间的相似性。
这种方法对于负样本要求很高。
Asymmetric network
比如,BYOL, SimSiam。不实用负样本,而是通过不对称的网络来实现。
Feature decorrelation
Barlow Twins。 loss 的不变项试图使 embedding 对所应用的 distortion 保持不变。减少冗余项试图将 embedding 的不同矢量分量重新关联起来。
1.2.2 Intra-view tasks
Autoencoder 是一种经典的学习特征的方法,encoder 从输入中提取特征,decoder 将特征还原为输入。基于 autoencoder 思想的自监督学习思路有 denoising autoencoder 和 masked image modeling。
Denoising autoencoder 在输入上加噪声,在被噪声干扰的输入上训练 autoencoder,重建原图。
Masked image modeling 的思想来自于 NLP 中的 BERT,由于图像具有信息冗余,加图像加噪声的操作对于模型来说并不具有挑战性,因此 MAE 选择了丢弃大量的图像块的操作,即 encoder 的输入只有少部分可见的 patch,而 decoder需要从encoder 的输出特征还原出原图。
Siamese Image Modeling 结合了 ID 和 MIM,也就是利用了两个不同的 view,并且第一个 view 的输入被 masked 掉了。decoder 需要根据两个 view 之间的相对位置关系来重建第二个 view。
1.3 弱监督预训练
弱监督预训练指的是利用图像-文本对或者图像-hashtag的数据来进行预训练,这类数据可以直接从网上抓取,比人工标注的数据成本更低,更容易获取。
弱监督预训练的方法有 CLIP,ALIGN,BEiT-3等。
WSP
粗略地过了一遍目前常见的预训练方法,可以发现自监督方法逐渐可以看出一个统一的范式,而弱监督方法通常需要分阶段进行。于是本文的作者提出了一个单阶段多模态的统一框架,结合了有监督、弱监督和自监督预训练的优点,避免多阶段训练导致的灾难性遗忘。
2. 最大化互信息
预训练的目的是学习能够很好地代表训练样本的表示。
假设训练样本是 s,其中 s 可以是图像-类别对(监督),图像-文本对(弱监督),或者只有图像(自监督)。
输入训练数据 x 和目标训练数据 y 是通过一些转换运算从s中提取出来的(tx , ty ), i.e., 。
转换运算 t 通常与数据无关,例如,"应用图像增强"、"获得标注的类别 "或 "获得配对的文本"。
在以视觉为中心的预训练中,输入数据 x 通常是增强的图像,而目标数据 y 是标注的类别,配对的文本,或者也是增强的图像。
zx和zy分别表示输入和目标的编码表示。
所需的预训练目标可以描述为,在给定 tx 和 ty 的情况下最大化 zx 和 zy之间的条件互信息。
其中,第一项要求目标表示的熵很高,这就避免了崩溃。第二项要求后验分布接近于目标分布。
后验分布通常是难以处理的。为了缓解这个问题,一个常见的做法是引入另一个参数化分布 作为近似值。
的不同形式导致了不同的损失,例如,高斯和波尔兹曼分布分别对应于 L2-norm 和 Softmax 交叉熵损失。
公式(3)是一个通用的预训练损失,可以被实例化为不同的预训练范式,包括有监督的、弱监督的和自监督的预训练。
与现有方法的联系
对于有监督预训练,输入为图像 I ,输入特征 , 目标特征为类别嵌入 , 分类器基于 预测 。预训练的目标是最大化 ,而SP损失可以导出为最小化 。
其中, 是典型的玻尔兹曼分布(即Softmax交叉熵损失)。这种分布包含负数类别,自然可以防止塌陷。
弱监督训练通常包括一个增强的图像和对应的文本,训练目标是最大化图像嵌入和文本嵌入的互信息, 也是玻尔兹曼分布。
自监督训练最大化两个 view 的特征之间的互信息, 是Boltzmann(即Softmax交叉熵损失)时,target encoder 的目的是区分不同训练数据中的 zy(intra-view methods)。当 是高斯(即L2-norm损失)时,它拟合 zy 的值(inter-view)。
根据 tx 和 ty 以及目标表征的不同,自监督训练方法可以分出 12 种,其中一些是之前没有被提出来过的。
3. 多输入多目标预训练
为了将有监督、自监督、弱监督的预训练的优点结合在一起,作者将上面的公式扩展到了多目标多任务的形式。通过公式推导作者得出,独立地优化目标相当于优化互信息的下限。
多输入
利用 Mixup 或者 CutMix 实现。
多目标
一种思路是将弱监督预训练与特定的自监督预训练结合起来,比如 MaskCLIP 和 FLAVA。
另一种是有监督预训练和自监督预训练的结合,例如 SupCon 或 SupMAE。
作者提出的多输入多目标最大化互信息预训练框架,也就是提出的 M3I Pre-training 如下:
M3I
作者通过 mixup 实现两张图像 view 1 的多输入,当预测目标为第一张图象的 view1 和第二张图像的 view2,这个框架实现的是自监督学习;当预测目标为文本和图像时,这个框架实现的是弱监督学习或者有监督学习。因此,作者实现了三种学习方式的统一。
4. 总结
为了获得单阶段预训练,作者提出了一个统一主流预训练方法的通用预训练框架。并进一步将该框架扩展到多输入多目标设置,这表明以前的多任务预训练方法实际上是在优化互信息的下界。
作者提出了一种一体化的预训练方法,M3I Pre-training。 M3I预训练在各种迁移学习环境中超越了之前的预训练方法。
缺点
只关注于 vision-centric 的预训练,没有实验证明他们的方法学到了语义特征,也许是效果不好。后续可以将 text encoder 拓展为 LLM,实现多模态预训练。
理论部分很有意思,把预训练方式统一了起来,但是提出来的结构都点对不上的感觉。
没有代码开源,具体细节很让人困惑。