iGPT:像素级的图像预训练模型.

模型介绍

模型的整体流程如上图所示。模型包括预训练和微调两个阶段。预训练阶段可以看做一种初始化或正则化方法;微调阶段加了一层分类器进行图像分类任务。

首先把输入图像进行下采样,将其转化为$1D$序列;其次进行进行模型预训练,采用两种预训练方法:next pixel predictionmasked pixel prediction。值得一提的是,基于卷积神经网络的模型大多采用分类进行预训练,而这里使用图像生成进行预训练。

next pixel prediction是一种自回归(auto-regressive)的预训练方法,在GPT等预训练语言模型中也有类似的应用。该方法根据前面的像素值预测下一个像素的值(采用光栅顺序 raster order),并最终对图像的概率密度$p(x)$进行整体建模:

\[p(x) = \prod_{i=1}^{n} p(x_{\pi_{i}}|x_{\pi_{1}},...,x_{\pi_{i-1}},\theta)\]

其训练的目标函数为最小化负对数似然:

\[L_{AR} = \Bbb{E}_{x \text{~}X}[-logp(x)]\]

masked pixel predictionBERT等预训练语言模型中有类似的应用。该方法首先遮挡输入序列若干位置的值,并对这些值进行预测。预先设置$M$个mask,则训练目标函数为最小化相应位置元素的负对数似然:

\[L_{BERT} = \Bbb{E}_{x \text{~}X}\Bbb{E}_{M}\sum_{i \in M}^{}[-logp(x_i|x_{[1,n]/ m})]\]

通过预训练,模型学习到输入图像序列的分层特征表示。有两种进行评估和后续任务的方法:linear probefinetune

linear probe是采用一个简单的线性分类器对模型内部某一层的特征进行分类的方法。该方法能够测试中间特征的线性可分性。具体地,对某一层的所有特征进行全局平均池化,将其转化为一个特征张量,并根据该张量进行分类任务。而finetune允许进行下游任务时对原模型参数进行微调,使用模型最后一层的特征。finetune时同时优化$L_{GEN}+L_{CLF}$会得到更好的结果($L_{GEN}$代表生成ARBERT损失,$L_{CLF}$代表分类损失)。

实验分析

作者在ImageNet数据集上进行预训练,并测试了在三个不同的小型数据集上linear probe方法的准确率。如下图所示,作者发现提供分类准确率最高的特征并不是网络提取的深层特征,而是中间层的某个特征。作者认为,这是因为该模型在训练时浅层学习到低语义的通用特征;中间层学习到高语义的通用特征,而这些特征适合分类等high-level任务;更深层学习到属于该图像的更具体的特征,这些特征对图像生成等low-level任务有帮助。

作者按照GPT-2的模型结构设计了本实验的模型。通过设置不同的模型大小,实验发现越大的模型能够学习到更好的特征,并且其验证损失也会更小。

作者还比较了两种预训练方式的差别。下图蓝色表示使用linear probe进行验证,橙色表示使用finetune进行验证。实验发现仅通过预训练AR目标能够比BERT目标获得更高的准确率;但经过微调后两者就差不多了。