Skip to content

Commit 133f033

Browse files
committed
partition func
1 parent 896dd1e commit 133f033

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

22.PartitionFunction.md

+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# 配分函数
2+
3+
在学习和推断中,对于一个概率的归一化因子很难处理,这个归一化因子和配分函数相关。假设一个概率分布:
4+
$$
5+
p(x|\theta)=\frac{1}{Z(\theta)}\hat{p}(x|\theta),Z(\theta)=\int\hat{p}(x|\theta)dx
6+
$$
7+
8+
## 包含配分函数的 MLE
9+
10+
在学习任务中,采用最大似然:
11+
$$
12+
\begin{align}
13+
\hat{\theta}&=\mathop{argmax}_{\theta}p(x|\theta)=\mathop{argmax}_\theta\sum\limits_{i=1}^N\log p(x_i|\theta)\nonumber\\
14+
&=\mathop{argmax}_\theta\sum\limits_{i=1}^N\log \hat{p}(x|\theta)-N\log Z(\theta)\nonumber\\
15+
&=\mathop{argmax}_{\theta}\frac{1}{N}\sum\limits_{i=1}^N\log \hat{p}(x|\theta)-\log Z(\theta)=\mathop{argmax}_\theta l(\theta)
16+
\end{align}
17+
$$
18+
求导:
19+
$$
20+
\begin{align}\nabla_\theta\log Z(\theta)&=\frac{1}{Z(\theta)}\nabla_\theta Z(\theta)\nonumber\\
21+
&=\frac{p(x|\theta)}{\hat{p}(x|\theta)}\int\nabla_\theta \hat{p}(x|\theta)dx\nonumber\\
22+
&=\int\frac{p(x|\theta)}{\hat{p}(x|\theta)}\nabla_\theta\hat{p}(x|\theta)dx\nonumber\\
23+
&=\mathbb{E}_{p(x|\theta)}[\nabla_\theta\log\hat{p}(x|\theta)]
24+
\end{align}
25+
$$
26+
由于这个表达式和未知的概率相关,于是无法直接精确求解,需要近似采样,如果没有这一项,那么可以采用梯度下降,但是存在配分函数就无法直接采用梯度下降了。
27+
28+
上面这个期望值,是对模型假设的概率分布,定义真实概率分布为 $p_{data}$,于是,$l(\theta)$ 中的第一项的梯度可以看成是从这个概率分布中采样出来的 $N$ 个点求和平均,可以近似期望值。
29+
$$
30+
\nabla_\theta l(\theta)=\mathbb{E}_{p_{data}}[\nabla_\theta\log\hat{p}(x|\theta)]-\mathbb{E}_{p(x|\theta)}[\nabla_\theta\log\hat{p}(x|\theta)]
31+
$$
32+
于是,相当于真实分布和模型假设越接近越好。上面这个式子第一项叫做正相,第二项叫做负相。为了得到负相的值,需要采用各种采样方法,如 MCMC。
33+
34+
采样得到 $\hat{x}_{1-m}\sim p_{model}(x|\theta^t)$,那么:
35+
$$
36+
\theta^{t+1}=\theta^t+\eta(\sum\limits_{i=1}^m\nabla_\theta \log \hat{p}(x_i|\theta^t)-\sum\limits_{i=1}^m\nabla_\theta\log \hat{p}(\hat{x_i}|\theta^t))
37+
$$
38+
这个算法也叫做基于 MCMC 采样的梯度上升。每次通过采样得到的样本叫做幻想粒子,如果这些幻想粒子区域的概率高于实际分布,那么最大化参数的结果就是降低这些部分的概率。
39+
40+
## 对比散度-CD Learning
41+
42+
上面对于负相的采样,最大的问题是,采样到达平稳分布的步骤数量是未知的。对比散度的方法,是对上述的采样是的初始值作出限制,直接采样 $\hat{x}_i=x_i$,这样可以缩短采样的混合时间。这个算法叫做 CD-k 算法,$k$ 就是初始化后进行的演化时间,很多时候,即使 $k=1$ 也是可以的。
43+
44+
我们看 MLE 的表达式:
45+
$$
46+
\begin{align}\hat{\theta}&=\mathop{argmax}_{\theta}p(x|\theta)=\mathop{argmax}_{\theta}\frac{1}{N}\sum\limits_{i=1}^N\log p(x_i|\theta)=\mathbb{E}_{p_{data}}[\log p_{model}(x|\theta)]\nonumber\\
47+
&=\mathop{argmax}_\theta\int p_{data}\log p_{model}dx\nonumber\\
48+
&=\mathop{argmax}_\theta\int p_{data}\log \frac{p_{model}}{p_{data}}dx\nonumber\\
49+
&=\mathop{argmin}_\theta KL(p_{data}||p_{model})
50+
\end{align}
51+
$$
52+
对于 CD-k 的采样过程,可以将初始值这些点表示为:
53+
$$
54+
p^0=p_{data}
55+
$$
56+
而我们的模型需要采样过程达到平稳分布:
57+
$$
58+
p^\infin=p_{model}
59+
$$
60+
因此,我们需要的是 $KL(p^0||p^\infin)$。定义 CD:
61+
$$
62+
KL(p^0||p^\infin)-KL(p^k||p^\infin)
63+
$$
64+
这就是 CD-k 算法第 $k$ 次采样的目标函数。
65+
66+
## RBM 的学习问题
67+
68+
RBM 的参数为:
69+
$$
70+
\begin{align}
71+
h=(h_1,\cdots,h_m)^T\\
72+
v=(v_1,\cdots,v_n)^T\\
73+
w=(w_{ij})_{mn}\\
74+
\alpha=(\alpha_1,\cdots,\alpha_n)^T\\
75+
\beta=(\beta_1,\cdots,\beta_m)^T
76+
\end{align}
77+
$$
78+
学习问题关注的概率分布为:
79+
$$
80+
\begin{align}
81+
\log p(v)&=\log\sum\limits_{h}p(h,v)\nonumber\\
82+
&=\log\sum\limits_h\frac{1}{Z}\exp(-E(v,h))\nonumber\\
83+
&=\log\sum\limits_{h}\exp(-E(v,h))-\log\sum\limits_{v,h}\exp(-E(h,v))
84+
\end{align}
85+
$$
86+
对上面这个式子求导第一项:
87+
$$
88+
\frac{\partial \log\sum\limits_{h}\exp(-E(v,h))}{\partial\theta}=-\frac{\sum\limits_h\exp(-E(v,h))\frac{\partial E(v,h)}{\partial\theta}}{\sum\limits_{h}\exp(-E(v,h))}\\
89+
=-\sum\limits_h\frac{\exp(-E(v,h))\frac{\partial E(v,h)}{\partial\theta}}{\sum\limits_{h}\exp(-E(v,h))}=-\sum\limits_hp(h|v)\frac{\partial E(v,h)}{\partial\theta}
90+
$$
91+
第二项:
92+
$$
93+
\frac{\partial \log\sum\limits_{v,h}\exp(-E(h,v))}{\partial\theta}=-\sum\limits_{h,v}\frac{\exp(-E(v,h))\frac{\partial E(v,h)}{\partial\theta}}{\sum\limits_{h,v}\exp(-E(v,h))}=-\sum\limits_{v,h}p(v,h)\frac{\partial E(v,h)}{\partial\theta}
94+
$$
95+
所以有:
96+
$$
97+
\frac{\partial}{\partial\theta}\log p(v)=-\sum\limits_hp(h|v)\frac{\partial E(v,h)}{\partial\theta}+\sum\limits_{v,h}p(v,h)\frac{\partial E(v,h)}{\partial\theta}
98+
$$
99+
将 RBM 的模型假设代入:
100+
$$
101+
E(v,h)=-(h^Twv+\alpha^Tv+\beta^Th)
102+
$$
103+
104+
1. $w_{ij}$:
105+
$$
106+
\frac{\partial}{\partial w_{ij}}E(v,h)=-h_iv_j
107+
$$
108+
于是:
109+
$$
110+
\frac{\partial}{\partial\theta}\log p(v)=\sum\limits_{h}p(h|v)h_iv_j-\sum\limits_{h,v}p(h,v)h_iv_j
111+
$$
112+
第一项:
113+
$$
114+
\sum\limits_{h_1,h_2,\cdots,h_m}p(h_1,h_2,\cdots,h_m|v)h_iv_j=\sum\limits_{h_i}p(h_i|v)h_iv_j=p(h_i=1|v)v_j
115+
$$
116+
这里假设了 $h_i$ 是二元变量。
117+
118+
第二项:
119+
$$
120+
\sum\limits_{h,v}p(h,v)h_iv_j=\sum\limits_{h,v}p(v)p(h|v)h_iv_j=\sum\limits_vp(v)p(h_i=1|v)v_j
121+
$$
122+
这个求和是指数阶的,于是需要采样解决,我么使用 CD-k 方法。
123+
124+
对于第一项,可以直接使用训练样本得到,第二项采用 CD-k 采样方法,首先使用样本 $v^0=v$,然后采样得到 $h^0$,然后采样得到 $v^1$,这样顺次进行,最终得到 $v^k$,对于每个样本都得到一个 $v^k$,最终采样得到 $N$ 个 $v^k $,于是第二项就是:
125+
$$
126+
p(h_i=1|v^k)v_j^k
127+
$$
128+
具体的算法为:
129+
130+
1. 对每一个样本中的 $v$,进行采样:
131+
1. 使用这个样本初始化采样
132+
2. 进行 $k$ 次采样(0-k-1):
133+
1. $h_i^l\sim p(h_i|v^l)$
134+
2. $v_i^{l+1}\sim p(v_i|h^l)$
135+
3. 将这些采样出来的结果累加进梯度中
136+
2. 重复进行上述过程,最终的梯度除以 $N$
137+

pdf/22.PartitionFunction.pdf

1.05 MB
Binary file not shown.

0 commit comments

Comments
 (0)