1 前言
本期内容,我们将MAR(掩码自回归模型)。与传统的视觉自回归需要把图像离散化成一个个token的方式不同。MAR构建的是一个连续型的自回归模型。
视频:MAR:无矢量量化的自回归图像生成
2 引入
对于传统的自回归模型而言,比如VQGAN+GPT2,一般来说是需要先用VQGAN把图像量化成1D的token。然后再使用仅解码器的Transformer进行图像生成,比如GPT2。而本篇论文提出了一个问题——“图像自回归的离散化是否是必须的?”
论文认为这并不是必须的,因此,他们便想去构建一个连续型的视觉自回归模型。如何去构建呢?在我们的印象中,什么样的东西是直接对连续型数据直接建模的呢?用脚想一下,扩散模型不就是吗?让我们先来回顾一下传统的离散视觉自回归模型
3 离散视觉自回归模型
对于离散视觉自回归模型,往往我们会把图像离散化成一个个的token,比如我们离散化成n个token——
{
x
1
,
x
2
,
⋯
,
x
n
}
\{x^1,x^2,\cdots,x^n\}
{x1,x2,⋯,xn}。里面的每一个token可以表示一个个的整数。一般来说,视觉自回归使用的是的仅解码器架构,所以注意力使用的是因果注意力,我们可以把这些token的关系分解为
p
(
x
1
,
x
2
,
⋯
,
x
n
)
=
∏
i
=
1
n
p
(
x
i
∣
x
1
,
⋯
,
x
i
−
1
)
p(x^1,x^2,\cdots,x^n)=\prod\limits_{i=1}^np(x^i|x^1,\cdots,x^{i-1})
p(x1,x2,⋯,xn)=i=1∏np(xi∣x1,⋯,xi−1)
通俗来讲,就是当前时刻的状态,仅依赖于过去的所有时刻,而与未来无关。
为了与论文保持一致的结果,接下来我们定义 x x x为我们下一个要预测的token。记词汇表的大小为K(表示 x x x的取值只有K种,即 0 ≤ x ≤ K 0\le x\le K 0≤x≤K)。自回归模型进行生成的时候,会先生成一个连续型的D维向量,即 z ∈ R D z\in \mathbb{R}^D z∈RD。接着,会使用一个投影矩阵 W ∈ R K × D W\in \mathbb{R}^{K\times D} W∈RK×D将 z z z投影到K个类别大小,然后使用使用softmax将其转换为概率,我们可以把该过程用概率去表示 p ( x ∣ z ) = softmax ( W z ) p(x|z)=\text{softmax}(Wz) p(x∣z)=softmax(Wz)。
所以目前来说,我们认为下一个要预测的token x x x ,可以通过建模概率分布 p ( x ∣ z ) p(x|z) p(x∣z)来获得,离散自回归是将其表示为 softmax ( W z ) \text{softmax}(Wz) softmax(Wz)。那么问题就来了,我们是否可以用其他的方法去获得这个概率分布呢?
当然可以!我们之前所学习过的生成模型,不就是能够学习概率分布吗。假设我们能够学习出 p ( x ∣ z ) p(x|z) p(x∣z),那么当我们提供 z z z之后,便可获得 x x x,也就是生成 x x x。如果我们用其他生成模型去建模 p ( x ∣ z ) p(x|z) p(x∣z),比如扩散模型,那么也就没有离散化的硬性要求了,因为扩散模型本身就可以处理连续型的数据。
4 Diffusion Loss
我们用扩散模型去拟合 p ( x ∣ z ) p(x|z) p(x∣z)这个分布,拟合生成之后,给定一个 z z z,我们就可以获得 x x x了。
训练:
即图中所示,先获取自回归模型的
z
z
z,把他作为条件,然后利用
z
z
z和
x
x
x去训练扩散模型。即
L
(
z
,
x
)
=
E
ϵ
,
t
[
∥
ϵ
−
ϵ
θ
(
x
t
∣
t
,
z
)
∥
2
]
(1)
\mathcal{L}(z,x) = \mathbb{E}_{\epsilon,t}\left[\Vert \epsilon - \epsilon_{\theta}(x_t|t,z) \Vert^2 \right]\tag{1}
L(z,x)=Eϵ,t[∥ϵ−ϵθ(xt∣t,z)∥2](1)
其中,
ϵ
\epsilon
ϵ是一个高斯白噪声,
x
t
=
α
ˉ
t
x
+
1
−
α
ˉ
t
ϵ
x_t = \sqrt{\bar\alpha_t}x+\sqrt{1-\bar\alpha_t}\epsilon
xt=αˉtx+1−αˉtϵ,
α
ˉ
t
\bar\alpha_t
αˉt是噪声调度,t是噪声调度的时间步。如图中所示,扩散模型的网络结构只是一个小型的MLP网络,
ϵ
θ
(
x
t
∣
t
,
z
)
\epsilon_{\theta}(x_t|t,z)
ϵθ(xt∣t,z)表示将
x
t
x_t
xt作为网络的主输入,而
t
t
t和
z
z
z作为旁系条件输入。里面的
z
z
z是由自回归网络
f
f
f生成的,即
z
=
f
(
⋅
)
z=f(\cdot)
z=f(⋅)
注意到期望不仅对 ϵ \epsilon ϵ求,还对时刻t求了。为什么呢?论文提到,他们设计的去噪网络的结构很小,因此他们对于给定一个编码向量 z z z,会采样多个t。这有助于提高损失函数的利用率,而无需重新计算z。在训练得时候,每张图像抽样4次。
采样:
x
t
−
1
=
1
α
ˉ
t
(
x
t
−
1
−
α
t
1
−
α
ˉ
t
ϵ
θ
(
x
t
∣
t
,
z
)
)
+
σ
t
δ
x_{t-1} = \frac{1}{\sqrt{\bar\alpha_t}}\left( x_t -\frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta(x_t|t,z) \right)+\sigma_t\delta
xt−1=αˉt1(xt−1−αˉt1−αtϵθ(xt∣t,z))+σtδ
其中,
δ
\delta
δ是高斯白噪声,
σ
t
\sigma_t
σt是时间步t的噪声水平。初始化
x
T
∼
N
(
0
,
I
)
x_T\sim N(0,I)
xT∼N(0,I),然后条件去噪得到
x
0
x_0
x0,即得到
x
0
∼
p
(
x
∣
z
)
x_0\sim p(x|z)
x0∼p(x∣z)。去噪的时候,会引入一个温度系数
T
\mathcal{T}
T,用于缩放
σ
t
δ
\sigma_t\delta
σtδ。直观上,就是通过调整方差来控制样本多样性。
5 Diffusion Loss for Autoregressive Models
给定序列图像划分成一堆token
{
x
1
,
x
2
,
⋯
,
x
n
}
\{x^1,x^2,\cdots,x^n\}
{x1,x2,⋯,xn},我们的目标为
p
(
x
1
,
⋯
,
x
n
)
=
∏
i
=
1
n
p
(
x
i
∣
x
1
,
⋯
,
x
i
−
1
)
p(x^1,\cdots,x^n)=\prod\limits_{i=1}^np(x^i|x^1,\cdots,x^{i-1})
p(x1,⋯,xn)=i=1∏np(xi∣x1,⋯,xi−1)
请注意,这里的
x
i
x^i
xi是连续的,我们记自回归网络为
f
f
f。在预测
x
i
x^i
xi的时候,它依赖于
x
1
x^1
x1到
x
i
−
1
x^{i-1}
xi−1时刻的状态,所以,我们把他们送给自回归网络
f
f
f以获得
z
i
:
z
i
=
f
(
x
1
,
…
,
x
i
−
1
)
z^i:z^i=f(x^1,\dots,x^{i-1})
zi:zi=f(x1,…,xi−1)。然后,利用扩散模型计算
p
(
x
i
∣
z
i
)
p(x^i|z^i)
p(xi∣zi)来生成
x
i
x^i
xi。
6 双向注意力可以执行自回归
传统观念认为,只有因果注意力才能够执行自回归生成图像。而本文设计了一个双向注意力的自回归模型。此模型是基于MAE(掩码自编码器),运行流程难以描述出来,见视频当中。
7 MAR(掩码自回归模型)
掩码自回归模型能够不仅可以预测下一个token,还可以直接预测下一个token集合。
p
(
x
1
,
⋯
,
x
n
)
=
p
(
X
1
,
⋯
,
X
K
)
=
∏
k
K
p
(
X
k
∣
X
1
,
⋯
,
X
k
−
1
)
p(x^1,\cdots,x^n)=p(X^1,\cdots,X^K)=\prod\limits_{k}^K p (X^k|X^1,\cdots,X^{k-1})
p(x1,⋯,xn)=p(X1,⋯,XK)=k∏Kp(Xk∣X1,⋯,Xk−1)
其中,
X
k
=
{
x
i
,
x
i
+
1
,
⋯
,
x
j
}
X^k=\{x^i,x^{i+1},\cdots,x^j\}
Xk={xi,xi+1,⋯,xj},表示第k步要预测的token集合。见图
8 结束
好了,本期内容到此为止,如有问题,还望指出,阿里嘎多!