受限玻尔兹曼机——简单证明

花了很久看了一下玻尔兹曼机,感觉水有点深,总之一步一步来嘛~~~~

先说一下一个非常好的参考资料: 受限玻尔兹曼机(RBM)学习笔记 ,有兴趣的可以再看看这篇文章的参考文献或者博客,写的也非常好,本文就是基于这篇文章的理解,简单证明一下RBM

接下来开证,不对之处欢迎指正:

①我们首先要知道玻尔兹曼机是一种基于统计力学提出来的能量模型,是一个随机神经元模型,首先介绍一下各个参数

   

②已知条件:利用能量函数可以得到可见层和隐藏层的联合概率分布

   

 ③然后我们利用联合概率计算边缘分布函数可以得到可见层V的分布函数

,直接把和拿到分子的原因是,分母为归一化常量,为常量

④接下来我们就是要可见层数据最大性的拟合总体样本空间的分布,我们假设总体分布为q(x),总空间为Ω,然后我们用KL距离来计算样本分布和可见层分布的相似度

关于KL距离请看我前面写过的博客,它是一种不对称距离。既然我们要求P(x)拟合Q(x)损失的能量,那么就用下式计算


⑤然后我们会发现,只有当P(x)最大的时候,才能让KL距离最小,这时候损失能量最小,因为总样本空间是固定的,所以这个Q(x)也是固定,只需管P(x)即可。接下来我们来求这个P(v)的最大值,求关于概率函数的最大值,我们很快就能想到极大似然函数,当然求解的时候用取对数方法求解

 ☆ ☆ ☆ ☆ ☆ ☆一定要注意,这个式子就是我们需要解决的问题,最好把它列在稿纸一边) ☆ ☆ ☆ ☆ ☆

⑥接下来我们对模型参数中的权重W和偏置A,B分别求其偏导数,记住上式中,能量函数 E 在上面说过了,主要就是求前面的条件概率和联合概率

这里提前定义一个东西

先来逐步求解上式中第一项对模型参数中权重W,偏置A和B的偏导:

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

(红色部分等于1,这一部分自己好好想一下,文末举了个小例子)

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


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


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

细心的话会发现这个P(hj=1|v)没有求出来,接下来我们求这一项

这里我们将能量函数拆开成两个式子


那么可以开始求P(hj=1|v)了


随后也就得到了最终的激活概率


⑦第⑤步的第一项我们计算完毕,再来计算一下第二项

(这里面第二个∑ 已经在上面计算出来了)

⑧至此,我们基本求出了第⑤步中需要计算的所有参数,但是有一个没求出来,写出来以后就会发现


我们可以发现上面有一项∑[P(v)*....]是没有计算出来的,这个时候,我们就必须使用某些采样方法对此项进行估计。仔细观察, 发现他的形式是(概率*概率),如果你看过蒙特卡洛方法,就会发现蒙特卡洛是(函数*概率), 意思是这个函数再这个概率分布下的均值,因而可以采用蒙特卡洛方法来解决这一项无法求解问题. 大牛Hinton提出了对比散度算法,也就是把可见层输入数据当做起点,经过K次吉布斯采样的样本当做终点,近似计算上面三个式子,然后就变成了


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

好了,做一下总结,其实这里面都是围绕着最终要解决的问题,也就是第⑤步提出的那个对模型参数求梯度的式子,针对第一项和第二项,我们分别求解,利用的知识点比较多,我第一次看的时候也不懂,但是看一次代码,然后再回头看这个也就差不多懂一部分了。

最后说一下哈,文章参考的是这篇文章:http://blog.csdn.net/itplus/article/details/19408143   有兴趣可以去详细看看的。

有不对的地方,谢谢大家指正~~~~

更新日志2017-8-30

关于⑥中红字部分的概率和为什么等于1,其实我也不太好说明我的想法对不对,我当时以一个小例子想的:

1.比如有编号为1-6的六个球,那么随便取出来一个它的概率和为1

2.因为每次取球相互独立(类比隐神经元相互独立),所以可以把球拆成两部分1-4一组,5-6一组,每组自己的概率和为1

3.然后我们用加和的方法写出从1→2的数学表达式变换方法


如果此变换没错(问了几个同学,表示应该没问题,特别强调独立),那么很容易发现


这样,如果我们把RBM证明中的h当做1-6的球空间,hj为1-4的球空间,h-j为5-6的球空间,然后替换上式就得到了


理解了这个,就知道为什么上面那个条件概率和为1了。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

受限玻尔兹曼机RBM实现及能量值思考——matlab实现

网址:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html 这个代码主要是在mnist上做手写数字识别的代码,贴出来的目的主要是想研究一下在迭代过程中能量的变化情况。 1. 标准能量函数 标准的能量函数的表达式为: 那么就将这个…

Cheat_Sheet ---Keras、Matlab、Matplotlib、Numpy、Pandas、Scikit-Learn、SciPy

Cheat_Sheet ---KerasCheat_Sheet ---MatlabCheat_Sheet ---MatplotlibCheat_Sheet ---NumpyCheat_Sheet ---PandasCheat_Sheet ---Scikit-LearnCheat_Sheet ---SciPy参考文献 http://ddl.escience.cn/f/IDkq#path%2F8215264

WPF中DataContext的绑定技巧-粉丝专栏

(关注博主后,在“粉丝专栏”,可免费阅读此文) 先看效果: 上面的绑定值都是我们自定义的属性,有了以上的提示,那么我们可以轻松绑定字段,再也不用担心错误了。附带源码。 …

matlab实现unix时间戳到标准时间的转换

【注】给定时间精确到小时的情况下的转换 函数: function [ date ] ConvertDate( x ) %将unix时间戳转换为标准时间 % date datestr(1426406400/86400 datenum(1970,1,1)); date datestr((x-3600*248*3600)/86400 70*36519datenum(1900,1,0)); end结果&#…

failed to initialize nvml driver/library version mismatch ubuntu

英伟达驱动版本是384.130显示的NVRM version: NVIDIA UNIX x86_64 Kernel Module是:384.130。 若是旧的版本就会出现如下问题。 这个问题出现的原因是kernel mod 的 Nvidia driver 的版本没有更新,一般情况下,重启机器就能够解决,…

Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

Berkeley Computer Vision page Performance Evaluation 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率 True Positives, TP:预测为正样本,实际也为正样本的特征数 False Positives,FP:预测为正样本,实际为负…

Linux的常用经典命令(持续更新)

找工作笔试面试那些事儿(16)—linux相关知识点(1) 找工作笔试面试那些事儿(17)—linux测试题 vim编辑器操作命令大全-绝对全 - CSDN博客 Linux进阶资源 Command line one-liners the-art-of-command-line Linux工具快速教程 快乐的 Linux 命令行 Linux Tutorial UNIX Tutoria…

【caffe-Windows】cifar实例编译之model的使用

本文讲解如何对网上下载的一个图片利用训练好的cifar模型进行分类 第一步 上一篇文章训练好以后会得到两个文件 从网上查阅资料解释来看,第一个caffemodel是训练完毕得到的模型参数文件,第二个solverstate是训练中断以后,可以用此文件从中断…

Python 命令汇总

python 库windows安装 兵种:python程序员。 等级:二级。 攻击:较高。 防御:普通。 价格:低。 天赋:胶水,我方有c程序员时,速度可达到c程序员的80%。 天赋:成熟&…

【PTVS+Theano+CPU/GPU】在windows下使用VS安装theano深度学习工具

唉。好不容易折腾完毕caffe,突然发现caffe比较适合搭建卷积神经网络,而对于DBN和LSTM的搭建好像比较麻烦,相关教程没有找到,手头上又有一个theano的代码想调试看看,所以入坑了。 准备工具: VS2013:链接&a…

人工神经网络——【BP】反向传播算法证明

第一步:前向传播 【注】此BP算法的证明仅限sigmoid激活函数情况。本博文讲道理是没错的,毕竟最后还利用代码还核对了一次理论证明结果。 关于更为严谨的BP证明,即严格通过上下标证明BP的博客请戳这里 简单的三层网络结构如下 参数定义&…

【caffe-Windows】微软官方caffe之 matlab接口配置

前言 按照微软的官方地址配置可能会出现一个问题caffe_.mexw64找不到引用模块问题,或者在matlab里面压根找不到caffe_这个函数,下面会提到这两个问题。还是按照步骤来吧 【PS1】有GPU同样按照下述步骤,进行即可 【PS2】文章在matlab2013a、…

【混淆矩阵】matlab画混淆矩阵

主要借鉴此博客代码:http://blog.csdn.net/sherry_gp/article/details/50560003 但是这个博主的代码达不到我想要的效果,所以修改了一下 我想要实现的效果是:给定一列的预测标签,以及这一列标签的哪一部分理应属于哪一部分标签。…

【caffe-Windows】mnist实例编译之model的生成

其实这个和cifar的实例基本相同,只不过数据转换的方法不一样 【说明,此博客按照我自己的路径设置的相关操作,读者如果自行选择其他路径,记得在bat和prototxt等文件修改路径】 第一步 下载数据集THE MNIST DATABASE of handwrit…

吉布斯采样——原理及matlab实现

原文来自:https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code/ 【注】评论区有同学指出译文理论编码有误,请参考更官方的文献,个人当时仅验证过红色字体部分理论与维基百科中二位随机变量吉…

【matlab知识补充】conv2、filter2、imfilter函数原理

原文地址:http://www.ilovematlab.cn/thread-293710-1-1.html -------------------------------------conv2函数---------------------------------------- 1、用法 Cconv2(A,B,shape); %卷积滤波 复制代码A:输入图像,B:卷积核假设输入图像A大…

显示mnist手写数字

前言 可视化什么的,总是好的 方法一 其实也就是用到了Ruslan Salakhutdinov and Geoff Hinton提供的工具包 % Version 1.000 % % Code provided by Ruslan Salakhutdinov and Geoff Hinton % % Permission is granted for anyone to copy, use, modify, or distr…

【caffe-Windows】mnist实例编译之model的使用-classification

仿照cifar10的模型使用,本文对mnist的训练方式做了部分修改 【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式) 第一步 按照前面的model生成方法的前两步骤制作数据集&#xff…

误差error,偏置bias,方差variance的见解

更新日志:2020-3-10 谢谢ProQianXiao的指正。偏差-方差的确是在测试集中进行的。 之前的误解是,偏差和方差的计算是同一个模型对不同样本的预测结果的偏差和方差;而实际上是不同模型对同一个样本的预测结果的偏差和方差。 这时候就要祭出网…

【caffe-Windows】以mnist为例lmdb格式数据

前言 前面介绍的案例都是leveldb的格式,但是比较流行和实用的格式是lmdb,原因从此网站摘取 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比level…