
1.2.5 玻尔兹曼机
玻尔兹曼机属于另一种显式概率模型,是一种基于能量的模型。训练玻尔兹曼机同样需要基于极大似然的思想,但在计算极大似然梯度时,还需要运用一种不同于变分法的近似算法。玻尔兹曼机已经较少引起关注,故在此我们只简述。
在能量模型中,通常将样本的概率p(x)建模成如下形式:

其中,Z=为配分函数。为了增强模型的表达能力,通常会在可见变量v的基础上增加隐变量h,以最简单的受限玻尔兹曼机(RBM)为例,RBM中的可见变量和隐变量均为二值离散随机变量(当然也可推广至实值)。它定义了一个无向概率图模型,并且为二分图,其中可见变量v组成一部分,隐藏变量h组成另一部分,可见变量之间不存在连接,隐藏变量之间也不存在连接(“受限”即来源于此),可见变量与隐藏变量之间实行全连接,结构如图1-14所示。

图1-14 受限玻尔兹曼机结构图
在RBM中,可见变量和隐藏变量的联合概率分布由能量函数给出,即

其中能量函数的表达式为:

配分函数Z可写为:

考虑到二分图的特殊结构,当隐藏变量已知时,可见变量之间彼此独立;当可见变量已知时,隐藏变量之间也彼此独立,即有以及p(v|h)=
,进一步地,我们可得到离散概率的具体表达式:

为了使RBM与能量模型有一致的表达式,定义可见变量v的自由能f(v)为:

其中hi为第i个隐藏变量,此时可见变量的概率为:

配分函数Z为。使用极大似然法训练RBM模型时,我们需要计算似然函数的梯度,记模型的参数为θ,则

可以看出,RBM明确定义了可见变量的概率密度函数,但它并不易求解,因为计算配分函数Z时需要对所有的可见变量v和隐藏变量h求积分,所以无法直接求解对数似然函数logp(v),故无法直接使用极大似然的思想训练模型。但是,若跳过对数似然函数的求解而直接求解对数似然函数的梯度,也可完成模型的训练。对于θ中的权值、偏置参数有

分析其梯度表达式,其中不易计算的部分在于对可见变量v的期望的计算。RBM通过采样的方法来对梯度进行近似,然后使用近似得到的梯度进行权值更新。为了采样得到可见变量v,我们可以构建一个马尔可夫链并使其最终收敛到p(v),即设置马尔可夫链的平稳分布为p(v)。初始随机给定样本,迭代运行足够次数后达到平稳分布,这时可根据转移矩阵从分布p(v)连续采样得到样本。我们可使用吉布斯采样方法完成该过程,由于两部分变量的独立性,当可见变量(或隐藏变量)固定时,隐藏变量(可见变量)的分布分别为h(n+1)~sigmoid(WTv(n)+c)和v(n+1)~sigmoid(Wh(n+1)+b),即先采样得到隐藏变量,再采样得到可见变量,这样,我们便可以使用“随机极大似然估计法”完成生成模型的训练了。
玻尔兹曼机依赖马尔可夫链来训练模型或者使用模型生成样本,但是这种技术现在已经很少使用了,这很可能是因为马尔可夫链近似技术不能被适用于样本维度较大的生成问题。并且,即便马尔可夫链方法可以很好地用于训练,但是使用一个基于马尔可夫链的模型生成样本需要花费很大的计算代价。
受限玻尔兹曼机[8]的核心代码如下所示:

