📜  图像 GPT

📅  最后修改于: 2022-05-13 01:55:48.481000             🧑  作者: Mango

图像 GPT

Image GPT 是 OpenAI 的研究人员于 2019 年提出的。 本文尝试在对象识别/对象检测任务中应用类似 GPT 的变换。然而,作者面临着一些挑战,比如处理大图像等。

建筑学:

Image GPT (iGPT) 的架构类似于 GPT-2,即它由转换器解码器块组成。转换器解码器采用离散令牌的输入序列 x 1 , …, x n ,并为每个位置输出一个 d 维嵌入。可以将转换器视为大小为L的解码器堆栈,其中第l 个产生嵌入 h 1 l ....h n l 。之后,输入张量被传递到不同的层,如下所示:

  • n l = layer_norm( h l )
  • a l = h l + 多头注意力( n l
  • h l+1 = a l + mlp(层范数(a l ))

其中layer_norm是层归一化,MLP 层是多层感知器(人工神经网络)模型。以下是不同版本的列表

Model Name/VariantInput Resolutionparams (M)Features
iGPT-Large(L)32*32*313621536
48*48*3
iGPT-XL64*64*368013072
15360

上下文减少:

因为在使用密集注意力时,转换器解码器的内存需求与上下文长度成二次方扩展。这意味着即使是单层转换器也需要大量计算来训练。为了解决这个问题,作者将图像调整为较低的分辨率,称为输入分辨率 (IR)。 iGPT 模型使用32*32*348*48*364*64*3的 IR。

培训方法:

Image GPT的模型训练包括两个步骤:

预训练

  •  给定一个由高维数据 x = (x 1 , …, x n ) 组成的未标记数据集 X,我们可以选择集合 [1, n] 的排列 π 并自动回归建模密度 p(x) 如下:


p\left ( x \right ) =  \prod_{i=1}^{n} p\left ( x_{\pi_i}|x_{\pi_1},...x_{\pi_{i-1}} ,\theta \right )
  • 对于图像,我们为 1 ≤ i ≤ n 选择恒等排列 π i = i,也称为栅格顺序。该模型经过训练以最小化负对数似然:

L_{AR} = \mathbb{E}_{x \sim X} \left [ -log\left ( p(x) \right )\right ]
  • 作者还使用了类似于 BERT 中的掩码语言建模的损失函数,它对子序列M ⊂ [1, n]进行采样,使得每个索引i独立出现在 M 中的概率为 0.15。

L_{BERT} = \mathbb{E}_{x \sim X} \mathbb{E}_{M} \left [ -log\left ( p(x_i | x_{[1,n]\backslash M}) \right )\right ]
  • 在预训练期间,我们选择 L AR或 L BERT之一,并最大限度地减少预训练数据集的损失。

微调:

  • 为了进行微调,作者在序列维度上执行平均池 n L 以提取每个示例的 d 维特征向量,并从平均池层学习投影。作者使用这个投影来最小化交叉熵损失 L CLF 。这使得总目标函数

f^{L} = \prec n^{L}_{i}\succ_{i}
 L_{obj} = L_{GEN} + L{CLF}
  • 其中 L GEN是 L AR或 L BERT

作者还尝试了类似于微调但没有任何平均池化层的线性探测。

结果:

  • 在 CIFAR-10 上,iGPT-L 达到了 99.0% 的准确率,在 CIFAR-100 上,经过微调后达到了 88.5% 的准确率。 iGPT-L 优于 AutoAugment,这是这些数据集上最好的监督模型。
  • 在 ImageNet 上,iGPT 在 MR(输入分辨率/内存分辨率) 32*32下微调后达到 66.3% 的准确率,比线性探测提高了 6%。在 MR 48*48进行微调时,该模型达到了 72.6% 的准确率,与线性探测相比提高了 7%。

参考:

  • iGPT论文