机器学习笔记之深度玻尔兹曼机——玻尔兹曼机系列整体介绍

关于含隐变量模型的对数似然梯度

包含隐变量的能量模型如玻尔兹曼机、受限玻尔兹曼机,其能量模型的结构均可表示为如下形式:

本质上就是包含隐变量的马尔可夫随机场~

其中X 表示随机变量集合(包含隐变量、观测变量);x_{ci}( i = 1 , 2 , ⋯   , K ) 表示极大团;对应的ψ i ( x_{ci} 表示该极大团对应的势函数。由于势函数的非负性质,因此如果从能量模型的角度观察势函数,可将P ( X ) 表示为如下形式:

其中Z 表示‘配分函数’,具体可表示为

关于该模型的对数似然函数可表示为:

系数1/N 为后续计算方便所添加的结果,在‘极大似然估计’中,该系数并不影响‘最优模型参数’θ的结果。
其中V表示观测变量产生的实际样本集合:,N 表示样本数量。
对应地,h^{(i))}表示某样本v^{(i)} 在模型中对应的隐变量集合。

将能量函数代入,对应的对数似然梯度可表示为:

∇ θ L ( θ )=

=

玻尔兹曼机

玻尔兹曼机本质上是一个马尔可夫随机场(无向图模型),概率图中的随机变量结点均是服从伯努利分布的离散型随机变量。
从随机变量的性质角度,可将随机变量划分成两个部分:观测变量v、隐变量h :
这里的v , h表示随机变量集合,并定义v 中包含D个随机变量,h 中包含P 个随机变量。

对应的概率图结构可表示如下

下图是一个全连接的特殊情况,即无论是观测变量还是隐变量,两两之间均存在关联关系。而实际上可能仅是观测变量、隐变量的无向图结构而已。

关于波尔兹曼机的能量函数可表示为:

将能量函数E ( v , h )代入到对数似然函数中,可得到关于波尔兹曼机的对数似然梯度:
根据能量函数的表示,发现明显存在三个参数:W , L , J 因此需要对三个参数分别求解梯度。

可以通过上式发现,梯度上升迭代过程中,模型参数W 梯度的计算主要分为两个部分:正相(Positive Phase)与负相(Negative Phase):

从关于P_{data} 的描述也可以看出来,依赖数据(Data Dependent ) 所产生的联合概率分布P_{data} (v^{(i)},h^{(i)})由两部分构成:

基于真实样本v^{(i)}∈ V的关于观测变量的边缘概率分布P_{data} (v^{(i)} ) ;

在真实样本给定的条件下,模型内部隐变量的后验概率分布P_{model}( h^{(i)} ∣ v^{(i)} ) ;
隐变量h (i)从始至终都是依赖于模型存在的,因此写作P_{model}(h^{(i)}v^{(i)}) 。

而不依赖数据(Data Independent),仅通过模型产生的联合概率分布P_{model} (v^{(i)}, h^{(i)} ) 不包含任何真实样本的参与,甚至生成的样本也被称为幻想粒子(Fantasy Particle)。

而正相、负相均采用MCMC进行求解。其思想是:由于观测变量、隐变量内部也存在关联关系,因而无法求解后验概率P ( h∣v ) 。因此它针对当个变量的后验概率进行表示:
其中v_{-i}表示除去观测变量v_{i}之外的其他观测变量。

玻尔兹曼机的缺陷是明显的——随机变量结点数过多,算力跟不上。由于任意随机变量之间都有可能存在关联关系,这样模型的计算是复杂的,在MCMC采样过程中,随机变量结点过多导致极难达到平稳分布。

这种模型可能仅在理论中实现,实用性基本是没有的。

受限玻尔兹曼机

相比于玻尔兹曼机,受限玻尔兹曼机对于随机变量的约束进行了提升。主要表现在:隐变量、观测变量之间存在关联关系,其内部随机变量之间相互独立:

不同于玻尔兹曼机的混乱结构,经过约束后的受限玻尔兹曼机存在明显的层级结构——观测变量层、隐变量层。
关于受限玻尔兹曼机的能量函数可表示为:

对应的模型参数为:W , b , c 。其中b , c分别表示一个列向量,并且其向量中的每一个元素均表示某结点与自身的关联关系信息。
由于结点与同层中的其他结点之间均不存在关联关系,因此这里的b , c 视作‘偏置项’信息即可。
关于受限玻尔兹曼机关于模型参数的学习任务表示如下。将受限玻尔兹曼机的能量函数带入到对数似然梯度中:

这里的θ是指某样本v^{(i)} 对应的某一观测变量v_{j}^{(i)} 与该样本对应模型中的某一隐变量h_{k}^{(i)}之间关联关系的参数信息W_{kj}^{(i)}

其中关于大括号内的积分项,它的连加项数量于样本数量相关,直接求解的代价是极大的。因此关于该项的求解使用块吉布斯采样(Block Gibbs Sampling)进行近似求解:
块吉布斯采样的优势在于,由于隐变量、观测变量内部随机变量之间条件独立,因此关于随机变量的采样均可同步进行,而不需要使用基于‘坐标上升法’的吉布斯采样方式。因此,该方法比真正的吉布斯采样要简化许多。

当然,即便块吉布斯采样虽然可以简化过程,但每次迭代需要收敛至平稳分布依然是十分消耗时间的。对此,使用对比散度方法优化吉布斯采样的效率。以精度换效率,加快其迭代速度。
个人理解:这种方式与强化学习中的广义策略迭代(Generalized Policy Iteration,GPI)思想非常相似。简单来说,只要更新了,无论更新是否完全,都是向正确方向迭代。而最终都会向最优方向收敛。
对比散度也是这种思想,每次迭代都仅向前执行k 步,无论第k 步是否是平稳分布,都会停止。它的底层逻辑是“第k 步的迭代结果至少比没有迭代的更接近平稳分布。”

相反地,对比散度算法在受限玻尔兹曼机的学习过程被证明成功后,对于玻尔兹曼机的学习过程也被进行改进。

关于P_{data}( v^{(i)} , h^{(i)} ) = P_{data}( v^{(i)} ∈ V ) ⋅ P_{model} ( h^{(i)}v^{(i)} ) 中,关于隐变量的后验分布P_{model} (h^{(i)}v^{(i)}) 使用基于平均场理论——变分推断进行表达。

关于生成过程中的联合概率分布P_{model}( v^{(i)} , h^{(i)} ) 通过序列化对比散度(Persistent Contrast Divergence)进行求解。

深度信念网络

深度信念网络的底层思想是将相比于模型参数本身求解隐变量的边缘概率分布P (h^{(i)} ),通过对隐变量进行建模,通过极大似然估计求解对数似然函数log ⁡ P ( h^{(i)} ) 的方式求解P ( h^{(i)})的最优解,最终对样本的对数似然梯度log ⁡ P ( v^{(i)}) 进行提升。

在深度信念网络——背景介绍与结构表示中关于传统受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)对于隐变量的边缘概率分布P ( h )表示如下:

最终可以实现使用模型参数对P ( h ) 进行表示。但这种表示仅是通过梯度上升法对模型参数更新时,P ( h ) 仅是被联代着被更新,可能并没有达到当前迭代步骤关于P ( h ) 的最优解。

因此,叠加RBM结构是基于训练出更优秀的P ( h ),从而产生更优秀的P ( v ) 的一种思想。但叠加RBM结构并不是单纯在已知的RBM 结构上堆叠另一个RBM ,在深度信念网络——模型构建思想(叠加RBM结构)中介绍过,如果将RBM 中的无向边视作相互关联的话(即两个结点间存在两个有向边并相互关联):

在叠加RBM结构过程中,会存在V型结构:
为了方便观察,这里仅拆解一个部分。

这意味着,单纯地叠加一层RBM结构,当h^{(1)} 层被观测(通过P ( h^{(1)} ∣ v ) 产生样本)时,h^{(2)}, v层结点之间存在关联关系,这违背了受限波尔兹曼机的模型结构初衷。为了修改这个问题,只能将h^{(1)} , v 之间红色有向边去除,最终得到深度信念网络的结构表示。
此时,观测变量层v与h^{(2)}层之间必然相互独立。

关于该模型参数的学习任务,主要分为如下两个步骤:

关于Pre-training的部分:主要是贪心逐层预训练算法。将Sigmoid信念网络视作受限玻尔兹曼机来求解后验概率P (h^{(1)}∣ v ),然后逐层向上,忽视其他层对当前遍历层的影响,最终可以得到所有随机变量结点的初始参数信息。
关于fine-tuning的部分:在深度信念网络中,介绍它关于模型参数的学习算法——醒眠算法。因此在后续迭代过程中可以尝试使用Weak Phase去替代贪心逐层预训练中的算法求解P ( h^{(1)} ∣ v )——变种醒眠算法;
如果是有监督学习,可以将深度信念网络当成前馈神经网络进行训练,使用反向传播算法(Back Propagation,BP)对模型参数进行学习。

深度玻尔兹曼机

深度玻尔兹曼机(Deep Boltzmann Machine)它的模型结构表示如下:

关于它的训练过程与深度信念网络相似,也可以通过预训练(Pre-training)以及后续微调(Fine-tuning)的步骤中进行求解。由于深度玻尔兹曼机也是一种玻尔兹曼机,因此关于模型参数的微调过程同样可以使用玻尔兹曼机中求解对数似然梯度的方式进行近似求解。

关注公众号:玻色量子开发者社区,并于公众号后台回复“CSDN”,免费领取【人人皆可使用的】量子计算算力,以及开发工具包等学习资料。

————————————————

本文转载自CSDN博主:静静的喝酒

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_34758157/article/details/128664216

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值