图像 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/Variant Input Resolution params (M) Features iGPT-Large(L) 32*32*3 1362 1536 48*48*3 iGPT-XL 64*64*3 6801 3072 15360
上下文减少:
因为在使用密集注意力时,转换器解码器的内存需求与上下文长度成二次方扩展。这意味着即使是单层转换器也需要大量计算来训练。为了解决这个问题,作者将图像调整为较低的分辨率,称为输入分辨率 (IR)。 iGPT 模型使用32*32*3 、 48*48*3和64*64*3的 IR。
培训方法:
Image GPT的模型训练包括两个步骤:
预训练
- 给定一个由高维数据 x = (x 1 , …, x n ) 组成的未标记数据集 X,我们可以选择集合 [1, n] 的排列 π 并自动回归建模密度 p(x) 如下:
- 对于图像,我们为 1 ≤ i ≤ n 选择恒等排列 π i = i,也称为栅格顺序。该模型经过训练以最小化负对数似然:
- 作者还使用了类似于 BERT 中的掩码语言建模的损失函数,它对子序列M ⊂ [1, n]进行采样,使得每个索引i独立出现在 M 中的概率为 0.15。
- 在预训练期间,我们选择 L AR或 L BERT之一,并最大限度地减少预训练数据集的损失。
微调:
- 为了进行微调,作者在序列维度上执行平均池 n L 以提取每个示例的 d 维特征向量,并从平均池层学习投影。作者使用这个投影来最小化交叉熵损失 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论文