Lecture4 Latent Variable Model
在之前我们所介绍的Autoregressive Model和Flow Model中,讨论的都是observable的数据,及一切数据都是可以观测到的。这一讲主要讨论的是latent variable model,即有些变量我们是无法直接观测的。
Latent Variable
首先,我们需要理解什么是latent variable。Lecture中举了一个例子
上图中这几只柯基犬,他们所在的长椅,身后的大树,这些都是我们可以从图中直接观测到的。而图中整体的背景,狗分别对应第几个object,所在的位置坐标,这些不是我们能够直接从图上看出来的,就可以理解为latent variable。
然而对我来说,这个例子还是不够形象,因此我Wikipedia了一下,上面是这样解释的:
Latent variables, as created by factor analytic methods, generally represent “shared” variance, or the degree to which variables “move” together.
把这句话与我们的生成任务结合,其实就好理解了,latent variable可以看作是从一类数据中抽象出来的更加general的信息,或者说是一类数据的pattern、mode。比如上图,如果背景是latent variable之一,图中背景是公园里的树和长椅,那么也就意味着这种有狗狗的图片的背景通常和树、公园、长椅相关。
General Latent Variable Model
LVM的general形式可以用下图表示, z z z表示latent variable, x x x是我们的数据。latent variable服从一个概率分布 p Z ( z ) p_{Z}(z) pZ(z),这个分布也是我们给定的。
和之前一样,我们要解决的还是以下这几大问题:
- Sample: x ∼ p θ ( x ∣ z ) x \sim p_{\theta}(x|z) x∼pθ(x∣z)
- Inference: p θ ( x ) = ∑ z p Z ( z ) p θ ( x ∣ z ) p_{\theta}(x)\ =\ \sum_{z}p_{Z}(z)p_{\theta}(x|z) pθ(x) = ∑zpZ(z)pθ(x∣z)
- Train: max θ ∑ i log p θ ( x ( i ) ) = max θ ∑ i log ∑ z p Z ( z ) p θ ( x ( i ) ∣ z ) \max_{\theta}\ \sum_{i}\log p_{\theta}(x^{(i)})\ =\ \max_{\theta}\ \sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z) maxθ ∑ilogpθ(x(i)) = maxθ ∑ilog∑zpZ(z)pθ(x(i)∣z)
- Representation: x → z x \rightarrow z x→z
Variational Auto Encoder
首先,我们来看我们的training objective:
max
θ
∑
i
log
∑
z
p
Z
(
z
)
p
θ
(
x
(
i
)
∣
z
)
\max_{\theta}\ \ \sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z)
θmax i∑logz∑pZ(z)pθ(x(i)∣z)
很明显的一个问题是
z
z
z的取值,如果
z
z
z的取值比较少,我们假设是三种取值
A
,
B
,
C
A,B,C
A,B,C,并且每一种取值等概率,那么我们就可以直接用Gaussians来fit
p
θ
(
x
∣
z
)
p_{\theta}(x|z)
pθ(x∣z):
p
θ
(
x
∣
z
=
k
)
=
1
(
2
π
)
n
/
2
∣
Σ
k
∣
1
2
e
x
p
(
−
1
2
(
x
−
μ
k
)
T
Σ
k
−
1
(
x
−
μ
k
)
)
p_{\theta}(x|z=k)\ =\ \frac{1}{(2\pi)^{n/2}|\Sigma_{k}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{k})^T \Sigma_{k}^{-1}(x-\mu_k))
pθ(x∣z=k) = (2π)n/2∣Σk∣211exp(−21(x−μk)TΣk−1(x−μk))
那么training objective就变成了mixture of Gaussians:
max
μ
,
Σ
∑
i
log
[
1
3
1
(
2
π
)
n
/
2
∣
Σ
A
∣
1
2
e
x
p
(
−
1
2
(
x
−
μ
A
)
T
Σ
A
−
1
(
x
−
μ
A
)
)
+
1
3
1
(
2
π
)
n
/
2
∣
Σ
B
∣
1
2
e
x
p
(
−
1
2
(
x
−
μ
B
)
T
Σ
B
−
1
(
x
−
μ
B
)
)
+
1
3
1
(
2
π
)
n
/
2
∣
Σ
C
∣
1
2
e
x
p
(
−
1
2
(
x
−
μ
C
)
T
Σ
C
−
1
(
x
−
μ
C
)
)
]
\max_{\mu, \Sigma}\ \ \ \sum_{i}\log [\frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{A}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{A})^T \Sigma_{A}^{-1}(x-\mu_A)) + \\ \frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{B}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{B})^T \Sigma_{B}^{-1}(x-\mu_B)) + \\ \frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{C}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{C})^T \Sigma_{C}^{-1}(x-\mu_C))]
μ,Σmax i∑log[31(2π)n/2∣ΣA∣211exp(−21(x−μA)TΣA−1(x−μA))+31(2π)n/2∣ΣB∣211exp(−21(x−μB)TΣB−1(x−μB))+31(2π)n/2∣ΣC∣211exp(−21(x−μC)TΣC−1(x−μC))]
上图是一个二维的例子。
那如果 z z z的取值非常多,我们没办法一一列举呢?事实上这才是绝大多数情况。一种方法是prior sampling
Prior Sampling
主要思想是既然
z
z
z取值太多,那么我们就sample一些
z
z
z做一个approximation。
∑
i
log
∑
z
p
Z
(
z
)
p
θ
(
x
(
i
)
∣
z
)
≃
∑
i
log
1
K
∑
k
=
1
K
p
θ
(
x
(
i
)
∣
z
k
(
i
)
)
z
k
(
i
)
∼
p
Z
(
z
)
\sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z)\ \simeq \sum_{i}\log \frac{1}{K}\sum_{k=1}^{K}p_{\theta}(x^{(i)}|z^{(i)}_{k})\ \ \ \ \ z^{(i)}_{k} \sim p_{Z}(z)
i∑logz∑pZ(z)pθ(x(i)∣z) ≃i∑logK1k=1∑Kpθ(x(i)∣zk(i)) zk(i)∼pZ(z)
这样做有两个问题:
- 在有些情况里,sample z z z from p Z ( z ) p_{Z}(z) pZ(z)可能比较困难
- sample出来的 z z z与我们的 x x x不相关,这种概率非常大
Importance Sampling
来看怎么改进,下面需要一些数学推导,我们先把objective抽象成如下形式:
E
z
∼
p
Z
(
z
)
f
(
z
)
\mathbb{E}_{z \sim p_{Z}(z)}f(z)
Ez∼pZ(z)f(z)
E
z
∼
p
Z
(
z
)
[
f
(
z
)
]
=
∑
z
p
Z
(
z
)
f
(
z
)
=
∑
z
q
(
z
)
q
(
z
)
p
Z
(
z
)
f
(
z
)
=
E
z
∼
q
(
z
)
p
Z
(
z
)
q
(
z
)
f
(
z
)
\mathbb{E}_{z \sim p_Z(z)}[f(z)]\ =\ \sum_{z}p_Z(z)f(z) \\ =\ \sum_{z}\frac{q(z)}{q(z)}p_{Z}(z)f(z) \\ =\ \mathbb{E}_{z \sim q(z)} \frac{p_Z(z)}{q(z)}f(z)
Ez∼pZ(z)[f(z)] = z∑pZ(z)f(z)= z∑q(z)q(z)pZ(z)f(z)= Ez∼q(z)q(z)pZ(z)f(z)
这样一来,我们就把
z
z
z的概率分布从
p
Z
(
z
)
p_{Z}(z)
pZ(z)转移到了
q
(
z
)
q(z)
q(z),于是只要我们让
q
(
z
)
q(z)
q(z)能够满足:
- sample z z z很容易
- sample出来的 z z z是informative的,与我们的 x x x是相关的
那就可以再使用prior sampling的方法去做approximation了。于是问题转变成了怎么选取 q ( z ) q(z) q(z)。我们先不看第一个要求,先考虑第二个,我们希望sample的 z z z能够和我们的 x x x对应起来,把这句话换个说法,也就是给定 x x x,我们希望sample出来的 z z z的概率越大越好,那不就是 p θ ( z ∣ x ) = p θ ( x ∣ z ) p Z ( z ) p θ ( x ) p_{\theta}(z|x)\ =\ \frac{p_{\theta}(x|z)p_{Z}(z)}{p_{\theta}(x)} pθ(z∣x) = pθ(x)pθ(x∣z)pZ(z)么?
唯一的问题是,我们现在还不确定怎么从这个分布里进行sample。那再换种思路,如果我们令
q
(
z
)
q(z)
q(z)是一个好sample的分布,比如Gaussian,然后让这个
q
(
z
)
q(z)
q(z)和
p
θ
(
z
∣
x
)
p_{\theta}(z|x)
pθ(z∣x)越接近越好不就解决了么?如何measure两个分布的差距?自然想到用
K
L
KL
KL Divergence。
m
i
n
q
(
z
)
K
L
(
q
(
z
)
∣
∣
p
θ
(
z
∣
x
)
)
=
m
i
n
q
(
z
)
E
z
∼
q
(
z
)
log
(
q
(
z
)
p
θ
(
z
∣
x
)
)
=
m
i
n
q
(
z
)
E
z
∼
q
(
z
)
log
(
q
(
z
)
p
θ
(
x
∣
z
)
p
Z
(
z
)
/
p
θ
(
x
)
)
=
m
i
n
q
(
z
)
E
z
∼
q
(
z
)
[
log
q
(
z
)
−
log
p
θ
(
x
∣
z
)
−
log
p
Z
(
z
)
]
+
log
p
θ
(
x
)
min_{q(z)} KL(q(z) || p_{\theta}(z|x)) \\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} \log(\frac{q(z)}{p_{\theta}(z|x)}) \\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} \log(\frac{q(z)}{p_{\theta}(x|z)p_{Z}(z)/p_{\theta}(x)})\\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} [\log q(z) - \log p_{\theta}(x|z) - \log p_{Z}(z)] + \log p_{\theta}(x)
minq(z)KL(q(z)∣∣pθ(z∣x))=minq(z)Ez∼q(z)log(pθ(z∣x)q(z))=minq(z)Ez∼q(z)log(pθ(x∣z)pZ(z)/pθ(x)q(z))=minq(z)Ez∼q(z)[logq(z)−logpθ(x∣z)−logpZ(z)]+logpθ(x)
Amortized Inference
考虑到当inference的需求量比较高时,每次我们都需要train一个独立的 q ( z ) q(z) q(z),效率比较低。于是我们可以也把 q ( z ) q(z) q(z)做一个parameterize,就是用neural network来拟合 q ( z ) q(z) q(z),于是 q ( z ) q(z) q(z)就变成了 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)。这样做的好处是比较快,但是准确性自然就有所下降。
Variational Lower Bound
我们把上面得到的式子做一个移项就能够得到
log
p
θ
(
x
)
=
E
z
∼
q
ϕ
(
z
)
[
log
p
θ
(
x
∣
z
)
+
log
p
Z
(
z
)
−
log
q
ϕ
(
z
)
]
+
K
L
(
q
ϕ
(
z
∣
x
)
∣
∣
p
θ
(
x
∣
z
)
)
\log p_{\theta}(x)\ =\ \mathbb{E}_{z \sim q_{\phi}(z)} [\log p_{\theta}(x|z) + \log p_{Z}(z) - \log q_{\phi}(z)] + KL(q_{\phi}(z|x) || p_{\theta}(x|z))
logpθ(x) = Ez∼qϕ(z)[logpθ(x∣z)+logpZ(z)−logqϕ(z)]+KL(qϕ(z∣x)∣∣pθ(x∣z))
等式右边第一项就叫做Variational Lower Bound(VLB)。我们的目标是maximize likelihood,也就是等式左边,同时minimize 我们构造出的
q
ϕ
(
z
)
q_{\phi}(z)
qϕ(z)与
p
θ
(
x
∣
z
)
p_{\theta}(x|z)
pθ(x∣z)之间的KL divergence,因此我们的training objective就等价为maximize VLB。