wjianjun的个人博客分享 http://blog.sciencenet.cn/u/wjianjun

博文

受限玻尔兹曼机(RBM,Restricted Boltzmann Machines)浅介

已有 11131 次阅读 2014-4-28 21:55 |系统分类:科研笔记

   本文是我在阅读[1]之后做的一个读书笔记,所以这里的内容几乎也是翻译外加一些自己的理解,希望对读者有益。

    概括地说,RBM根据MLE原理来估计预定义分布中的参数,以便预定义分布能尽可能地逼近产生观测数据的未知分布。多个RBM分层堆叠而成的DBN(deep belief networks)构成深度学习的主要框架。

   RBM是一个随机无向图模型(上图),分为可见层 $(V_1,V_2,\ldots,V_m)$ 和隐层 $(H_1,H_2,\ldots,H_n)$ 。可见层中单元的个数与观测数据的维数相同,用于输入观测数据,隐层则用于刻画观测数据每个维度之间的依赖关系。每个可见层单元和隐层单元都有一个偏置参数 $b_j,c_i$ ,并且每个隐层单元 $H_i$ 和所有的可见层单元都有一个权重为 $w_{ij},j=1,2,\cdots,m$ 的无向连接边,这些都是RBM需要学习的参数,记为 $\pmb \theta$ 。另外,每个可见层单元和每个隐层单元的取值是一个0-1随机变量。RBM可以用于提取特征,每当向可见层输入一个观测值时,每个隐层单元取值为1和取值为0的概率便可以确定,此时我们可以将每个隐层单元的期望作为特征输出。

  RBM假设观测数据的概率分布为:

$p(\mathbf{v^{(0)}})=\sum_\mathbf{h}p(\mathbf{v^{(0)}},\mathbf{h})=\frac{\sum_\mathbf{h}e^{-E(\mathbf{v^{(0)}},\mathbf{h})}}{\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}$


其中 $p(\mathbf{v},\mathbf{h})$ 是可见层和隐层的联合概率分布, $E(\mathbf{v},\mathbf{h})$ 称作能量函数,由可见层取值 $\mathbf{v}$ ,隐层取值 $\mathbf{h}$ 以及RBM的参数确定。可以看出在所有参数确定以后,任给一个观测值 $\mathbf{v^{(0)}}$ ,RBM都可以计算出一个对应的估计概率值。为了使得估计概率值能很接近真实的概率值,RBM需要从观测数据中学习适当的参数。RBM采用的MLE来学习参数,假设只要一个观测数据 $\mathbf{v^{(0)}}$ ,那么相应的似然函数为,

$ln\mathcal{L}(\pmb \theta|\mathbf{v^{(0)}}) =ln p(\mathbf{v^{(0)}}|\pmb \theta)=ln\sum_\mathbf{h}e^{-E(\mathbf{v^{(0)}},\mathbf{h})}-ln\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}$


为了求得参数的最大似然估计,我们对似然函数进行求导,

$\begin{aligned} \frac{\partial ln\mathcal{L}(\pmb \theta|\mathbf{v^{(0)}})}{\partial \pmb \theta}&=\frac{\partial}{\partial \pmb \theta}\left(ln\sum_\mathbf{h}e^{-E(\mathbf{v^{(0)}},\mathbf{h})}\right)-\frac{\partial}{\partial \pmb \theta}\left(ln\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}\right)\\ &=-\sum_\mathbf{h}\frac{e^{-E(\mathbf{v^{(0)}},\mathbf{h})}}{\sum_\mathbf{h}e^{-E(\mathbf{v^{(0)}},\mathbf{h})}}\frac{\partial E(\mathbf{v^{(0)}},\mathbf{h})}{\partial \pmb \theta}+\sum_\mathbf{v}\sum_\mathbf{h}\frac{e^{-E(\mathbf{v},\mathbf{h})}}{\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}\frac{\partial E(\mathbf{v},\mathbf{h})}{\partial \pmb \theta}\\ &=-\sum_\mathbf{h}p(\mathbf{h}|\mathbf{v^{(0)}})\frac{\partial E(\mathbf{v^{(0)}},\mathbf{h})}{\partial \pmb \theta}+\sum_\mathbf{v}\sum_\mathbf{h}p(\mathbf{v},\mathbf{h})\frac{\partial E(\mathbf{v},\mathbf{h})}{\partial \pmb \theta}\\ \end{aligned}$


注意

$p(\mathbf{h}|\mathbf{v})=\frac{p(\mathbf{v},\mathbf{h})}{p(\mathbf{v})}=\frac{\frac{e^{-E(\mathbf{v},\mathbf{h})}}{\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}}{\frac{\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}{\sum_\mathbf{v}\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}}=\frac{e^{-E(\mathbf{v},\mathbf{h})}}{\sum_\mathbf{h}e^{-E(\mathbf{v},\mathbf{h})}}$

如果,给定一个训练样本可以快速计算得到似然函数的梯度,那么我们就可以采用梯度上升算法学习参数,然而似然函数的梯度直接计算起来却非常耗时,因为似然函数梯度的第二项是对 $\mathbf{v},\mathbf{h}$ 所有可能的取值全部进行累加。下面我们就来探讨如何快速准确地计算似然函数的梯度。

    标准的RBM中的能量函数为:

$E(\mathbf{v},\mathbf{h})=-\sum_{i=1}^{n}\sum_{j=1}^{m}w_{ij}h_iv_j-\sum_{j=1}^{m}b_jv_j-\sum_{i=1}^{n}c_ih_i$

另外,RBM有一个重要的条件概率独立假设,这个假设可以大大简化模型的计算,注意这是一个预定义的模型假设,而非由其他模型中的定义经过数学推导得到的。

$P(\mathbf{v}|\mathbf{h})=\prod_{j=1}^{m}P(v_j|\mathbf{h}),P(\mathbf{h}|\mathbf{v})=\prod_{i=1}^{n}P(h_i|\mathbf{v})$

通过已有的模型相关定义和假设,我们可以证明如下两个结论,

$P(v_j=1|\mathbf{h})=\sigma\left(\sum_{i=1}^{n}w_{ij}h_i+b_j \right),P(h_i=1|\mathbf{v})=\sigma\left(\sum_{j=1}^{m}w_{ij}v_j+c_i \right)$

其中

$\sigma(x)=\frac{1}{1+e^{-x}}$

,上式的具体证明可以参考[1]中的第27式。给定能量函数和条件概率独立假设,并令 $\mathbf{h}_{-i}$ 表示多维随机变量 $\mathbf{h}$ 去掉第 $i$ 维分量后形成的随机变量,那么

$\begin{aligned} &-\sum_\mathbf{h}p(\mathbf{h}|\mathbf{v^{(0)}})\frac{\partial E(\mathbf{v^{(0)}},\mathbf{h})}{\partial w_{ij}}=\sum_{\mathbf{h}}p(\mathbf{h}|\mathbf{v^{(0)}})h_iv_j^{(0)}\\ &=\sum_{h_i}\sum_{\mathbf{h}_{-i}}P(h_i|\mathbf{v^{(0)}})P(\mathbf{h}_{-i}|\mathbf{v^{(0)}})h_iv_j^{(0)} \\ &=\sum_{h_i}P(h_i|\mathbf{v^{(0)}})h_iv_j^{(0)} \sum_{\mathbf{h}_{-i}}P(\mathbf{h}_{-i}|\mathbf{v^{(0)}}) \\ &=\sum_{h_i}P(h_i|\mathbf{v^{(0)}})h_iv_j^{(0)}\qquad \\ &=P(h_i=1|\mathbf{v^{(0)}})v_j^{(0)} \qquad \\ \end{aligned}$

如此一来,我们就可以很容易地计算似然函数梯度的第一项,而第二项我们可以重写为:

$\sum_\mathbf{v}\sum_\mathbf{h}p(\mathbf{v},\mathbf{h})\frac{\partial E(\mathbf{v},\mathbf{h})}{\partial w_{ij}}=\sum_\mathbf{v}p(\mathbf{v})\sum_\mathbf{h}p(\mathbf{h}|\mathbf{v})h_iv_j$

我们可以通过采样从分布 $p(\mathbf{v},\mathbf{h})$ 获得一些样本值 $(\mathbf{v}^{(s)},\mathbf{h})^{(s)},s=1,2,\cdots$ ,然后代入进去近似地计算第二项,如果采样方法恰当,那么这样的近似也将很好。问题是分布 $p(\mathbf{v},\mathbf{h})$ 的计算很费时,不过好在我们知道 $P(\mathbf{v}|\mathbf{h}),P(\mathbf{h}|\mathbf{v})$ ,而且这两个分布也容易计算,那么那么我们可以通过Gibbs采样获得样本。

 

相对于其他参数的梯度可以类似地计算。然而,现在的问题是Gibbs采样算法的原理是基于Markov链的,往往Markov链需要做很多次转移(也即是Gibbs采样算法中的 $t$ 要变得很大)才能到达稳态分布,而只有到达稳态分布才能得到真正来自 $p(\mathbf{v},\mathbf{h})$ 的采样值。另外,不容易确定究竟什么时候才能到达稳态分布。 所以提出了对比散度(CD,Contrastive Divergence) 算法.CD算法只进行 $k$ 步采样,便将得到的 $\mathbf{v}^{(k)}$ 带入计算,也就是似然函数的梯度按如下方式计算,

 

CD算法的详细步骤如下,实验中一般 $k=1$ 。

我们现在想知道为什么CD算法可行。其实有下面两个定理保证了CD算法合理性。这两个定理的意思就是,CD算法中对似然函数梯度的近似误差的期望随着会随着$k$的增大会快速趋近于0.

[1] Asja Fischer and Christian Igel. An introduction to restricted boltzmann machines.In Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications, volume 7441, pages 14 –36. ,2012.



https://blog.sciencenet.cn/blog-798994-789555.html

上一篇:Multinomial分布和Dirichlet分布
下一篇:pLSI( Probabilistic latent semantic indexing)简述
收藏 IP: 222.195.92.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-4 01:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部