matlab rbm 语音,Deep Belief Network 学习笔记-RBM

article/2025/11/6 23:56:37

Deep Belief Network 学习笔记-RBM

By Placebo

(纯属个人笔记)

第一次知道deep learning,是上学期dengli博士来实验室的一次报告,他讲到,当神经网络的层数大于2时(即一个hidden层,一个输出层,不算输入层,之后皆采用这种表述法),经典的训练方法效果会很差,如果层数继续增多,则完全没法训练。当时对神经网络知之甚少,直到最近较认真的学了下机器学习,才明白。

什么是deep learning?我们知道(虽然不知道如何证明)2层神经网络的建模能力是非常强大的,但是要求隐节点个数足够多,多到难以接受。如果采用更深层的网络,比如3层网络,即两个hidden层,每层100个节点,则可以和hidden层有10000个节点的2层网络建模能力差不多,类似,4层网络,三个hidden层,每层100个节点,可以和hidden层有1000000个节点的2层网络建模能力差不多。这就是加深网络深度带来的好处。但是网络深了,针对3层网络的训练方法再用起来就会失败,因为参数的局部极小值太多了,很容易陷入到一个很烂的极值。

Hinton于XXXX年提出了一种方法,把RBM(Restricted Boltzmann Machines)堆叠在一起,训练出权值,把这个权值当成神经网络权值的初始值,再用经典的梯度法去训练网络,最后得到的结果会很好。也就是说通过选择好的参数初始值让结果更好。

但是RBM是种能量模型,他的权值是用来计算连接节点的能量值的,而神经网络的权值是种递进式的,为什么前者的权值直接给后者用也可以呢,我也不清楚,总是感觉不科学,因为调研的甚少,也没发现解释为什么的文章。

这里先讲下RBM是如何训练的。

先说Boltzmann Machines,这是一种无向图模型,有N个节点,节点是互相连接的(不一定要全连接),第i个节点和第j个节点间权值为wij,为简单起见,这里认为节点的取值是2值的,即只能取0或1。有些节点值是已知的,有些是未知的,我们把已知的和未知的分开,分成两层,已知的节点集记为V,未知的节点集合记为H。若是V内节点之间都不相连,H内节点之间也都不相连,这种模型叫Restricted Boltzmann Machines。

定义一个能量函数E(V,H)

\[{\rm{P}}\left( {{\rm{v}},{\rm{h}}} \right) = \frac{{{{\rm{e}}^{ – {\rm{E}}({\rm{v}},{\rm{h}})}}}}{{ \sum \nolimits_{{\rm{u}},{\rm{g}}} {{\rm{e}}^{ – {\rm{E}}({\rm{u}},{\rm{g}})}}}}\]

最大化P(V)的值,用梯度法,经过一系列推导可得权值的更新规则为

∆wij=data – model

这里的<>意思是求期望,data是指已知样本集时,vihj的期望值,这时vi是由样本确定的,hj是未知的。而第二项,是模型中vihj的期望值。这时vi,hj都是未知的。

直接求这两个期望不好求,可以用抽样的方法来估计。第一项,可以通过P(hj|v)抽样出hj,这里hj之和v有关,和hk无关,因为RBM假定H内的节点之间没有连接,这种限制简化了计算。

第二项也可以用抽样法算出,不过要反复抽样,用P(hj|v)抽出每个hj,再用p(vi|h)抽出每个vi,不断反复,最后这个抽样过程得到的抽样分布会收敛到模型的真实分布。但是这个过程太慢了,于是hinton提出一种估计的办法,用P(hj|v)抽出每个hj,再用p(vi|h)抽出每个vi,再用P(hj|v)抽出每个hj,∆w中的第二项直接用这时得到的v和h来计算。这种方法得到的解也是可接受的。

虽然说RBM用到了MRF相关的理论,但是即使对这些理论理解得很浅,也可以直接拿CD算法来用。机器学习里理论上的东西看起来都蛮复杂,比如收敛性证明,误差上界证明之类的,但是若是有了算法的菜谱版,配上便于做科学计算的编程工具,如matlab,numpy,r等,是很容易用的。可惜此领域很多文章并没有明显的给出菜谱式算法。

欢迎加入我爱机器学习QQ14群:336582044

getqrcode.jpg

微信扫一扫,关注我爱机器学习公众号


http://chatgpt.dhexx.cn/article/xdgVWBMI.shtml

相关文章

受限玻尔兹曼机(RBM)

受限玻尔兹曼机&#xff08;RBM&#xff09; 一起读懂传说中的经典&#xff1a;受限玻尔兹曼机 https://mp.weixin.qq.com/s?__bizMzA3MzI4MjgzMw&mid2650731098&idx1&snc7391caee3a567b4b046406d53f022f2&chksm871b3624b06cbf320f3725fe452d291e04a4a8c1beda…

人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型,调通模型的训练与测试

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型&#xff0c;调通模型的训练与测试。RBM(受限玻尔兹曼机)可以在没有人工标注的情况下对数据进行学习。其原理类似于我们人类学习的过程&#xff0c…

受限玻尔兹曼机(RBM)原理总结

https://blog.csdn.net/l7H9JA4/article/details/81463954 授权转发自&#xff1a;刘建平《受限玻尔兹曼机&#xff08;RBM&#xff09;原理总结》 地址:http://www.cnblogs.com/pinard/p/6530523.html 前 言 本文主要关注于这类模型中的受限玻尔兹曼机&#xff08;Restrict…

特征工程(七)—特征学习RBM

1、MNIST数据集 """ MNIST数据集&#xff0c;包括6000个0-9手写数字图像&#xff0c;以及学习的真实值此处使用很低级的特征&#xff0c;而不是解释性很好的特征。每一个数据点包括784个特征&#xff08;灰度图像的像素值&#xff09; """impor…

特征学习-RBM与PCA应用在LR

Table of Contents 1. 基本信息查询 导入package2. 提取PCA 成分3. 提取RBM主成分 取出前20个最有代表性的特征提取后20个特征4. RBM在machine learning中效果 直接用LR模型采用PCA主成分的LR采用RBM主成分的LR 1. 基本信息查询 导入package import numpy as np import matpl…

受限玻尔兹曼机RBM

基本概念代码 基本概念 受限玻尔兹曼机&#xff08;RBM&#xff09;是一个两层神经网络&#xff0c;第一层被称为可见层&#xff0c;第二层被称为隐藏层&#xff0c;因为网络只有两层&#xff0c;所以又被称为浅层神经网络。 该模型最早由 Paul Smolensky 于 1986 年提出&…

理解RBMDBN

RBM 关于受限玻尔兹曼机RBM&#xff0c;网上很多博客[1][2]都总结推导RBM很详细&#xff0c;很少有人能通俗地解释一下RBM的用途和有点&#xff0c;我觉得[2]写得很好&#xff0c;可以参考辅助理解&#xff0c;下面简单总结一下我的理解和一些相关知识。 网络结构 RBM是一个…

中小企业RBM结合VRRP组网

组网拓扑图 FW-A配置&#xff1a; sysname FW1090-A # track 1 interface GigabitEthernet1/0/1 physical ///检测上行口 # track 2 interface GigabitEthernet1/0/2 physical ///检测下行口 # ospf 1 router-id 192.168.10.254 ///OSPF发布于核心互联路由 defa…

RBM受限玻尔兹曼机

受限玻尔兹曼机(RBM) 一、RBM的网络结构 RBM的网络结构如下图所示&#xff1a; RBM中包括两层&#xff0c;即&#xff1a; 可见层(visible layer)&#xff0c;图上的___v___隐藏层(hidden layer)&#xff0c;图上的___h___ 由上图可知&#xff0c;在同一层中&#xff0c;如…

RBM

目录 总结&#xff1a; 伯努利-伯努利RBM 概念&#xff1a; 公式定义 训练过程 高斯-伯努利RBM 概念&#xff1a; 总结&#xff1a; RBM是基于能量函数假设的&#xff0c;优化目标是使能量函数最小化&#xff0c;也设定为重构的可见层等于真实值的概率最大化。在利用极…

DL:RBM 简介、网络结构

在学习Hinton的stack autoencoder算法&#xff08;论文 Reducing the Dimensionality of Data with Neural Networks&#xff09;之前需要了解什么是RBM&#xff0c;现在就我学习的情况&#xff0c;查找的资料&#xff08;大部分来自博客、论文&#xff09;&#xff0c;简单介绍…

RBM的理解

前言 对RBM(Restricted Boltzmann Machine)的理解进行简单的总结。   主要涉及RBM的图结构&#xff0c;为什么场能E(v,h)要如此定义&#xff0c;优化的思路到底是怎么来的&#xff0c;MRF与MC在优化时起到怎么样的作用&#xff0c;CD的意义&#xff0c;RBM的实现。 RBM RB…

受限玻尔兹曼机(RBM)理解

受限玻尔兹曼机&#xff08;RBM&#xff09;多见深度学习&#xff0c;不过笔者发现推荐系统也有相关专家开始应用RBM。实际上&#xff0c;作为一种概率图模型&#xff0c;用在那&#xff0c;只要场景和数据合适都可以。有必要就RBM做一个初步了解。 1、 RBM定义 RBM记住三个要…

RBM(受限玻尔兹曼机)解析

1.RBM结构 RBM包括隐层、可见层和偏置层。 与前馈神经网络不一样&#xff0c;RBM在可见层和隐层间的链接方向不定的&#xff08;即可以双向传播&#xff1a;隐层—>可见层和可见层—>隐层&#xff09;和完全链接的。如下图表示了一个微型的RBM 如上图所示&#xff0c;…

深度学习 --- 受限玻尔兹曼机详解(RBM)

本节终于来到了重头戏受限玻尔兹曼机&#xff0c;为了能深入理解本节&#xff0c;我们深入讲了很多基础知识&#xff0c;这些基础知识很重要&#xff0c;是理解本节的基础&#xff0c;同时也是你学习其他算法的基础如强化学习、自然语言处理等。本节的安排是先对比一下受限玻尔…

超市进销存管理系统软件(JFrame简版)

出于对桌面软件的爱好&#xff0c;学习过程中使用swing做了一个简单系统&#xff0c;所有布局代码自己手写&#xff0c;未使用swing构建工具&#xff0c;swing构建工具会产生的代码非常糟糕 想要快速构建好看的UI组件,可以使用NetBeans&#xff0c;或者idea等相关插件 有兴趣…

基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

基于javaweb的超市进销存管理系统(javassmjspbootstrapjquerymysql) 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功…

Java项目:ssm超市进销存管理系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 ssm超市进销存管理系统 项目介绍 超市进销存管理系统&#xff0c;主要分为管理员与员工两种角色&#xff1a;管理员主要功能模块有&#xff1a; 进货管理:进…

基于Spring+SpringMVC+MyBatis超市进销存管理系统

基于SSM超市进销存管理系统 一、系统介绍二、功能展示1.进货信息2.退货信息3.商品信息4.商品类别5.库存信息6.库存预警7.临期商品8.销售信息9.客户退货信息10.客户信息11.供应商信12.用户信息管理&#xff08;管理员&#xff09; 三、获取源码 一、系统介绍 系统主要功能&…

Java编写的超市进销存管理系统 功能非常齐全,代码可直接运行

今天为大家分享一个java语言的超市进销存管理系统&#xff0c;目前系统已经完成了初步功能&#xff0c;后续会进一步完善。整个系统界面漂亮&#xff0c;有完整得源码&#xff0c;希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步 开发环境 开发语言为Java&#xf…