GPT的风也吹到了CV,详解自回归视觉模型的先驱! ImageGPT

作者丨科技猛兽

编辑丨极市平台

本文目录

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

预训练

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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

模型框架

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

微调

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

线性探测

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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 减少序列长度

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

1.5 模型设置

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

1.6 自回归预训练实验结果

深度对于表征质量的影响

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

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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

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

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

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

线性探测实验结果

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

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

图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%,与对比学习方法相当。

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

图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。

GPT的风也吹到了CV,详解自回归视觉模型的先驱!ImageGPT

图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