|
| 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 | + |
0 commit comments