本人来到CSDN已经有一段时间了,写文章也写了好几篇了,本人最喜欢的风格就是用白话讲解一些通俗易懂的东西,在之前,我讲了不少东西,也不知道大家懂没懂,但没关系,你们爱懂不懂,哈哈哈哈哈哈哈哈哈哈。

但这次,我要讲的东西我觉得你们都能懂,不懂我认作你爹,哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈

我们这次要讲的东西是受限玻尔兹曼机,英文名字是Restricted Boltzmann Machine,简称RBM。解释一下这个高大上的名词吧,受限指的是限制,限制啥东西?能量!什么叫能量,我给大家举个例子,天上掉下去一滴水,这水肯定是向下的,为啥,因为重力的原因,它因为重力把高度(叫做势能)给变换为速度(叫做动能),受到一个向下的拉力,然后才能把求往下拉。这个高度和速度其实说白了就是能量,它们互相转化,不消不灭。稍有常识的人都会看出,人往高处走,水往低处流,看我这篇文章的人就是为了往高处走,那水为啥往低处流呢,因为能量总是往势能最小的地方走,直到平衡为止。

能量给大家解释完了,那就说一下限制,这个限制很简单,意思就是水往低处流。这个“能量的受限”跟RBM模型有啥联系,其实吧,联系不是很大,只是在推导公式的时候用到而已。

下面说一下玻尔兹曼机的意思,玻尔兹曼是个学霸,他发明的模型,所以叫玻尔兹曼机。

名字我解释完了,下面我给出一张受限玻尔兹曼机的图片:

图1

如图1所示就为玻尔兹曼机的模型,它一共有两层,下面的四个圆圈叫做可视层,上面三个叫做隐含层。大家看看这个模型,它是箭头全链接,且双向的,这说明啥?没啥!我们管下面四圆圈叫可视层,其实说白了就是输入层,将原始数据给输入进去就行。隐含层是啥意思,就是说我通过一个公式,把可视层的数据给算成隐含数据。

于是我们就得说一下怎么算的了,首先介绍一个概念叫做权值,权值就是值每个小圆圈之间的连线的加权数,比如下面有4个圆圈,上面有3个,那么就有12个权值,我们用wij表示,i指下面圆圈的编号,j是上面的。另一个概念叫做偏置量,怎么理解呢,一次函数写作y=kx+b,权值wij就是k,那么偏置量就是b,我们把这张图继续补完,如图2所示就清晰了,图中的bi,aj指的就是偏置量,w43指的就是可视层神经元4与隐含层神经元3连接的权值。

图2

如图2所示,下一步我们就是把导入可视层的原始数据计算为隐含数据了,怎么计算,那可多了神马tansig,sigmoid,pureline等等,但是我们都不讲,我们就讲最简单的,举个粒子计算隐含层y编号为1的圆圈(左上角)的值,计算方式很简单,我就告诉你 用可视层x1~x4四个数据与权值相乘,然后加和,之后再把偏置量b1加上,就完事儿了。其公式可以写作 y1=x1*w11+x2*w21+x3*w31+x4*w41+b1。按照这个方法,即可把3个圆圈的值都算出来。

算完之后,我们通过算出来的y1,y2,y3在回求一遍x1~x4,为了方便区分,回求的值我们叫做x‘1~x’4。举个例子求x'1,把隐含层3个数据与权值相乘,之后把偏置量a1给加上就完事儿了,公式写作x1=y1*w11+y2*w12+y3*w13+a1。其余3个也按照这个方式求出。

求完x‘1~x’4后用x‘1~x’4对隐含层再次求一遍值,得到y'1~y'3三个数。

这些都完毕之后,我们要做的就是让我们求得x与x',但是我们通过计算他们的差值,不为0,那怎么办呢,那就是反向传播,第一步我们x和y的矢量做乘积,x'与y'做乘积,求出z与z'两个矩阵,这两个矩阵行数为x的数目,列数为y的数目,然后我们把z与z'给相减一下,然后加入到权值里面,例如w11,那么新的w11值就为:w11=w11+alpha*(z11-z'11),这里的alpha叫做学习速率,取值在0~1之间,大家自己一个数一个数的试试就知道多少好了,其它的权值也是一样计算。偏置量计算就是用以前的偏置量加上x-x'或y-y‘。如隐含层偏置量b1更新值为:b1=b1+alpha*(y1-y'1),可视层偏置量a1=a1+alpha*(x1-x'1),其余偏置量同理计算。

计算之后就是反向传播结束了,结束后在进行正向的运算,求一遍x与x'1的差值,看看想不想等,要是相等,行了,结束。不想等就反向传播运算,然后循环,知道近乎相等为止,这样一个RBM模型就建立好了。我讲的比较简单吧,懂了没?

受限玻尔兹曼机RBM最通俗易懂的教程相关推荐

  1. 【总结】关于玻尔兹曼机(BM)、受限玻尔兹曼机(RBM)、深度玻尔兹曼机(DBM)、深度置信网络(DBN)理论总结和代码实践

    近期学习总结 前言 玻尔兹曼机(BM) 波尔兹曼分布推导过程 吉布斯采样 受限玻尔兹曼机(RBM) 能量函数 CD学习算法 代码实现受限玻尔兹曼机 深度玻尔兹曼机(DBM) 代码实现深度玻尔兹曼机 深 ...

  2. 深度学习方法:受限玻尔兹曼机RBM(一)基本概念

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...

  3. Hopfield网络和玻尔兹曼机对比,总结,以及受限玻尔兹曼机RBM的提出

    7.Hopfield网络 特点: (1)是一个简单的单层全连接神经网络: (2)每个神经元和其他神经元是全连接的关系: (3)在更新网络权重时,有异步工作方式:每次只更新一个神经元的权重,其他权重保持 ...

  4. 受限玻尔兹曼机(RBM)与python在Tensorflow的实现

    任何程序错误,以及技术疑问或需要解答的,请扫码添加作者VX:1755337994 简介 受限玻尔兹曼机是一种无监督,重构原始数据的一个简单的神经网络. 受限玻尔兹曼机先把输入转为可以表示它们的一系列输 ...

  5. 深度学习 --- 受限玻尔兹曼机RBM(MCMC和Gibbs采样)

    上一节我们详细的讲解了马尔科夫过程和马尔科夫链,提及了转移矩阵P,马尔科夫的平稳性(遍历性),需要好好理解马尔科夫的平稳性,因为本节将根据马尔科夫的平稳性进行讲解,同时也介绍了采样的原理和过程.好,到 ...

  6. 受限玻尔兹曼机(RBM)在Tensorflow的实现

    Deep Learning with TensorFlow IBM Cognitive Class ML0120EN Module 4 - Restricted Boltzmann Machine 简 ...

  7. 简单易学的机器学习算法——受限玻尔兹曼机RBM

    受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种基于能量模型的神经网络模型,在Hinton提出针对其的训练算法(对比分歧算法)后,RBM得到了更多的关注,利用 ...

  8. 受限玻尔兹曼机RBM的基本原理详细概述

    RBM受限玻尔兹曼机是组成深度信念网络的一种基本单元,RBM是一种概率生成模型也是一种能量模型, RBM模块中主要包括一个隐含层和一个可见层.其中,受限玻尔兹曼机的隐含层和可见层是通过双向连接的方式进 ...

  9. 受限玻尔兹曼机RBM

    基本概念 代码 基本概念 受限玻尔兹曼机(RBM)是一个两层神经网络,第一层被称为可见层,第二层被称为隐藏层,因为网络只有两层,所以又被称为浅层神经网络. 该模型最早由 Paul Smolensky ...

最新文章

  1. 这款可视化工具,Java 调优起来真的 so easy啊
  2. QT学习笔记之QTableView设置属性的方法
  3. 矩阵的秩到底描述了什么?
  4. 初始化环境配置:CentOS 7.4x64 系统安装及基础配置
  5. 2013年新年礼物---CrossFPC 终于出来了
  6. Python基础与大数据应用(三)
  7. 税控系统链接服务器失败,税控系统连接服务器安全地址
  8. HCIE-Cloud题库
  9. 路飞学城mysql练习
  10. 计算机顶级会议Rankings 英文投稿的一点经验
  11. ORB_SLAM安装以及运行实例
  12. Linux添加路由的方法
  13. 阿里-蚂蚁金服-一面电面-上海-java研发实习生
  14. application实现一个简单的网页计数器
  15. 中国首富许家印入局FF 贾跃亭造车这事儿要成?
  16. 虚拟机开启及简单的系统命令
  17. SAP ABAP OOALV常用的方法
  18. 淘宝API接口,商品详情,产品页面信息接口调用展示
  19. java文件下载接口_javaweb通过接口来实现多个文件压缩和下载(包括单文件下载,多文件批量下载)...
  20. 去除迅雷极速版 提示升级的广告

热门文章

  1. DiscoveryClient
  2. Flutter 不可错过的学习资源
  3. pytorch yolov5 onnx推理
  4. SQL中内部表和外部表的区别
  5. 使用Web技术来实现人民日报的点亮武汉
  6. 什么是骨传导耳机?骨传导耳机有必要买吗
  7. linux 查看进程死亡原因,【进程管理】进程的死亡
  8. open-dingtalk和nginx 做内网转发
  9. linux实用技巧:ubuntu16.04安装BeyondCompare文件/文件夹对比工具
  10. JSD-2204-Java语言基础-数组-方法-Day06