
Boltzmann Machines
这里特指binary Boltzmann machine,即模型对应的变量是一个n维0-1变量。

玻尔兹曼机是一种基于能量的模型(an energy-based model),其对应的联合概率分布为

能量E越小,对应状态的概率越大。Z是配分函数,用作归一化。
利用基于能量的模型的原因是这样的,对于一个给定的数据集,如果不知道其潜在的分布形式,那是非常难学习的,似然函数都写不出来。比如如果知道是高斯分布或者多项分布,那可以用最大化似然函数来学出需要学习的对应参数,但是如果分布的可能形式都不知道,这个方法就行不通。而统计力学的结论表明,任何概率分布都可以转变成基于能量的模型,所以利用基于能量的模型的这个形式,是一种学习概率分布的通法。
玻尔兹曼机常用的能量函数E的形式为

这包含的假设是对于能量函数而言,单元状态,单元与单元之间的相互关系对能量的影响都是线性的
本质而言,上述模型的表达能力是有限的,因为能量函数E是2阶多项式。它关于某个具体的xi的边缘分布是LR(比LR多了一个平方项,但是平方项等于自身,因为xi取值是0或1,所以还是只包含一次项)。变量与变量之间的关系是线性关系。
如果在玻尔兹曼机里加入隐变量,或者说不是所有变量都是可见的,那么其表达能力大大加强,可以逼近任何的关于可见变量的概率分布函数。
在上式中,把变量分为可见变量v与不可见变量h,则能量函数可以改写成

对于玻尔兹曼机而言,训练任一连接两个单元的权重参数,只需用到对应的这两个单元的数据,而与其他单元的数据无关。即玻尔兹曼机的训练规则是局部的(local)。
Restricted Boltzmann Machines 有限玻尔兹曼机
RBM只有一层可见变量和一层隐变量,同时可见变量之间,隐变量之间不直接相连。即对应的图是一个二部图

对于RBM而言,具体的联合概率分布如下

能量函数具体如下

这里没有对应的h二次项和v二次项,因为有限玻尔兹曼机不允许同层单元相连




由于RBM的条件分布可以解析性地写出来,同时每个hi或者vi都是条件独立的。所以吉布斯抽样比较容易,训练起来也比较直接。
训练算法:CD算法

CD算法的论证涉及MCMC,吉布斯抽样,partition function在没有解析解的时候怎么处理等问题。
deep Boltzmann machine 深度有限玻尔兹曼机
如果有多层隐单元层,则一般称为深度有限玻尔兹曼机(deep Boltzmann machine),如下图

比如对于一个有三层隐层的DBM,联合概率分布为

对应能量函数(忽略偏置项)为:

本质上,DBM也是一个二部图。由概率图模型知识可知,在观测到奇数层单元的条件下,偶数层单元两两条件独立,反之亦然。
所以DBM拥有和RBM类似的条件概率分布。在有两层隐层的情况里,具体如下

同时这也使得模型可以简单地执行吉布斯抽样。即可以分两步走,一步抽样所有奇数层的单元,一步抽样所有偶数层的单元。
Gaussian-Bernoulli RBMs
这种玻尔兹曼机它的隐单元还是0-1变量,但可见单元是实数值,是条件高斯分布:

在此前提下,对该条件分布取log,可以探索能量函数E的可能形式,因为能量函数E取exp,那得到的其中一部分项就会组成这个条件分布p(v|h)

上述包含v的项都包含进能量函数E,则该能量函数就能完美表达p(v|h)
再考虑条件分布p(h|v),上述包含hihj的二次项自然是不能包含的,因为这表示隐单元彼此相连。
因为hi的平方等于其自身(hi只能取值0或1),如果假设精度矩阵是对角矩阵,则还是有如下一次项。相当于hi的偏置项

综上,一个可能的能量函数E的式子是

上式忽略了v的一次项。
还有对于精度矩阵,可以设定为常数,参数乘以单位矩阵,对角矩阵等。一般不考虑非对角矩阵,因为在模型学习过程中会涉及精度矩阵的逆。
本文转载自知乎博主:羽刻 |