从本节开始,将介绍配分函数。[花书第三部分——第18章直面配分函数(Confronting Partition Function)]
其中
X
\mathcal X
X表示随机变量集合;
η
\eta
η表示模型参数。
表示极大团的数量/编号;
ψ
i
(
x
C
i
)
\psi_i(x_{\mathcal C_i})
ψi(xCi)表示极大团
x
C
i
x_{\mathcal C_i}
xCi对应的势函数结果;
X
∈
R
p
\mathcal X \in \mathbb R^p
X∈Rp.求解配分函数的目的是针对
Learning
\text{Learning}
Learning问题:给定样本集合
X
\mathcal X
X(可观测的),将概率模型
P
(
X
;
θ
)
\mathcal P(\mathcal X;\theta)
P(X;θ)中的模型参数
θ
\theta
θ求解出来:
如极大似然估计,最大后验概率估计,EM算法~
θ
^
=
arg
max
θ
P
(
X
;
θ
)
\hat \theta = \mathop{\arg\max}\limits_{\theta} \mathcal P(\mathcal X;\theta)
θ^=θargmaxP(X;θ)
在参数 θ \theta θ的求解过程中,需要求解配分函数 Z \mathcal Z Z对原式进行归一化处理(Normalization);
Evaluation
\text{Evaluation}
Evaluation问题:如果此时模型已经求解(模型参数
θ
\theta
θ,未归一化的概率密度函数
P
(
X
)
\mathcal P(\mathcal X)
P(X)均以求解),但是关于
X
\mathcal X
X的联合概率分布
P
(
X
;
θ
)
\mathcal P(\mathcal X ; \theta)
P(X;θ)由于没有归一化因子依然无法求解。
这里所说的模型一般是指‘无向图模型’。有向图模型的求值问题,如之前介绍的
隐马尔可夫模型——前向、后向算法就不会出现这种情况.
因为有向图模型可以通过‘因子分解’准确找出各随机变量之间的条件关系。当然,隐马尔可夫模型有‘齐次马尔可夫假设、观测独立性假设’的约束,可以更加简化迭代过程。
从样本(Sample)的角度观察,样本集合
X
\mathcal X
X中包含
N
N
N个样本:
X
=
{
x
(
i
)
}
i
=
1
N
\mathcal X = \{x^{(i)}\}_{i=1}^N
X={x(i)}i=1N
从随机变量(Random Variable)的角度观察,已知随机变量集合
X
∈
R
p
\mathcal X \in \mathcal R^p
X∈Rp,并且
p
p
p个随机变量
x
i
(
i
=
1
,
2
,
⋯
,
p
)
x_i(i=1,2,\cdots,p)
xi(i=1,2,⋯,p)均服从伯努利分布:
X
∈
{
0
,
1
}
p
\mathcal X \in \{0,1\}^p
X∈{0,1}p
那么关于
X
\mathcal X
X有效的概率分布/概率密度函数
P
(
X
;
θ
)
\mathcal P(\mathcal X;\theta)
P(X;θ)表示如下:
这里说的‘有效的’指的是归一化后的、可以直接使用的概率密度函数。
P
(
X
;
θ
)
=
1
Z
(
θ
)
P
^
(
X
;
θ
)
Z
(
θ
)
=
∑
x
1
,
⋯
,
x
p
P
^
(
X
;
θ
)
P(X;θ)=1Z(θ)ˆP(X;θ)Z(θ)=∑x1,⋯,xpˆP(X;θ)
P(X;θ)Z(θ)=Z(θ)1P^(X;θ)=x1,⋯,xp∑P^(X;θ)
其中
P
^
(
X
;
θ
)
\hat {\mathcal P}(\mathcal X;\theta)
P^(X;θ)是未归一化的、从概率图模型中直接得到的概率密度函数;
Z
(
θ
)
\mathcal Z(\theta)
Z(θ)表示配分函数。
很明显,随机变量
x
1
,
⋯
,
x
p
x_1,\cdots,x_p
x1,⋯,xp全部被积分掉了。配分函数
Z
\mathcal Z
Z仅和模型参数
θ
\theta
θ相关。
在学习任务中,常用的求解模型参数方式是极大似然估计(Maximum Likelihood Estimation,MLE):
依然假设样本之间属于‘独立同分布’,引入
log
\log
log函数,并不影响最值的取值结果。
θ
^
=
arg
max
θ
P
(
X
;
θ
)
=
arg
max
θ
log
∏
i
=
1
N
P
(
x
(
i
)
;
θ
)
=
arg
max
θ
∑
i
=
1
N
log
P
(
x
(
i
)
;
θ
)
ˆθ=argmax
θ^=θargmaxP(X;θ)=θargmaxlogi=1∏NP(x(i);θ)=θargmaxi=1∑NlogP(x(i);θ)
将
P
(
X
;
θ
)
=
1
Z
(
θ
)
P
^
(
X
;
θ
)
\mathcal P(\mathcal X;\theta) = \frac{1}{\mathcal Z(\theta)} \hat {\mathcal P}(\mathcal X;\theta)
P(X;θ)=Z(θ)1P^(X;θ)代入,有:
θ
^
=
arg
max
θ
∑
i
=
1
N
log
[
1
Z
(
θ
)
P
^
(
x
(
i
)
;
θ
)
]
=
arg
max
θ
∑
i
=
1
N
[
log
P
^
(
x
(
i
)
;
θ
)
−
log
Z
(
θ
)
]
θ^=θargmaxi=1∑Nlog[Z(θ)1P^(x(i);θ)]=θargmaxi=1∑N[logP^(x(i);θ)−logZ(θ)]
由于配分函数
Z
(
θ
)
\mathcal Z(\theta)
Z(θ)中不含
i
i
i,因而上式可继续简化:
直接在等式右侧除以
N
N
N,系数并不影响最值的取值结果。
θ
^
=
arg
max
θ
∑
i
=
1
N
log
P
^
(
x
(
i
)
;
θ
)
−
N
⋅
log
Z
(
θ
)
=
arg
max
θ
1
N
∑
i
=
1
N
log
P
^
(
x
(
i
)
;
θ
)
−
log
Z
(
θ
)
θ^=θargmaxi=1∑NlogP^(x(i);θ)−N⋅logZ(θ)=θargmaxN1i=1∑NlogP^(x(i);θ)−logZ(θ)
由于是求解最大值,因此将 L ( θ ) = 1 N ∑ i = 1 N log P ^ ( X ; θ ) − log Z ( θ ) \mathcal L(\theta) = \frac{1}{N}\sum_{i=1}^N \log \hat {\mathcal P}(\mathcal X;\theta) - \log \mathcal Z(\theta) L(θ)=N1∑i=1NlogP^(X;θ)−logZ(θ)看做目标函数,使用梯度上升法(Gradient Ascent)对模型参数近似求解:
L
(
θ
)
\mathcal L(\theta)
L(θ)对
θ
\theta
θ求解梯度:
这个对应花书-直面配分函数公式(18.4)
∇
θ
L
(
θ
)
=
1
N
∑
i
=
1
N
[
∇
θ
log
P
^
(
x
(
i
)
;
θ
)
]
−
∇
θ
log
Z
(
θ
)
\nabla_{\theta} \mathcal L(\theta) = \frac{1}{N} \sum_{i=1}^N \left[\nabla_{\theta}\log \hat {\mathcal P}(x^{(i)};\theta)\right] - \nabla_{\theta} \log \mathcal Z(\theta)
∇θL(θ)=N1i=1∑N[∇θlogP^(x(i);θ)]−∇θlogZ(θ)
通常称
1
N
∑
i
=
1
N
[
∇
θ
log
P
^
(
x
(
i
)
;
θ
)
]
\frac{1}{N} \sum_{i=1}^N \left[\nabla_{\theta}\log \hat {\mathcal P}(x^{(i)};\theta)\right]
N1∑i=1N[∇θlogP^(x(i);θ)]部分为 正相(Positive Phase);称
∇
θ
log
Z
(
θ
)
\nabla_{\theta} \log \mathcal Z(\theta)
∇θlogZ(θ)为 负相(Negative)。在当前示例中,所有随机变量均是基于样本的观测变量,不包含隐变量。因此,正相的求解仅需要将样本带入即可:
需要注意的是,每一次求解梯度都需要带入
N
N
N个样本,这种方法就是传统的‘批量梯度上升法’。
(
Batch Gradient Ascent,BGA
)
(\text{Batch Gradient Ascent,BGA})
(Batch Gradient Ascent,BGA)
‘批量梯度下降法’也是同理的。
(Batch Gradient Descent,BGD)
\text{(Batch Gradient Descent,BGD)}
(Batch Gradient Descent,BGD)
如果从已知
N
N
N个样本中选出
m
(
m
<
N
)
m(m < N)
m(m<N)个样本计算梯度,对应名称即
(miniBatch Gradient Descent/Ascent)
\text{(miniBatch Gradient Descent/Ascent)}
(miniBatch Gradient Descent/Ascent).
x
(
i
)
⇒
1
N
∑
i
=
1
N
∇
θ
P
^
(
x
(
i
)
;
θ
)
P
^
(
x
(
i
)
;
θ
)
x^{(i)} \Rightarrow \frac{1}{N}\sum_{i=1}^N \frac{\nabla_{\theta} \hat {\mathcal P}(x^{(i)};\theta)}{\hat {\mathcal P}(x^{(i)};\theta)}
x(i)⇒N1i=1∑NP^(x(i);θ)∇θP^(x(i);θ)
受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)由于观测变量给定的条件下,隐变量之间相互独立。因此,受限玻尔兹曼机是一个典型的正相容易求解,负相难求解的模型。
而负相的求解是困难的。这里着重观察
log
Z
(
θ
)
\log \mathcal Z(\theta)
logZ(θ)梯度的求解过程。
∇
θ
log
Z
(
θ
)
=
1
Z
(
θ
)
∇
θ
Z
(
θ
)
\nabla_{\theta} \log \mathcal Z(\theta) = \frac{1}{\mathcal Z(\theta)} \nabla_{\theta} \mathcal Z(\theta)
∇θlogZ(θ)=Z(θ)1∇θZ(θ)
将
Z
(
θ
)
=
∑
x
1
,
⋯
,
x
p
P
^
(
X
;
θ
)
\mathcal Z(\theta) = \sum_{x_1,\cdots,x_p} \hat {\mathcal P}(\mathcal X;\theta)
Z(θ)=∑x1,⋯,xpP^(X;θ)带入上式,有:
∇
θ
log
Z
(
θ
)
=
1
Z
(
θ
)
⋅
∇
θ
∑
x
1
,
⋯
,
x
p
P
^
(
X
;
θ
)
\nabla_{\theta} \log \mathcal Z(\theta) = \frac{1}{\mathcal Z(\theta)}\cdot \nabla_{\theta} \sum_{x_1,\cdots,x_p} \hat {\mathcal P}(\mathcal X;\theta)
∇θlogZ(θ)=Z(θ)1⋅∇θx1,⋯,xp∑P^(X;θ)
根据牛顿-莱布尼兹公式,有:
积分-梯度符号互换。
∇
θ
log
Z
(
θ
)
=
1
Z
(
θ
)
⋅
∑
x
1
,
⋯
,
x
p
∇
θ
P
^
(
X
;
θ
)
\nabla_{\theta} \log \mathcal Z(\theta) = \frac{1}{\mathcal Z(\theta)} \cdot \sum_{x_1,\cdots,x_p} \nabla_{\theta} \hat {\mathcal P}(\mathcal X;\theta)
∇θlogZ(θ)=Z(θ)1⋅x1,⋯,xp∑∇θP^(X;θ)
由于
Z
(
θ
)
\mathcal Z(\theta)
Z(θ)自身和
X
\mathcal X
X没有任何关系(因为
x
1
,
⋯
,
x
p
x_1,\cdots,x_p
x1,⋯,xp均被积分掉了),因此这里使用一些技巧:将
1
Z
(
θ
)
\frac{1}{\mathcal Z(\theta)}
Z(θ)1添加到积分号
∑
x
1
,
⋯
,
x
p
\sum_{x_1,\cdots,x_p}
∑x1,⋯,xp中:
根据
P
(
X
;
θ
)
=
1
Z
(
θ
)
P
^
(
X
;
θ
)
\mathcal P(\mathcal X;\theta) = \frac{1}{\mathcal Z(\theta)} \hat {\mathcal P}(\mathcal X;\theta)
P(X;θ)=Z(θ)1P^(X;θ)有
1
Z
(
θ
)
=
P
(
X
;
θ
)
P
^
(
X
;
θ
)
\frac{1}{\mathcal Z(\theta)} = \frac{\mathcal P(\mathcal X;\theta)}{\hat {\mathcal P}(\mathcal X;\theta)}
Z(θ)1=P^(X;θ)P(X;θ)并带入到式子中。
∇
θ
log
Z
(
θ
)
=
∑
x
1
,
⋯
,
x
p
1
Z
(
θ
)
⋅
∇
θ
P
^
(
X
;
θ
)
=
∑
x
1
,
⋯
,
x
p
[
P
(
X
;
θ
)
⋅
1
P
^
(
X
;
θ
)
⋅
∇
θ
P
^
(
X
;
θ
)
]
∇θlogZ(θ)=x1,⋯,xp∑Z(θ)1⋅∇θP^(X;θ)=x1,⋯,xp∑[P(X;θ)⋅P^(X;θ)1⋅∇θP^(X;θ)]
观察
1
P
^
(
X
;
θ
)
⋅
∇
θ
P
^
(
X
;
θ
)
\frac{1}{\hat {\mathcal P}(\mathcal X;\theta)} \cdot \nabla_{\theta} \hat {\mathcal P}(\mathcal X;\theta)
P^(X;θ)1⋅∇θP^(X;θ),它可以化简为:
1
P
^
(
X
;
θ
)
⋅
∇
θ
P
^
(
X
;
θ
)
=
∇
θ
log
P
^
(
X
;
θ
)
\frac{1}{\hat {\mathcal P}(\mathcal X;\theta)} \cdot \nabla_{\theta} \hat {\mathcal P}(\mathcal X;\theta) = \nabla_{\theta} \log \hat {\mathcal P}(\mathcal X;\theta)
P^(X;θ)1⋅∇θP^(X;θ)=∇θlogP^(X;θ)
最终关于梯度
∇
θ
log
Z
(
θ
)
\nabla_{\theta} \log \mathcal Z(\theta)
∇θlogZ(θ)可表示为:
∇
θ
log
Z
(
θ
)
=
∑
x
1
,
⋯
,
x
p
P
(
X
;
θ
)
⋅
∇
θ
log
P
^
(
X
;
θ
)
=
E
P
(
X
;
θ
)
[
∇
θ
log
P
^
(
X
;
θ
)
]
∇θlogZ(θ)=x1,⋯,xp∑P(X;θ)⋅∇θlogP^(X;θ)=EP(X;θ)[∇θlogP^(X;θ)]
关于这个期望结果,由于没有办法求解它的精确解,因此常用蒙特卡洛方法(Monti Carlo Method)进行近似求解。
下一节将介绍随机最大似然(Stochastic Maximum Likelihood)与对比散度(Contrastive Divergence)。
相关参考:
直面配分函数-1-The log-likelihood gradient
深度学习(花书)——第18章 直面配分函数