#### 本节书摘来自华章出版社《深度学习导论及案例分析》一书中的第2章,第2.13节,作者李玉鑑 张婷,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.13玻耳兹曼机的学习
在马尔可夫网络中,有一种称为玻耳兹曼机(Boltzmann Machine,BM)的特殊结构,如图2.16所示。玻耳兹曼机是一种由随机神经元全连接组成的神经
(顶层表示一个随机二值隐含特征,底层表示一个随机二值可视变量)
网络模型,在结构上具有对称性和无自反馈的特点。玻耳兹曼机的神经元可以划分为两个层次,即可视层和隐含层。可视层的神经元称为可视节点,隐含层的神经元称为隐含节点。在标准玻耳兹曼机的情况下,每个节点不论是可视节点,还是隐含节点,都只取0或者1两种状态,其中1表示激活状态,0表示未激活状态。
如果一个标准玻耳兹曼机的可视节点v∈{0,1}n,隐含节点h∈{0,1}m,那么根据HammersleyClifford定理,它的能量函数可以定义为二次形式:
ε(v,h;θ)=-12vTLv-12hTJh-vTWh(2.114)
其中θ={W,L,J}是模型的参数(注意,这里忽略了单点团),W表示可视节点与隐含节点之间的权值,L表示可视节点之间的权值,J表示隐含节点之间的权值。可视连接矩阵L和隐含连接矩阵J的对角元素取为0。根据这个模型得到的可视节点的概率为:
p(v;θ)=p*(v;θ)Z(θ)=1Z(θ)∑hexp(-ε(v,h;θ))(2.115)
Z(θ)=∑v∑hexp(-ε(v,h;θ))(2.116)
其中,p*表示未归一化的概率,Z(θ)表示配分函数。此外,可视节点和隐含节点的条件分布分别为:
p(hj=1v,h-j)=σ∑ni=1Wijvi+∑mk=1,k≠jJjkhj(2.117)
p(vi=1h,v-i)=σ∑mj=1Wijhj+∑nk=1,k≠iLikvk(2.118)
其中σ(x)=1/(1+exp(-x))是sigmoid函数,又称为logistic函数。h-j表示从h中去掉第j个隐含节点,v-i表示从v中去掉第i个可视节点。
在玻耳兹曼机的学习训练阶段,所有可视节点都被钳制在环境决定的特定状态下。但隐含神经元总是自由运行的,它们用来解释环境输入向量包含的固有约束。如果玻耳兹曼机在一组特定的权值下导出的可视节点的概率分布与可视节点被环境输入向量所钳制时的状态概率分布完全一样,就说它构造了环境结构的一个完整模型。一般情况下,除非隐含节点数目是可视节点数目的指数,否则不可能得到完整模型。但是在具有规则结构的环境中,利用较少的隐含节点也可以建立一个较好的环境匹配模型。
玻耳兹曼机学习的目标是最大化似然函数或等价的对数似然函数。如果训练集S={v(l),1≤l≤N},那么对数似然函数的定义如下:
lBM(θ)=log∏Nl=1p(v(l);θ)=∑Nl=1logp(v(l);θ)(2.119)
利用梯度上升算法,不难推导出玻耳兹曼机的学习规则[65],即权值的更新量:
ΔW=η(EPdata{vhT}-EPmod el{vhT})
ΔL=η(EPdata{vvT}-EPmod el{vvT})
ΔJ=η(EPdata{hhT}-EPmod el{hhT})(2.120)
其中η>0是学习率,Pdata(v)=1N∑Nl=1δ(v-v(l))是数据的经验分布(empirical distribution);EPdata[•]表示对完全数据分布Pdata(h,v;θ)=p(hv;θ)Pdata(v)求期望,又称为数据依赖期望(the datadependent expectation);EPmod el[•]表示对模型分布求期望,又称为模型期望(the model’s expectation)或者数据独立期望(the dataindependent expectation)。
对玻耳兹曼机来说,精确的极大似然估计是难解的,因为数据依赖期望和模型期望的精确计算时间是隐含节点的指数函数。Hinton和Sejnowski曾提出利用吉布斯采样的近似计算方案[128],其中需要运行一个马尔可夫链逼近数据依赖期望,另一个马尔可夫链逼近模型期望。但是这种方案很难达到稳态分布,特别是在对真实世界的数据分布进行建模时。更有效的方案是,采用持续马尔可夫链(persistent Markov chain)估计模型期望,而采用变分学习方法(variational learning approach)估计数据依赖期望。
持续马尔可夫链是通过一种随机逼近程序(Stochastic Approximation Procedure,SAP)产生的,其特点是从随机样本开始进行吉布斯采样,而不是从训练样本开始采样。SAP是一种属于RobbinsMonro类型的随机逼近算法[129134],其背后的思想是非常简单、直接的。如果用θt和Xt表示当前的参数和状态,那么SAP对Xt和θt的迭代更新过程见算法2.2。
算法2.2模型期望估计
1.随机初始化X0和θ0;
2.给定Xt、选择学习率ηt,在保持θt不变时,从转移概率函数P(Xt+1Xt;θt)采样得到新状态Xt+1;
3.用关于Xt+1的期望代替很难计算的模型期望,获得新参数θt+1。
在算法2.2中,转移概率函数P(Xt+1Xt;θt)可以用公式(2.117)和公式(2.118)来定义。此外,学习率要求满足的一个必要条件是ηt单调下降、∑∞t=0ηt=∞且∑∞t=0η2t<∞。比如,可选ηt=1/t。算法2.2能够有效工作的原因在于:当学习率与马尔可夫链的混合率相比变得充分小时,这个“持续”链将总是会非常接近稳态分布,即使每个参数的估计只运行了几次状态采样的更新。持续链中的状态(或样本)又称为幻想粒子(fantasy pariticle)。
用变分学习方法估计数据依赖期望的基本思想是,对于每一个给定的训练向量v,都把隐含变量的真实后验分布p(hv;θ)用一个近似后验q(hv;μ)来替代,并按照对数似然函数lnp(v;θ)的一个下界LM的梯度更新参数。下界LM定义为如下不等式的右边:
lnp(v;θ)≥LM=∑hq(hv;μ)lnp(v,h;θ)+H(q)
=lnp(v;θ)-KL[q(hv;μ)p(hv;θ)](2.121)
其中,H(•)是熵泛函(entropy functional)。
根据公式(2.121)易知,在试图最大化训练数据的对数似然函数时,同时也会试图最小化近似后验q(hv;μ)和真实后验p(hv;θ)之间的KL散度。为了简化计算过程,令q(hj=1)=μj,采用朴素平均场方法(nave meanfield approach),选择一个完全分解的分布q(hv;μ)=∏mj=1q(hj)(m为隐含节点的数目),去逼近真实后验分布。从而,可以得到下界LM的具体形式:
LM=12∑i,kLikvivk+12∑j,mJjmμjμm+∑i,jWijviμj-lnZ(θ)
+∑j[μjlnμj+(1-μj)ln(1-μj)](2.122)
变分学习的具体过程就是对固定的参数θ,通过调整变分参数μ最大化这个下界,相应的平均场不动点方程为
μj←σ∑iWijvi+∑m\jJmjμm(2.123)
综上所述,玻耳兹曼机的学习过程可以总结为算法2.3。
算法2.3玻耳兹曼机的学习过程
输入:训练集S={vl,1≤l≤N}、网络结构
输出:权值W、L、J
1.随机初始化参数θ0和M个幻想粒子:{v0.1,h0.1},…,{v0,M,h0,M}
2.对于t=0~T,则有:
1)对每一个训练样本vl,1≤l≤N。
随机初始化μ,反复更新μj←σ∑iWijvli+∑mk=1,k≠1Jjkμk直到收敛。
令μ′=μ。
2)对每个幻想粒子通过k步吉布斯采样产生新状态(vt+1,m,ht+1,m)。
3)更新参数。
Wt+1←Wt+ηt1N∑Nl=1vl(μl)T-1M∑Mm=1vt+1,m(ht+1,m)T
Lt+1←Lt+ηt1N∑Nl=1vl(vl)T-1M∑Mm=1vt+1,m(vt+1,m)T
Jt+1←Jt+ηt1N∑Nl=1hl(hl)T-1M∑Mm=1ht+1,m(ht+1,m)T
4)降低ηt。
3.结束
在玻耳兹曼机中,如果令可视连接矩阵L=0、隐含连接矩阵J=0,就可以得到深度学习的一种基本模型,即受限玻耳兹曼机。与一般的玻耳兹曼机不同,受限玻耳兹曼机的推理可以是精确的。虽然在受限玻耳兹曼机中进行精确的极大似然学习仍然是难解的,但是利用k步对比散度(kstep contrastive divergence,CDk)算法可以使其学习过程变得非常高效[141]。CDk算法在2006年前后曾经对深度学习的创立和发展起过举足轻重的作用。