基于Image Transformers的双向编码、自监督视觉表征模型,使用Masked Image Modeling(MIM)
任务进行预训练。图1为预训练过程。
预训练前,利用discrete variational autoencoder(dVAE)
以自编码的方式训练词表大小为8192的“image tokenizer”,以将图片切分为离散的visual tokens。
预训练时,图像有image patches和visual tokens两种表示,首先将图片大小缩放至224x224,以网格法分割成14x14的patches,每个patch的大小为16x16,。随机掩盖部分image patches,即图中灰色的patches替换为[M]
,拉平作为视觉Transformer输入,预训练任务是将利用视觉Transformer输出的编码向量,还原掩盖的image patches对应的visual tokens。
使用网格分割法,将224x224的图片分割成14x14的patches,每个patch的大小为16x16。
以dVAE方式训练image tokenizer,模型包含tokenizer和decoder两部分。
Tokenizer qϕ(z∣x)q_\phi(\bm z|\bm x)qϕ(z∣x)将图片像素x\bm xx映射为离散的tokens z\bm zz,重构目标为Ez∼qϕ(z∣x)[logpψ(x∣z)]\mathbb{E}_{\bm z\sim q_\phi(\bm z|\bm x)}[\log p_\psi(\bm x|\bm z)]Ez∼qϕ(z∣x)[logpψ(x∣z)],使用Gumbel-softmax relaxation训练网络参数。
重参数化技巧(Gumbel-Softmax)
使用标准Transformer作为网络骨架。对于image patche序列x\bm xx,使用矩阵E∈RP2C×D\bm E\in \R^{P^2C\times D}E∈RP2C×D,将image patch线性投影为patch embeddings。输入序列头部添加[S]
,并与1D位置嵌入相加后作为骨架网络输入。
随机将40%的image patches替换为可学习嵌入e[M]∈RD\bm e_{[\mathtt M]}\in\R^{D}e[M]∈RD,经L层Transformer编码后得到隐状态{hiL}i=1N\{\bm h_{i}^L\}_{i=1}^N{hiL}i=1N,对于每一个掩盖的image patch,使用softmax分类层预测与之对应的visual tokens,预训练目标是最大化正确visual tokens的对数似然:
max∑x∈DE[∑i∈MlogpMIM(zi∣xM)],pMIM(z′∣xM)=softmaxz′(WchiL+bc)\max \sum_{\bm x\in\mathcal D}\mathbb E\bigg[\sum_{i\in\mathcal M}\log p_{\mathtt{MIM}}(z_i|x^{\mathcal M})\bigg],\quad p_{\mathtt{MIM}(z'|x^{\mathcal M})}=\text{softmax}_{z'}(\bm W_c\bm h_i^L+\bm b_c) maxx∈D∑E[i∈M∑logpMIM(zi∣xM)],pMIM(z′∣xM)=softmaxz′(WchiL+bc)
式中:
算法1 Blockwise Masking
输入: N(=h×w=h\times w=h×w) image patches
输出: 掩盖位置M\mathcal MM
M←{}\mathcal M \leftarrow \{\}M←{},重复以下步骤
采样blocksize,s←Rand(16,0.4N−∣M∣)s\leftarrow \mathtt{Rand}(16,0.4N-|\mathcal M|)s←Rand(16,0.4N−∣M∣)
采样行比率,r←Rand(0.3,1/0.3)r\leftarrow \mathtt{Rand}(0.3,1/0.3)r←Rand(0.3,1/0.3)
计算采样行列数,a←s⋅r;b←s/ra\leftarrow \sqrt{s·r}; b\leftarrow \sqrt{s/r}a←s⋅r;b←s/r
采样block的左上点,t←Rand(0,h−a);l←Rand(0,w−b)t\leftarrow \mathtt{Rand}(0,h-a);l\leftarrow \mathtt{Rand}(0,w-b)t←Rand(0,h−a);l←Rand(0,w−b)
合并采样结果,M←M⋃{(i,j):i∈[t,t+a],j∈[l,l+b]}\mathcal M\leftarrow \mathcal M \bigcup \{(i,j):i\in[t, t+a], j\in[l,l+b]\}M←M⋃{(i,j):i∈[t,t+a],j∈[l,l+b]}
直到: ∣M∣>0.4N|\mathcal M|>0.4N∣M∣>0.4N
返回: M\mathcal MM
BEiT使用两阶段预训练,一阶段预训练tokenizer,二阶段预训练MIM,预训练可被看作为变分自编码器。(没看懂)
网络架构与ViT-Base一致,12层Transformer,隐藏层维度768,注意力头12,前向网络中间维度3072。patch size为16x16,image tokenizer直接使用[RPG+21],词表大小为8192。
预训练数据集ImageNet-1K,含120万张图片,使用随机缩放、裁剪、水平翻转、色彩抖动图像增强策略,图片分辨率为224x224。使用网格法分割成14x14个image patches,并随机掩盖至多75个patches(约40%)。
预训练500k步,800epochs,batch size为2k,Adam β1,β2\beta1,\beta2β1,β2为0.9和0999,学习率1.5e-3,warmup 10epochs,学习率余弦衰减,weight decay 0.05,随机深度0.1,不使用dropout。16 V100 32GB耗时5天。
所有参数初始化范围至[-0.02, 0.02]稳定训练,缩放每一层自注意力和前馈网络的输出矩阵(每层的最后一层线性投影层)至12l\frac{1}{\sqrt{2l}}2l1。