生成模型中的推断
模型分为生成模型和判别模型,生成模型能够随机生成观测数据,同时对观测值
X
X
X和标注值
Y
Y
Y进行概率建模,从而计算出
P
(
X
,
Y
)
P(X,Y)
P(X,Y),而判别模型只能建立从观测值
X
X
X到标注值
Y
Y
Y之间的映射,从而计算出
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)。在深度学习的生成模型中,一般会把观测值
x
x
x称为可见变量
v
v
v,将标注值
y
y
y称为不可见的隐变量
h
h
h。
许多概率生成模型为了计算
p
(
v
,
h
)
p(v,h)
p(v,h),需要采用一些训练方法。对于采用极大似然的训练方法,此过程中必然要计算
p
(
h
∣
v
)
p(h|v)
p(h∣v)或其期望,而计算
p
(
h
∣
v
)
p(h|v)
p(h∣v)的过程称为推断。
θ
∗
=
a
r
g
m
a
x
θ
E
v
∼
p
^
d
a
t
a
l
o
g
p
m
o
d
e
l
(
v
;
θ
)
=
a
r
g
m
a
x
θ
E
v
∼
p
^
d
a
t
a
l
o
g
∑
h
p
m
o
d
e
l
(
v
,
h
)
=
a
r
g
m
a
x
θ
∑
v
l
o
g
∑
h
p
m
o
d
e
l
(
h
∣
v
)
\theta^*=argmax_\theta\mathbb{E}_{v\sim\hat{p}_{data}}log\ p_{model}(v;\theta)\\ =argmax_\theta\mathbb{E}_{v\sim\hat{p}_{data}}log\sum_hp_{model}(v,h)\\ =argmax_\theta\sum_vlog\sum_hp_{model}(h|v)
θ∗=argmaxθEv∼p^datalog pmodel(v;θ)=argmaxθEv∼p^datalogh∑pmodel(v,h)=argmaxθv∑logh∑pmodel(h∣v)
然而,除了少数简单图模型,如RBM和PCA可以很方便计算
p
(
h
∣
v
)
p(h|v)
p(h∣v),大多数有多个隐层的图模型,都难以计算
p
(
h
∣
v
)
p(h|v)
p(h∣v),称为推断困难。对于这种模型,精确推断算法需要指数级计算量,所以采用近似推断。
将推断视作优化问题
有时候边缘化消去
h
h
h的操作很费时,会难以计算观测值的对数概率
l
o
g
p
(
v
;
θ
)
log\ p(v;\theta)
log p(v;θ),可以计算
l
o
g
p
(
v
;
θ
)
log\ p(v;\theta)
log p(v;θ)的ELBO证据下界
L
(
v
,
θ
,
q
)
\mathcal{L}(v,\theta,q)
L(v,θ,q)来作为替代。
L
(
v
,
θ
,
q
)
=
l
o
g
p
(
v
;
θ
)
−
D
K
L
(
q
(
h
∣
v
)
∣
∣
p
(
h
∣
v
;
θ
)
)
\mathcal{L}(v,\theta,q)=log\ p(v;\theta)-D_{KL}(q(h|v)||p(h|v;\theta))
L(v,θ,q)=log p(v;θ)−DKL(q(h∣v)∣∣p(h∣v;θ))
因为
l
o
g
p
(
v
)
log\ p(v)
log p(v)和
L
(
v
,
θ
,
q
)
\mathcal{L}(v,\theta,q)
L(v,θ,q)之间差了一个
K
L
KL
KL散度,而散度一定是非负的,
所以
L
\mathcal{L}
L必定小于等于
l
o
g
p
(
v
;
θ
)
log\ p(v;\theta)
log p(v;θ),当且仅当分布
q
(
h
∣
v
)
=
p
(
h
∣
v
)
q(h|v)=p(h|v)
q(h∣v)=p(h∣v)时,取到等号。
L
(
v
,
θ
,
q
)
=
l
o
g
p
(
v
;
θ
)
−
D
K
L
(
q
(
h
∣
v
)
∣
∣
p
(
h
∣
v
;
θ
)
)
=
l
o
g
p
(
v
;
θ
)
−
E
h
∼
q
l
o
g
q
(
h
∣
v
)
p
(
h
∣
v
)
=
l
o
g
p
(
v
;
θ
)
−
E
h
∼
q
l
o
g
q
(
h
∣
v
)
p
(
h
,
v
;
θ
)
p
(
v
;
θ
)
=
l
o
g
p
(
v
;
θ
)
−
E
h
∼
q
[
l
o
g
q
(
h
∣
v
)
−
l
o
g
p
(
h
,
v
;
θ
)
+
l
o
g
p
(
v
;
θ
)
]
=
−
E
h
∼
q
[
l
o
g
q
(
h
∣
v
)
−
l
o
g
p
(
h
,
v
;
θ
)
]
=
E
h
∼
q
[
l
o
g
p
(
h
,
v
)
]
+
H
(
q
)
(51)
\mathcal{L}(v,\theta,q)=logp(v;\theta)-D_{KL}(q(h|v)||p(h|v;\theta)) \\ =logp(v;\theta)-\mathbb{E}_{h\sim q}log\frac{q(h|v)}{p(h|v)} \\ =logp(v;\theta)-\mathbb{E}_{h\sim q}log\frac{q(h|v)}{\frac{p(h,v;\theta)}{p(v;\theta)}} \\ =logp(v;\theta)-\mathbb{E}_{h\sim q}[logq(h|v)-logp(h,v;\theta)+logp(v;\theta)] \\ =-\mathbb{E}_{h\sim q}[logq(h|v)-logp(h,v;\theta)] \\ =\mathbb{E}_{h\sim q}[logp(h,v)]+H(q) \tag{51}
L(v,θ,q)=logp(v;θ)−DKL(q(h∣v)∣∣p(h∣v;θ))=logp(v;θ)−Eh∼qlogp(h∣v)q(h∣v)=logp(v;θ)−Eh∼qlogp(v;θ)p(h,v;θ)q(h∣v)=logp(v;θ)−Eh∼q[logq(h∣v)−logp(h,v;θ)+logp(v;θ)]=−Eh∼q[logq(h∣v)−logp(h,v;θ)]=Eh∼q[logp(h,v)]+H(q)(51)
对于一个合适选择的分布
q
(
h
∣
v
)
q(h|v)
q(h∣v),
L
(
v
,
θ
,
q
)
\mathcal{L}(v,\theta,q)
L(v,θ,q)是容易计算的,对任意一个分布
q
(
h
∣
v
)
q(h|v)
q(h∣v),
L
(
v
,
θ
,
q
)
\mathcal{L}(v,\theta,q)
L(v,θ,q)提供了似然函数
l
o
g
p
(
v
;
θ
)
log\ p(v;\theta)
log p(v;θ)的一个下界,因此可以将推断问题,看做是寻找一个分布
q
(
h
∣
v
)
q(h|v)
q(h∣v)使
L
(
v
,
θ
,
q
)
\mathcal{L}(v,\theta,q)
L(v,θ,q)最大的过程。
坐标上升推断
将 L ( v , θ , q ) \mathcal{L}(v,\theta,q) L(v,θ,q)作为需要优化的目标函数,采用坐标上升算法,分别依次对 θ \theta θ和 q q q变量进行更新并交替迭代,也称为EM算法。在E阶段更新分布 q q q来最大化 L \mathcal{L} L,在M阶段更新 θ \theta θ来最大化 L \mathcal{L} L。
- E阶段:固定 θ \theta θ,更新 q ( h ∣ v ( i ) ) = a r g m a x q L ( v ( i ) , θ , q ) = p ( h ∣ v ( i ) ; θ ) q(h|v^{(i)})=argmax_q\mathcal{L}(v^{(i)},\theta,q)=p(h|v^{(i)};\theta) q(h∣v(i))=argmaxqL(v(i),θ,q)=p(h∣v(i);θ)
- M阶段:固定 q q q,更新 θ = a r g m a x θ ∑ i L ( v ( i ) , θ , q ) \theta=argmax_\theta\sum_i\mathcal{L}(v^{(i)},\theta,q) θ=argmaxθ∑iL(v(i),θ,q)
虽然E阶段采用精确推断算法计算 q q q,但是 θ \theta θ实际上有差异,所以可以看作近似推断。
最大后验推断
一般的推断是计算
p
(
h
∣
v
)
p(h|v)
p(h∣v)的完整概率分布,另一种情况是只计算
p
(
h
∣
v
)
p(h|v)
p(h∣v)的点估计,即只计算
h
h
h的一个最可能值来代替在所有可能值的完整分布上的推断,称为最大后验推断MAP。
h
∗
=
a
r
g
m
a
x
h
p
(
h
∣
v
)
h^*=argmax_hp(h|v)
h∗=argmaxhp(h∣v)
虽然MAP是精确计算
p
(
h
∣
v
)
p(h|v)
p(h∣v),但是只给出最可能的值而不是完整分布,这并不能提供最优的
q
q
q,所以可以看作近似推断。
回顾推断定义,对于一个无限制的概率分布族中的分布
q
q
q,使用优化算法最大化
L
(
v
,
θ
,
q
)
=
E
h
∼
q
[
l
o
g
p
(
h
,
v
)
]
+
H
(
q
)
\mathcal{L}(v,\theta,q)=\mathbb{E}_{h\sim q}[log\ p(h,v)]+H(q)
L(v,θ,q)=Eh∼q[log p(h,v)]+H(q)
假设分布
q
q
q为Dirac分布
q
(
h
∣
v
)
=
δ
(
h
−
μ
)
q(h|v)=\delta(h-\mu)
q(h∣v)=δ(h−μ)
丢弃
L
\mathcal{L}
L中不随
μ
\mu
μ变化的项,求解
μ
\mu
μ的最优化问题为
μ
∗
=
a
r
g
m
a
x
μ
l
o
g
p
(
h
=
μ
,
v
)
\mu^*=argmax_\mu log\ p(h=\mu,v)
μ∗=argmaxμlog p(h=μ,v)这等价于MAP推断问题
h
∗
=
a
r
g
m
a
x
h
p
(
h
∣
v
)
h^*=argmax_h\ p(h|v)
h∗=argmaxh p(h∣v)
回顾到坐标上升推断的EM算法,可以在E阶段使用MAP推断估计出
h
∗
h^*
h∗,M阶段更新
θ
∗
\theta^*
θ∗以增大
l
o
g
p
(
h
∗
,
v
)
log\ p(h^*,v)
log p(h∗,v)。
稀疏编码模型,在线性因子模型的基础上,对隐变量加了一个诱导稀疏性的先验,一个常用的选择是Laplace先验。
p
(
h
i
)
=
h
2
e
x
p
(
−
λ
∣
h
i
∣
)
p(h_i)=\frac{h}{2}exp(-\lambda|h_i|)
p(hi)=2hexp(−λ∣hi∣)
可见变量的数据是由一个线性变化加上噪声构成
p
(
v
∣
h
)
=
N
(
v
;
W
h
+
b
,
β
−
1
I
)
p(v|h)=\mathcal{N}(v;Wh+b,\beta^{-1}I)
p(v∣h)=N(v;Wh+b,β−1I)
分布
p
(
h
∣
v
)
p(h|v)
p(h∣v)难以计算,因为
h
i
h_i
hi和
h
j
h_j
hj之间会相互影响,难以直接确定。在高斯模型中,
h
i
h_i
hi和
h
j
h_j
hj之间可以通过协方差矩阵高效建模,但是稀疏模型中的稀疏先验使其相互作用关系不服从高斯分布。因此,稀疏模型难以通过极大似然估计来进行学习,而是通过MAP推断和
L
\mathcal{L}
L来学习。将向量
h
h
h拼成矩阵
H
H
H,将
v
v
v拼成矩阵
V
V
V,那么稀疏编码问题为最小化。
J
(
H
,
W
)
=
∑
i
,
j
∣
H
i
,
j
∣
+
∑
i
,
j
(
V
−
H
W
T
)
i
,
j
2
J(H,W)=\sum_{i,j}|H_{i,j}|+\sum_{i,j}(V-HW^T)^2_{i,j}
J(H,W)=i,j∑∣Hi,j∣+i,j∑(V−HWT)i,j2