《深度学习导论及案例分析》一3.2受限玻耳兹曼机的学习算法

简介:

本节书摘来自华章出版社《深度学习导论及案例分析》一书中的第3章,第3.2节,作者李玉鑑 张婷,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2受限玻耳兹曼机的学习算法

受限玻耳兹曼机的学习就是对模型参数集θ进行计算,常用的方法是最大似然估计,其基本思想在于采用梯度上升算法最大化总体对数似然函数。在给定可视向量训练集S={v(l),1≤l≤N}时,受限玻耳兹曼机的对数似然函数定义为

lRBM(θ)=log∏Nl=1p(v(l)θ)=∑Nl=1logp(v(l)θ)(3.11)

由于

lRBM(θ)=∑Nl=1log∑hp(v(l),hθ)=∑Nl=1log∑hexp(-ε(v(l),hθ))∑v,hexp(-ε(v,hθ))

=∑Nl=1(log∑hexp(-ε(v(l),hθ))-log∑v,hexp(-ε(v,hθ)))(3.12)

所以,受限玻耳兹曼机的对数似然梯度为

lRBM(θ)θ=∑Nl=1θlog∑hexp{-ε(v(l),hθ)-log∑v,hexp{-ε(v,hθ)}

=∑Nl=1∑hexp(-ε(v(l),hθ))∑hexp(-ε(v(l),hθ))×(-ε(v(l),hθ))θ

-∑v,hexp(-ε(v,hθ))∑v,hexp(-ε(v,hθ))×(-ε(v,hθ))θ

=∑Nl=1-∑hp(hv(l),θ)(ε(v(l),hθ))θ+∑v,hp(v,hθ)(ε(v,hθ))θ

=∑Nl=1-Ep(hv(l),θ)(ε(v(l),hθ))θ+Ep(v,hθ)(ε(v,hθ))θ(3.13)

其中,Ep(•)表示求关于分布p的数学期望,p(hv(l),θ)表示在可视向量为v(l)时,隐含向量的条件概率分布。

根据公式(3.13)可得对数似然梯度关于各个参数的偏导为

lRBM(θ)wij=∑Nl=1(Ep(h|v(l),θ)[hiv(l)j]-Ep(v,h|θ)[hivj])

=∑Nl=1(p(hi=1|v(l),θ)v(l)j-∑vp(v|θ)p(hi=1|v,θ)vj)(3.14)

lRBM(θ)aj=∑Nl=1(EP(h|v(l),θ)[v(l)j]-Ep(v,h|θ)[vj])=∑Nl=1(v(l)j-∑vp(v|θ)vj)(3.15)

lRBM(θ)bi=∑Nl=1(Ep(h|v(l),θ)[hi]-Ep(v,h|θ)[hi])

=∑Nl=1(p(hi=1|v(l),θ)-∑vp(v|θ)p(hi=1|v,θ))(3.16)

显然,直接利用公式(3.14)~公式(3.16)计算上述偏导值的效率是非常低的,因为在计算Ep(v,h|θ)[hivj]、Ep(v,h|θ)[vj]和Ep(v,h|θ)[hi]的期望值时,需要进行具有指数复杂度的求和运算。

为了快速计算受限玻耳兹曼机的对数似然梯度,可以采用一类称为对比散度(Contrastive Divergence,CD)的近似算法[146,147]。其中常用的是k步对比散度算法(kstep Contrastive Divergence,CDk),详见算法3.1。注意,算法3.1并未加入学习率等预设参数,与网上下载的实现代码可能略有不同。

算法3.1k步对比散度(CD-k)

输入:RBM(v1,…,vm,h1,…,hn)、训练集S={v(l),1≤l≤N}

输出:梯度近似Δwij、Δaj、Δbi,其中,i=1,…,n,j=1,…,m

初始化:Δwij=Δaj=Δbi=0,其中,i=1,…,n,j=1,…,m

for all the  v(l)∈S do

g(0)←v(l)

for t=0,…,k-1  do

for i=1,…,n  do h(t)i~p(hig(t),θ) end for

for j=1,…,m do g(t+1)j~p(vjh(t),θ)end for

end for

for i=1,…,n,j=1,…,m  do

Δwij←Δwij+p(hi=1g(0),θ)•g(0)j-p(hi=1g(k),θ)•g(k)j


end for

for j=1,…,m do Δaj←Δaj+(g(0)j-g(k)j) end for

for j=1,…,n  do Δbj←Δbi+p(hi=1g(0),θ)-p(hi=1g(k),θ)  end for

end for

不难看出,CDk算法的核心是一种特殊的吉布斯采样,称为交错吉布斯采样(alternating Gibbs sampling)或者分块吉布斯采样(blocked Gibbs sampling)[145],如图3.3所示。吉布斯采样是一种MCMC算法,在直接采样困难的情况下,可以用来生成一个吉布斯蒙特卡罗马尔可夫链或吉布斯链[148,149],用以近似一个给定多变量分布的样本。交错吉布斯采样主要包括下面两个关键步骤:


8f7690ba1bcc4c41c19eeffb41d4d23ac5eeecb7

1)令t=0,用可视向量的训练样本v(l)初始化吉布斯链,得到g(t)=(g(t)1,g(t)2,…,g(t)m)T=v(l)。

2)通过迭代依次从p(hg(t),θ)采样h(t)=(h(t)1,h(t)2,…,h(t)n),从p(vh(t),θ)采样g(t+1),直到t+1=k。

对每一个可视向量样本v(l),都可以利用交错吉布斯采样生成一个k步吉布斯链,g(l,0)=v(l),h(l,0),g(l,1),…,h(l,k),g(l,k+1)。根据这个吉布斯链,就可以近似计算在训练样本仅为v(l)时的对数似然梯度如下:

lRBM(θ)wij≈∑Nl=1(p(hi=1g(l,0),θ)g(l,0)j-p(hi=1g(l,k),θ)g(l,k)j)(3.17)



lRBM(θ)aj≈∑Nl=1(g(l,0)j-g(l,k)j)(3.18)

lRBM(θ)bi≈∑Nl=1(p(hi=1g(l,0),θ)-p(hi=1g(l,k),
θ```  
))(3.19)
显然,算法3.1就是公式(3.17)~公式(3.19)的结果。它被称为CDk是因为最大化RBM的对数似然函数lRBM(θ)在理论上恰好等价于最小化KullbackLeibler散度KL(p0p∞)=1NlogN-1N∑Nl=1logp(v(l)|θ),而在实践上又近似等价于最小化两个KullbackLeibler散度之差[62,64,146],即

CDk=KL(p0p∞)-KL(pkp∞)

=1NlogN-1N∑Nl=1logp(g(l,0)|θ)-1NlogN-1N∑Nl=1logp(g(l,k)|θ)

=1N∑Nl=1(logp(g(l,0)|θ)-logp(g(l,k)|θ))(3.20)
其中,p0(vθ)=1N∑Nl=1δ(v-v(l))=1N∑Nl=1δ(v-g(l,0))

是可视向量的经验分布,pk(vθ)=1N∑Nl=1δ(v-g(l,k))是在给定参数时,k步吉布斯链产生的重构分布,p∞(vθ)=p(vθ)则是平衡分布。

虽然CDk在计算受限玻耳兹曼机的对数似然梯度时是一种有偏的随机梯度方法,但其中的偏差会在k趋于∞时消失。在实际应用中,常常只需取k=1,就可以达到足够好的效果。目前,关于CDk算法的收敛性还没有得到严格的理论证明,对其合理性和收敛性的启发式分析可进一步参看文献[150,151]。

通过选择学习率η、权重退化率λ、动量加权率ν,还可以根据公式(3.21)迭代更新RBM的参数集θ,直到满足一定的收敛条件:

θ(t+1)=θ(t)+ηlRBM(θ(t))θ-λθ(t)+νΔθ(t-1):=Δθ(t)(3.21)

最后应该指出,关于受限玻耳兹曼机的学习,还可以使用对比散度学习的改进算法,如持续对比散度(Persistent Contrastive Divergence,PCD)[152]和快速持续对比散度(Fast Persistent Contrastive Divergence,FPCD)[153],以及其他算法,包括并行回火(Parallel Tempering,PT)[154]、伪似然(pseudo likelihood)[155]、比率匹配(ratio matching)[156]等。
相关文章
|
9月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
794 55
|
8月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
475 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
7月前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
8474 71
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
6月前
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法
|
6月前
|
机器学习/深度学习 运维 自然语言处理
当深度学习遇上故障根因分析:运维人的绝佳拍档
当深度学习遇上故障根因分析:运维人的绝佳拍档
279 17
|
6月前
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
8月前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
1728 11
架构学习:7种负载均衡算法策略
|
7月前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
7月前
|
机器学习/深度学习 文字识别 自然语言处理
分析对比大模型OCR、传统OCR和深度学习OCR
OCR技术近年来迅速普及,广泛应用于文件扫描、快递单号识别、车牌识别及日常翻译等场景,极大提升了便利性。其发展历程从传统方法(基于模板匹配和手工特征设计)到深度学习(采用CNN、LSTM等自动学习高级语义特征),再到大模型OCR(基于Transformer架构,支持跨场景泛化和少样本学习)。每种技术在特定场景下各有优劣:传统OCR适合实时场景,深度学习OCR精度高但依赖大量数据,大模型OCR泛化能力强但训练成本高。未来,大模型OCR将结合多模态预训练,向通用文字理解方向发展,与深度学习OCR形成互补生态,最大化平衡成本与性能。
|
9月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
265 18

热门文章

最新文章