深度学习基础(四)—— RBM(受限波尔滋曼机)
如果神经网络的初值选取的不好的话,往往会陷入局部最小值。实际应用表明,如果把 RBM 训练得到的权值矩阵和 bias 作为 BP 神经网络的初始值,得到的结果会非常好。其实,RBM 最主要的用途还是用来降维。
(1)RBM 属于 unsupervised learning
用于非监督学习的神经网络主要有以下三个:
- RBM
- Autoencoders
- sparse coding model
(2)RBM 网络共有两层,Visible Layer ⇔\Leftrightarrow Hidden Layer
(3)deep learning 中一个重要网络结构 DBN,便是由 RBM 网络叠加而成(Autoencoder ⇒ Stacked Autoencoder),
就像模拟退火算法,RBM 也是一个受物理学启发而提出的模型。
一个事物有相应的稳态,如在一个碗内的小球会停留在碗底,即使受到扰动偏离了碗底,在扰动消失后,它会回到碗底。学过物理的人都知道,稳态是它势能最低的状态。因此稳态对应与某一种能量的最低状态。将这种概念引用到 Hopfield 网络中去,Hopfield 为此构造了一种能量函数的定义。这是他所作的一大贡献。引进能量函数概念可以进一步加深对这一类动力系统性质的认识,可以把求稳态变成一个求极值与优化的问题,从而为 Hopfield 网络找到一个解优化问题的应用。
RBM网络共有 2 层,
- 其中第一层称为可视层(visible units),一般来说是输入层,
- 另一层是隐含层(hidden units),也就是我们一般指的特征提取层。
在一般的文章中,都把这2层的节点看做是二值(binary)的,也就是只能取0或1,当然了,RBM中节点是可以取实数值的,这里取二值只是为了更好的解释各种公式而已。设计一个网络结构后,接下来就应该想方设法来求解网络中的参数值。而这又一般是通过最小化损失函数值来解得的。那么在RBM网络中,
- 我们的损失函数的表达式是什么呢,
- 损失函数的偏导函数又该怎么求呢?
energy function
(1)Energy function
E(x,h)=−hTWx−cTx−bThE(\mathbf x,\mathbf h)=-\mathbf h^T\mathbf W\mathbf x-\mathbf c^T\mathbf x-\mathbf b^T\mathbf h
(2)distribution
p(x,h)=e−E(x,h)Z=ehTWxecTxebTh/Z\begin{split}p(\mathbf x,\mathbf h)&=\frac{e^{-E(\mathbf x,\mathbf h)}}{Z}\\&=e^{\mathbf h^T\mathbf W\mathbf x}e^{\mathbf c^T\mathbf x}e^{\mathbf b^T\mathbf h}/Z\end{split}
inference
(1) p(h|x)p(\mathbf h|\mathbf x)
p(h|x)=∏jp(hj|x)p(hj|x)=11+exp(−(bj+Wj⋅x))=sigm(bj+Wj⋅x)\begin{split}&p(\mathbf h|\mathbf x)=\prod_jp(h_j|\mathbf x)\\&p(h_j|\mathbf x)=\frac1{1+\exp(-(b_j+\mathbf W_j\cdot\mathbf x))}=\text{sigm}(b_j+\mathbf W_j\cdot \mathbf x)\end{split}
(2)p(x|h)p(\mathbf x|\mathbf h)
p(x|h)=∏kp(xk|h)p(xk|h)=11+exp(−(ck+hTWk))=sigm(ck+hTWk)\begin{split}&p(\mathbf x|\mathbf h)=\prod_kp(x_k|\mathbf h)\\&p(x_k|\mathbf h)=\frac1{1+\exp(-(c_k+\mathbf h^T\mathbf W_k))}=\text{sigm}(c_k+\mathbf h^T\mathbf W_k)\end{split}
Free Energy
\begin{split} p(\mathbf x)=\sum_{\mathbf h\in\{0,1\}^H}p(\mathbf x,\mathbf h)&=\exp\left (\mathbf c^T\mathbf x+\sum_{j=1}^H\log(1+\exp(b_j+\mathbf W_j\mathbf x))\right )/Z\\ &=\exp(-F(\mathbf x))/Z \end{split}
F(x)F(\mathbf x) 即为 Free Energy;
深度学习基础(四)—— RBM(受限波尔滋曼机)相关推荐
- RBM受限波兹曼机在特征学习上的使用
'''受限波兹曼机在特征学习上的使用 ''' import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sk ...
- 【零散知识】受限波兹曼机(restricted Boltzmann machine,RBM)和深度置信网络(deep belief network,DBN)
前言: { 最近一直在想要不要去线下的英语学习机构学英语 (本人的英语口语能力实在是低).如果我想完成今年的年度计划,那么今年就没时间学英语了. 这次的内容是之前落下的深度置信网络(deep beli ...
- 深度波尔茨曼机(DBM)
1.在受限波尔茨曼机(RBM)基础上直接叠加会变成深度信念网络(DBN) 2.深度波尔茨曼机(DBM)是把有向图部分变为无向图的DBN 3.求解DBM采取随机梯度上升法 模型介绍 波尔茨曼机(Bolt ...
- 深度学习 —— 受限玻尔曼机 RBM
能量基础模型(EBM) 能量基础模型为每一个感兴趣的变量设置分配一个标量能量.学习目的是改变能量函数以使它具有期待属性.例如我们希望通过理想或可行的设置获得低能量.能量基础的概率模型定义了能量函数的概 ...
- (十四)从零开始学人工智能-深度学习基础及CNN
文章目录 一.深度学习基础 1.1 深度学习及其发展历史 1.1.1 什么是学习? 1.1.2 什么是机器学习? 1.1.3 什么是深度学习? 1.1.4 深度学习发展历史 1.1.5 小结 1.2 ...
- 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)
独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...
- 第三章_深度学习基础
文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...
- 深度估计相关原理(计算机视觉和深度学习基础)
今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础. 一.计算机视觉基础 1.1. 针孔相机模型 相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面 ...
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐
人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...
最新文章
- 两个晶体管组成的混沌电路
- git使用-设置项目忽略文件
- ASP.NET EntityFrameworkCore code first 多对多设计
- QT的QPainterPath类的使用
- oracle rdbms 占内存_027、Oracle数据库
- 8. 字符串转换整数 (atoi)(正则表达式)
- 专访丨HashData创始人简丽荣:云原生与大数据时代,湖仓一体代表了未来
- 地域和地方的区别_都是大米做的有什么区别?不少人被难倒,米线米粉差别还不少...
- C++ 无限for循环的bug
- Tizen已经够烂了 但份额还是超过了黑莓
- multisim 10 小知识
- 黑苹果 驱动有线网卡 Intel i225-V 驱动教程
- 抖音自拍特效如何java实现_抖音特效在 Web 端的实现
- Photoshop抠图(运用背景橡皮擦工具进行抠图)
- 组合导航中常见的英文单词、短语翻译
- chrome、Firefox、IE浏览器和驱动下载地址
- HTML5 小练习1—仿MPG游戏商城
- 【720开发】 spring boot 快速入门
- 如何从官网下载MySQL最新版本的安装包?
- VMware克隆Linux虚拟机
热门文章
- mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?
- Python打包成.exe文件详细实例
- Spark解决的问题与体系结构
- Linux添加相对库路径,Linux C编程(8) 使用相对路径加载动态库-rpath和$ORIGIN
- Theme相关:button的效果不显示
- Java设计模式(详细待续)(转)
- Numpy——numpy的索引
- OpenCV精进之路(十九):工具——程序打包发布
- 在VS工程中添加lib库的三种方法
- 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”。(改进版本)