GPT的风也吹到了CV,详解自回归视觉模型的先驱! ImageGPT:使用图像序列训练图像 GPT模型

极市平台

共 22020字,需浏览 45分钟

 · 2024-04-17

↑ 点击蓝字 关注极市平台
作者丨科技猛兽
编辑丨极市平台

极市导读

 

在 CIFAR-10 上,iGPT 使用 linear probing 实现了 96.3% 的精度,优于有监督的 Wide ResNet,并通过完全微调实现了 99.0% 的精度,匹配顶级监督预训练模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿

本文目录

1 自回归视觉模型的先驱 ImageGPT:使用图像序列训练图像 GPT 模型
(来自 OpenAI)
1 ImageGPT 论文解读
1.1 自回归预训练的大视觉模型会不会像 LLM 一样有缩放性
1.2 ImageGPT 方法介绍
1.3 数据集和数据增强策略
1.4 减少序列长度
1.5 模型设置
1.6 自回归预训练实验结果
1.7 BERT 预训练实验结果

太长不看版

本文所受的启发就是 NLP 中领域的无监督表征学习,是自回归视觉模型的先驱。本文训练了 image GPT,一个序列 Transformer 模型,来自回归地预测图片像素,而无需结合 2D 输入结构的先验知识。本文训练时,尽管只是在不含标签的低分辨率 ImageNet 上作训练,但是展示出的 GPT-2 尺度的模型依然能够学习到强力的图像表征 (通过 linear probing,fine-tuning,low-data classification 来度量)。

在 CIFAR-10 上,iGPT 使用 linear probing 实现了 96.3% 的精度,优于有监督的 Wide ResNet,并通过完全微调实现了 99.0% 的精度,匹配顶级监督预训练模型。在将像素替换为 VQVAE 编码时,iGPT 的性能还在自监督的 ImageNet benchmarks 具有竞争力,使用 linear probing 实现了 69.0% 的 top-1 精度。

本文做了什么工作

本文聚焦于 NLP 领域中 GPT 模型的 "给定一些文本 tokens,然后预测下一个 token 是什么" 的范式,将这一范式从 NLP 领域迁移到 CV 领域中。因此,本文的方法称为 iGPT,是个序列 Transformer 模型。例如,把 32×32 的图像按照像素依次排列成一个序列,并使用序列 Transformer 模型建模。训练的目标函数是自回归目标函数。

这样预训练之后得到的 iGPT 模型可以在多个下游任务,比如 ImageNet,CIFAR,STL-10 上得到有前景的精度,并且展示出一些模型容量的规律。本文是将自回归方案引入视觉领域的先驱工作。

1 自回归视觉模型的先驱 ImageGPT:使用图像序列训练图像 GPT 模型

论文名称:Generative Pretraining from Pixels (ICML 2020)

论文地址:

https//cdn.openai.com/papers/Generative_Pretraining_from_Pixels_V2.pdf

官网地址:

https//openai.com/research/image-gpt

  • 1 ImageGPT 论文解读:

1.1 无监督学习在视觉的应用

无监督预训练在深度学习的复兴中起着核心的作用。从 2000 年代中期开始,深度置信网络 (Deep Belief Network)[1]和去噪自动编码器 (Denoising Autoencoder) [2]等方法通常用于计算机视觉和语音识别的神经网络。随着分段线性激活函数[3],改进的初始化策略[4]和归一化策略[5][6]等等方法的出现无监督预训练的必要性在逐步被消除。

无监督的预训练在 NLP 领域中也蓬勃发展。在词向量[7]之后,它推动了自然语言处理在大多数任务上的应用。有趣的是,BERT 等方法的训练目标,即预测损坏的输入,与最初为图像开发的去噪自动编码器的训练目标非常相似。

从模态上讲,图像比文本的维度更高、更嘈杂,且更加冗余,因此被认为难以做生成建模。考虑到生成式预训练方法对于 NLP 领域的重大影响,这种方法值得再审视,并与最近的自监督方法作比较。本文重新评估图像上的生成式预训练,并证明使用 Transformer + 自回归式预训练得到的生成式预训练模型与其他自监督方法相比同样具有竞争力。

1.2 ImageGPT 方法介绍

ImageGPT 方法包括一个预训练阶段和一个微调阶段。在预训练中,作者探索了自回归和 BERT 目标函数,还应用序列 Transformer 架构来预测像素 token,而非语言 token。

微调 (Finetuning):衡量图像表征质量的一种方法是在图像分类任务上做微调。微调在模型中添加了一个小的分类头,用于优化分类目标并且再训练所有权重。

线性探针 (Linear Probing): 另一种衡量表示质量的方法是线性探针。它使用预训练模型作为特征提取器: 给定标记示例 ,该模型输入 以产生特征 。然后在 上训练线性分类器。线性探测的直觉是: 好的特征应该可以线性分离待迁移的任务。此外,线性探针有助于将特征质量与模型架构分开: 在微调中,一个模型比另外一个更好的原因不是因为其学到的特征更好,而是其架构可能更适合这个下游任务。

预训练

如图1所示,给定无标签数据集 ,包含数据 ,可以选择集合 的排列 ,并对概率密度 进行自回归建模:

其中,排序的策略选择恒等排序: , for ,也被称为光棚顺序。通过最小化数据的负对数似然来训练 iGPT 模型:

通过最小化 BERT 目标函数来训练 IGPT 模型: 采样一个子序列 ,即每个索引都有 0.15 的概率进入集合 ,称 为 BERT 掩码,通过最小化 "未掩码" 元素 的负对数似然来训练模型:

在预训练中,作者选择了 的其中之一,并最小化了预训练数据集上的损失。

图1:iGPT 对图片的分块操作以及两种目标函数,以及评估策略

模型框架

iGPT 遵循 GPT2 的设计使用 Transformer Decoder。给定输入图片序列 ,为每个 patch 计算一个 embedding。Decoder 使用 个堆叠的块,其中第 个块的输出是一组 维度的向量 。作者对每个块内部的操作如下:

跨序列元素的混合操作只发生在注意力操作里面。为了适配自回归的训练范式,作者将标准的上三角掩码应用于注意力矩阵中。当使用 BERT 目标函数时,不需要对注意力进行掩码。

而且,由于 iGPT 为每个序列 token 学习独立的位置嵌入,BERT 模型没有位置归纳偏差 (即它是置换不变的)。模型在训练时必须学习位置之间的任何空间关系。AR 模型就不是这样,因为选择光棚顺序其实也是使用了预先指定的顺序。

在最后一个Transformer 块之后,作者计算 layer_norm ,并设置一个可学习的投影层从 映射到逻辑输出。在训练 BERT 时,忽略未掩码位置的逻辑输出。iGPT 遵循 GPT2 的设计使用 Transformer Decoder。给定输入图片序列 ,为每个 patch 计算一个 embedding。Decoder 使用 个堆叠的块,其中第 个块的输出是一组 维度的向量 。作者对每个块内部的操作如下:

跨序列元素的混合操作只发生在注意力操作里面。为了适配自回归的训练范式,作者将标准的上三角掩码应用于注意力矩阵中。当使用 BERT 目标函数时,不需要对注意力进行掩码。

而且,由于 iGPT 为每个序列 token 学习独立的位置嵌入,BERT 模型没有位置归纳偏差 (即它是置换不变的)。模型在训练时必须学习位置之间的任何空间关系。AR 模型就不是这样,因为选择光棚顺序其实也是使用了预先指定的顺序。

在最后一个Transformer 块之后,作者计算 layer_norm ,并设置一个可学习的投影层从 映射到逻辑输出。

微调

在微调时,首先在序列维度上对 作 Pool 操作,得到一个 维向量:

再设置一个可学习的投影层从 映射到逻辑输出,并使用这个输出计算交叉嫡损失函数 ,并发现使用联合损失函数 效果更好。

线性探测

在线性探测时,首先在序列维度上对 作 Pool 操作,得到一个 维向量:

最佳特征通常位于网络的中间。与微调一样,再设置一个可学习的投影层从 映射到逻辑输出,并使用这个输出计算交叉摘损失函数

1.3 数据集和数据增强策略

尽管有监督的预训练是图像分类的主要范式,但管理大型标注图像数据集既昂贵又耗时。本文希望从更大的可用无标记图像集中学习通用的表征,并对其进行微调以进行分类。本文使用 ImageNet 作为大型未标记的图像数据集,并使用小的有标注数据集 (CIFAR-10、CIFAR-100、STL-10) 来作为下游任务的代理。

数据增强:训练时随机调整图像的大小,使较短的边长在 [256,384] 范围内。接下来取一个随机的 224×224 裁剪。推理时调整了图像的大小,使得较短的边长为 224,并使用 224×224 中心裁剪。

当对 CIFAR-10 和 CIFAR100 进行微调时,使用 Wide Residual Networks 的数据增强方式:每边填充4个像素,并从填充图像或其水平翻转中随机采样 32×32 裁剪。

1.4 减少序列长度

由于 Transformer Decoder 的内存要求在使用密集注意力时与上下文长度呈二次方关系,因此必须采用进一步的措施减少序列长度。如果在长度为 的序列上训练一个 Transformer,那么注意力的维度将会比语言模型大很多,甚至单层也不适合 GPU 训练。为了解决这个问题,作者首先将图像大小调整为较低的分辨率,iGPT 模型的输入分辨率 (Input Resolution, IR) 为

但是即便是 的输入分辨率,计算仍然相当密集。低于这个大小,先前的工作已经证明了人类在图像分类上的表现开始迅速下降。当使用 的 IR 时,改为通过使用 的 k-means 聚类 ( 像素值进一步将上下文大小减少 3 倍。当使用 的 IR 时,使用 VQ-VAE 。VQ-VAE 可以对图像进行下采样并将输入分辨率控制在 。latent vocabulary size 设置为 4096 。

1.5 模型设置

最大的模型 iGPT-L 与 GPT-2 基本相同: 都包含 层,但 iGPT 使用 的嵌入维度,使得参数计数略有下降。iGPT 使用与 GPT-2 相同的模型代码,只是以 Sparse Transformer 方式初始化权重, 并零初始化所有计算逻辑输出的投影层。iGPT-M 包含 参数, 。iGPT-S 包含 参数,

模型训练使用 128 的 Batch Size,训练 1000000 iterations,优化器使用 Adam 。作者依次尝试学习率 ,在第一个局部最小值时停止。学习率 warmup一个 Epoch,然后按照余弦规律衰减到0,没有使用 Dropout。

在微调时,作者使用相同的 Batch Size 和 Adam 超参数。同时不采用余弦时间表,一旦达到最大验证集精度就提前停止。同样没有使用 Dropout。

在 ImageNet 上作线性探测时,iGPT 使用 SGD 和较高的学习率 (尝试值 30,10,3,...)。作者使用余弦学习率衰减训练了 1000000 次迭代。最后,当在 CIFAR-10、CIFAR-100 或 STL10 上运行线性探针时,作者使用 L-BFGS 算法

1.6 自回归预训练实验结果

深度对于表征质量的影响

首先是 iGPT 的自回归的实验结果。在有监督预训练中,表征的质量倾向于随着深度的增加而增加,这样一来最好的表征就位于倒数第二层。在生成式预训练的像素预测任务中,这一结论是否成立就不一定了。也就是说,倒数第二层产生的表征可能对分类任务而言并不是最有用的。

为了验证这一点,作者研究了表征的质量随着不同层的变化规律。实验结果如图2所示,可以发现线性探测的性能首先随着深度的增加而增加,然后再下降。造成这种现象的原因作者给出了一个解释:生成模型分2个阶段运行。第1阶段中,每个位置从其周围的上下文中收集信息,以构建全局图像表征。第2阶段中,这个输入解决像素预测任务。这有些类似于 Encoder-Decoder 的行为,区别是在一个架构里进行。

图2:表征质量在很大程度上取决于提取特征的层

模型容量对于表征质量的影响

实验结果如图3所示。可以看到自回归目标的验证集损失在整个训练过程中都会降低,线性探针精度也会增加。这一趋势在几个模型容量 iGPT-S,iGPT-M,iGPT-L 上都成立,容量更高的模型实现了更低的验证集损失。而且当验证集损失相同时,容量更大的模型精度也更好。

图3:模型容量对于表征质量的影响

线性探测实验结果

实验结果如图4所示。iGPT 在整个预训练方法范围内达到了领先的水平。比如在 CIFAR-10 上,iGPT 达到了 96.3%,优于 AMDIM-L (在没有标签的情况下在 ImageNet 上预训练) 和 ResNet-152 (在带有标签的 ImageNet 上预训练)。

图4:CIFAR 和 STL-10 的线性探测实验结果

ImageNet 是一个比较困难的实验设置,因为无法在标准 ImageNet 输入分辨率 (IR) 下有效地训练 (这篇文章诞生时还没有 ViT 把图片分成 Patches 的策略)。在 32^232^2 的模型分辨率 (MR) 的情况下,iGPT 实现了 60.3% 的线性探测精度。在 48^248^2 的模型分辨率 (MR) 的情况下,iGPT 实现了 65.2% 的线性探测精度。

在使用了 VQ-VAE 之后,在 192^2192^2 的输入分辨率 (IR) 和 48^248^2 模型分辨率 (MR) 的情况下,线性探测精度达到 65.3%。当连接以最佳单层为中心的 11 层时,精度达到了 69.0%,与对比学习方法相当。

图5:ImageNet 的线性探测实验结果

完全微调实验结果

为了进一步提升模型在下游任务上的性能,作者继续微调整个模型。在之前的分析的基础上,作者尝试将分类头加在之前最佳的表征上面。在 CIFAR-10 上,iGPT 实现了 99.0% 的精度,在 CIFAR100 上达到了 88.5% 的精度。

在 ImageNet 上,iGPT 在 32^232^2 的模型分辨率上进行微调后实现了 66.3% 的精度,比线性探测提高了 6%。在 48^248^2 的模型分辨率上进行微调后实现了 72.6% 的精度,比线性探测提高了 7%。

微调时再次搜索学习率很重要,因为联合训练目标函数的最佳学习率通常比预训练的最佳学习率小一个数量级。作者还尝试使用 Dropout 进行正则化,但没有观察到任何明确的好处。此外,模型还很容易在小数据集上过拟合分类目标,因此作者采用基于验证精度的 Early Stopping。

1.7 BERT 预训练实验结果

鉴于 BERT 在 NLP 领域的成功,作者以 32^2\times332^2\times3 的输入分辨率和 32^232^2 的模型分辨率训练 iGPT-L。

图6:BERT 预训练实验结果和自回归预训练结果在 CIFAR10 和 ImageNet 数据集上的比较。蓝色柱子是线性探测的精度,橘色柱子是完全微调精度

实验结果如图6所示,在 CIFAR-10 上,可以观察到每一层的线性探针准确度都比自回归模型差,最佳层性能低了超过 1%。ImageNet 上的最佳层精度低 6%。

然而,在微调期间 BERT 弥补了这一差距。完全微调的 CIFAR-10 模型达到了 98.6% 的准确率,仅落后于自回归模型 0.4%,而完全微调的 ImageNet 模型达到了 66.5%,略微超过了自回归的性能。

此外,作者还尝试了一种将 BERT mask 作 Ensemble 的策略,如图6中粗体所示,进一步提升了性能。

参考

  1. A Fast Learning Algorithm for Deep Belief Nets
  2. Extracting and composing robust features with denoising autoencoders
  3. Rectified Linear Units Improve Restricted Boltzmann Machines
  4. Understanding the difficulty of training deep feedforward neural networks
  5. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  6. Layer Normalization
  7. Distributed Representations of Words and Phrases and their Compositionality
  8. Neural Discrete Representation Learning
  9. Generating Long Sequences with Sparse Transformers
  10. Scikit-learn: Machine Learning in Python

公众号后台回复“数据集”获取100+深度学习各方向资源整理

极市干货

技术专栏:多模态大模型超详细解读专栏搞懂Tranformer系列ICCV2023论文解读极市直播
极视角动态欢迎高校师生申报极视角2023年教育部产学合作协同育人项目新视野+智慧脑,「无人机+AI」成为道路智能巡检好帮手!
技术综述:四万字详解Neural ODE:用神经网络去刻画非离散的状态变化transformer的细节到底是怎么样的?Transformer 连环18问!

点击阅读原文进入CV社区

收获更多技术干货


浏览 123
10点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
10点赞
评论
收藏
分享

手机扫一扫分享

举报