1.RBM简介
受限玻尔兹曼机(Restricted Boltzmann Machines,RBM)最早由hinton提出,是一种无监督学习方法,即对于给定数据,找到最大程度拟合这组数据的参数。RBM常用于降维,分类,回归与协同过滤,特征学习甚至 topic model ,其网络结构如下:
RBM是一种两层的贝叶斯网络,是Deep Blief Network 的基本组成成分,该网络可网络结构有 n个可视节点和m个隐藏节点 ,其中每个可视节点只与m个隐藏节点相关,与其他可视节点独立,对于隐藏节点同理,RBM中的参数有隐层与可见层的权重参数,还有偏置项,为可见层的偏置,为隐藏层的偏置,以上便是RBM中的所有参数。
为了方便描述,假设每个节点的取值均在{0 ,1}之中,既有对。
对于一个训练样本x,x={x,x ... x},对于一个训练好的RBM,其权值W b c 均为定值,这样便可对 x 编码得到 y ={y,y ... y},在{0,1}的假设下,编码生成1的概率为:
其中为 sigmod 函数:
所以对应的 y=1 的概率为,在该概率图模型中应用接受拒绝采样,以的概率接受该状态即 y=1.
同理,在解码时有:
RBM的用途主要有两种:
1)类似栈式自编码器,对数据编码,得到数据的高阶表示,然后使用监督学习的方法进行分类或回归
2)预训练深度神经网络,因为网络层数加深时,为了避免局部最优解,这种用途也类似于栈式自编码器
而且RBM中还可以求得输入输出的联合概率p(v,h)或者条件概率分布p (h|v)。以上均为RBM的使用,下边来看如何用数据训练一个RBM,为了得到RBM的参数,首先引入能量模型。
2.能量模型
先看一个引例,把一个表面粗糙又不太圆的小球,放到一个表面也比较粗糙的碗里,就随便往里面一扔,看看小球停在碗的哪个地方。一般来说停在碗底的可能性比较大,停在靠近碗底的其他地方也可能,甚至运气好还会停在碗口附近(这个碗是比较浅的一个碗);能量模型把小球停在哪个地方定义为一种状态,每种状态都对应着一个能量E ,这个能量由能量函数来定义,小球处在某种状态的概率(如停在碗底的概率跟停在碗口的概率当然不一样)可以通过这种状态下小球具有的能量来定义(换个说法,如小球停在了碗口附近,这是一种状态,这个状态对应着一个能量E ,而发生“小球停在碗口附近”这种状态的概率p ,可以用E 来表示,表示成p=f(E),其中f 是能量函数),其实还有一个简单的理解,球在碗底的能量一般小于在碗边缘的,比如重力势能这,显然碗底的状态稳定些,并且概率大些, 这便是对能量模型的直观理解。
玻尔兹曼网络是一种随机网络,描述一个随机网络可从以下两点入手:
1)概率分布函数。从贝叶斯网的观点来看各个节点的状态取值是概率的随机的,这里用三种概率分布来描述整个RBM网络,联合概率密度,条件概率密度和边缘概率密度。
2)能量函数。随机神经网络的思想来源于统计力学,能量函数是描述整个系统状态的一种测度,系统越有序或者概率分布越集中(比如小球在碗底的情况),系统的能量越小,反之,系统越无序并且概率分布发散(比如平均分布),则系统的能量越大,能量函数的最小值,对应着整个系统最稳定的状态。
RBM中能量模型起啥作用呢?
1)参数估计问题中,当分布未知时,统计力学的一项研究表明,其概率分布可以表示为基于能量的模型,即对于未知的分布,可以将这个分布改写成能量函数的形式。
2)能量函数可以为RBM引入目标函数与目标解,即引入能量函数后,使得学习一组数据的分布变得容易了,能否把求解最优解嵌入能量模型中至关重要,决定这具体问题求解的好坏。
3)能量模型要捕获变量之间的相关性,变量的相关程度决定了能量的高低,把变量的相关关系用图表示出来,并引入概率测度方式就构成了概率图(为什么是概率图?前面一句说了,RBM 是一个图,以概率为测度,所以是概率图)模型的能量模型。
4)对于RBM这种无监督学习方法,要尽可能的去拟合训练数据来求得参数。
RBM的能量函数如下:
这个能量 函数的意思就是,每可视节点和隐藏之间连接结构都有通俗来说就是可视节点的 每一组取值和隐藏都有个能量,通俗来说就是可视节点的每一组取值和隐藏节点的每一组取值都有一个能量,如果可视节点的一组取值(即一个训练样本)为(1,0,1,0,1,1,0),隐藏节点的一组取值(经过RBM编码后的值)为(1,0,1),分别带入到上面的公式,对于训练后的网络已经得到其参数,即 W,b,c 均已知,这样根据能量函数便可求得RBM整个连接结构的能量。但实际情况是 W,b,c 均为未知的,所以要求得这些参数。
现在可以进一步想一下要搞能量函数?前面指出未知分布不好求解但是可以通过能量函数来表示,那么能量函数的概率模型很大程度上可以得到未知分布的概率模型,这样大致就知道了数据的分布,RBM网络是hidden和visible整个框架的能量函数,可以定义这个能量函数出现的概率,如果一个变量组合被认为是合理的,它同时也具有较小的能量。基于能量的概率模型通过能量函数来定义概率分布:显然该能量函数与 hidden 层和 visible 的每个节点均有关,定义联合概率密度:
即现在p(v = v' , h = h')的概率可以由以上能量函数决定, v' 为一组观测值和 h' 为一组隐藏节点的取值,其发生的概率p(v = v' , h = h')是由以上能量函数定义的概率密度表示的。RBM 的概率密度是建立在热力学的解释基础上的,当系统及其周围环境处于热平衡状态时,状态 i 发生的概率如下:
E表示系统在状态i时的能量,T为开尔文绝对温度,K为Boltzmann常数,Z为归一化系数,上述方程中 i 替换为(v ,h),,另K=T = 1,即得到RBM的概率密度公式。其实这个分布是一个特殊的Gibbs分布,且这个分布是有一组参数的即原来提到的 W , c, b 。
有了这个联合概率,就可以得到一些其他概率:
1)边缘概率
2)条件概率
3.极大似然
RBM中各种分布都已在以上计算中得到,对于输入数据,我们使得训练样本 x 的分布 q(x) 尽量去拟合 RBM 中的可见层的边缘概率 p。通过使得 q 与 p 的KL距离最小即可:
若 p 与 q 完全相同,则 =0,上式第二项可以用来估计,l 表示训练样本个数,为了使最小,只需使得最大即可,等价于使得最大即可,不就是p(x)的极大似然估计吗?最终可以得到结论:求解输入样本的极大似然估计,就能使得RBM表示的gibbs分布同样本分布最接近,于是RBM最终可以转换为极大似然估计来求解。这样求解也是有意义的 - 当RBM网络训练完成后,如果让这个RBM网络随机发生若干次状态(当然一个状态是由(v,h)组成的),这若干次状态中,可视节点部分(就是v)出现训练样本的概率要最大。
这样就保证了,在反编码(从隐藏节点到可视节点的编码过程)过程中,能使训练样本出现的概率最大,也就是使得反编码的误差尽最大的可能最小。例如一个样本(1,0,1,0,1)编码到(0,1,1),那么,(0,1,1)从隐藏节点反编码到可视节点的时候也要大概率地编码到(1,0,1,0,1)。
4.模型求解
最大似然估计说白了就是是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,该最大条件下的参数值以此作为最大似然的估计值。带求解的似然函数为 p(v),列出其似然方程为:,θ为待估计参数(这里为 W,b ,c)。求导有:
带入p(v)有 :
于是 对于 W c b 有:
当 v、h 只取{0,1}的情况下:
那么对于w有:
同理,对 b c 可求得:
对于上述三个公式要求对应的项,既然目标是让RBM拟合样本的分布,可以考虑让MCMC的状态以训练样本作为起点来进行跳转,这样只需要很少次的状态转移就可到达RBM分布了,hinton老爷子发明的CD-k算法就是这个思想:
对,选取 然后执行 k 步 Gibbs 采样,对 t = (1, 2, ... ,k) 有:
h = P(h | v)
v = P(v | h)
利用k步Gibbs采样后的v来估计以上三个公式的期望项:
CD-K算法描述如下:
注:
进一步可得到:
最后给出完成的RBM训练算法:
参考:
http://www.cnblogs.com/tornadomeet/archive/2013/03/27/2984725.html