Boltzmann Machine 入门(2)

发现RBM 中的能量函数概念需要从Hopfield网络的角度理解,于是找到

http://blog.csdn.net/roger__wong/article/details/43374343

和关于BM的最经典论文

http://www.cs.toronto.edu/~hinton/papers.html#1983-1976

一、限制玻尔兹曼机的感性认识

要回答这个问题大概还要从神经网络说起。
(1)人工神经网络(artificial neural network)

一言以蔽之,人工神经网络用于学习一个输入到输出的映射,通常由三层组成,输入层,隐层和输出层。
各层之间的每个连接都有一个权值,人工神经网络的训练过程就是学习这个权值。典型的,可以使用随机梯度下降法。
(2)递归人工神经网络(recurrent neural network

递归人工神经网络的关键在于“递归”二字,其表现为各节点可以形成一个有向环。
可以看到,递归神经网络和普通的人工神经网络最大不同为各隐层节点之间也可以相互联系了,并组成有向环 的形式。
递归神经网络的种类有很多,上图所示为"simple recurrent networks" (SRN)。
Hopfield网络也是一种递归神经网络。
(3)玻尔兹曼机
A graphical representation of an example Boltzmann machine.
如图所示为一个玻尔兹曼机,其蓝色节点为隐层,白色节点为输入层。
玻尔兹曼机和递归神经网络相比,区别体现在以下几点:
1、递归神经网络本质是学习一个函数,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。
(4)限制玻尔兹曼机

限制玻尔兹曼机和玻尔兹曼机相比,主要是加入了“限制”(这不是废话么)。
所谓的限制就是,将完全图变成了二分图。如图所示,限制玻尔兹曼机由三个显层节点和四个隐层节点组成。
限制玻尔兹曼机可以用于降维(隐层少一点),学习特征(隐层输出就是特征),深度信念网络(多个RBM堆叠而成)等。


二、Hopfield网络及能量函数

再谈RBM之前,必须说一下Hopfield网络。
Hopfield网络是一种循环型神经网络,如下图:

对于Hopfield神经网络来说,当信号输入后,各神经元的状态会不断变化,最后趋于稳定,或呈现周期性震荡。
假设神经元i连接其它神经元j的权重为w(i,j),则在Hopfield中,有W(i,i)=0,即神经元不与自己连接,W(i,j)=W(j,i),即权重矩阵对称。
以上图所示,假设输入的变量为(a1,a2,a3,a4),而在每一轮t神经元i的状态用y(i,t)来表示,再假设神经元激发函数为sigmod,其中激发界用t(i)表示,则容易得到以下递推式
y(i,0)=sigmod(ai-t(i))
Hopfield模型(公式1)
这个公式什么意思呢?简而言之就是这个神经元在下一轮是否激发,依赖原始的输入和其它神经元的反馈输入,这样整个神经元的状态就呈现一个随着时间进行变化的过程,而如果权值给定、输入给定,这个变化过程是确定的。
假设对于任意输入,对于任意节点i我们在有限的时刻内能得到y(i,t+1)=y(i,t),我们就说这个神经网络是稳定的,可以证明,当神经元激发函数是有界连续的,且神经网络各节点连接权重对阵,则Hopfield网络一定是稳定的。
对于一个稳定的神经网络。
我们定义“能量”的增量为以下式子:
Hopfield模型
则根据公式1可以推导出来,节点j的能量增量是小于0的。(如何证明?考虑y取值只能是0或1,再考虑sigmod函数特性很容易得到)
所以我们就能把能量的增量再时间域上进行积分,得到每个节点的能量,再把所有节点的能量加起来,看得到这个神经网络的能量。
推导出来的结果是这样子的:
E = -\frac12\sum_{i,j}{w_{ij}{s_i}{s_j}}+\sum_i{\theta_i\ s_i}
可以看到,神经网络的变化过程,实质是一个能量不断减少的过程,最终达到能量的极小值点,也就是稳态。

总结一下就是:递归神经网络由于其结构特性,神经元状态可随时间而变化,将此过程可以抽象成能量递减过程,变化最终会导致稳态,此稳态为能量极小值点

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

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

相关文章

针对深度学习的GPU芯片选择

转自:http://timdettmers.com/2014/08/14/which-gpu-for-deep-learning/ It is again and again amazing to see how much speedup you get when you use GPUs for deep learning: Compared to CPUs 10x speedups are typical, but on larger problems one can achi…

C# 8 - Range 和 Index(范围和索引)

C# 7 的 Span C# 7 里面出现了Span这个数据类型,它可以表示另一个数据结构里连续相邻的一串数据,并且它是内存安全的。 例子: 这个图的输出是3,4,5,6。 C# 8 的Range类型 而C# 8里面我们可以从一个序列里面…

DCT变换学习

http://blog.csdn.net/timebomb/article/details/5960624 timebomb的博客 DCT变换的基本思路是将图像分解为88的子块或1616的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码。随着子块尺寸的增加,算法的复杂度急剧上升…

敏捷回顾会议的套路与实践分享

01—关于敏捷回顾会议实践过敏捷的人都知道,在敏捷中会有很多的会议要开,比如计划会议(Planning)、站立会议(Daily Scrum)、评审会议(Review)以及回顾会议(Retrospective…

.Net Core AA.FrameWork应用框架介绍

开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我。AA.FrameWork 是基于.NET core流行的开源类库创建…

RBM/DBN训练中的explaining away概念

可以参照 Stanford大神DaphneKoller的概率图模型,里面贝叶斯网络一节讲到了explaining away。我看过之后试着谈谈自己的理解。 explainingaway指的是这样一种情况:对于一个多因一果的问题,假设各种“因”之间都是相互独立的,如果…

.NET Core使用gRPC打造服务间通信基础设施

一、什么是RPCrpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制。利用这种传输机制,不同进程(或服务)间像调用本地进程中…

DBN训练学习-A fast Learning algorithm for deep belief nets

转载自:http://blog.sciencenet.cn/blog-110554-889016.html DBN的学习一般都是从Hinton的论文A Fast Learning Algorithm for Deep Belief Nets开始。如果没有相关的背景知识,不知道问题的来由,这篇论文读起来是相当费劲的。 学习过程中主…

程序员家的大闸蟹:青壳、白底、肉多、爆黄,现在是吃大闸蟹的最佳时期

其实,我跟大家一样,也是dotNET跨平台和张队长的忠实粉丝,也是一名程序员。上上周,我在dotNET跨平台的优选商城买了队长推荐人生果,也是第一次吃这个人生果,味道鲜甜、汁水也特别多,但由于快递的…

环形链表II

1、题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则…

.NET Core Love gRPC

这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Core 3.0现已提供grpc的.NET 托管实现 grpc-dotnet, gRpc 取代WCF成为 .NET的一等公民。自2018年11月以来&#xf…

Magicodes.IE已支持通过模板导出票据

本次更新如下:【重构】重构HTML、PDF导出等逻辑,并修改IExporterByTemplate为:Task ExportListByTemplate(IList dataItems, string htmlTemplate null) where T : class;Task ExportByTemplate(T data, string htmlTemplate null) where T…

complementary prior

Complementary Prior 解决了多层网络中层间参数W无法计算的问题。 多层有向网络如下图,如果计算 W,我们需要知道第一个隐层的后验概率,那么会遇到几个问题:多层sigmoid网络1)后验概率几乎不可计算,因为所谓…

Memcached

本文来自 58沈剑:https://mp.weixin.qq.com/s/zh9fq_e2BgdIeR8RKtY6Sg memcache是互联网分层架构中,使用最多的的KV缓存。面试的过程中,memcache相关的问题几乎是必问的,关于memcache的面试提问,你能回答到哪一个层次…

使用FastReport报表工具生成报表PDF文档

在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感。本篇随笔介绍…

DXSDK_June10安装错误

今天安装DXSDK_Jun10时(下载地址:http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe),出现错误Error Code:s1023 错误原因: 计算机上有安装过更新版的Microsoft Vi…

相交链表

1、题目描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 输出:Refe…

Kullback-Leibler Divergence

本文转自:http://www.cnblogs.com/ywl925/p/3554502.html KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy)。它衡量的是相同事件空间里的两…

Shader 坐标转换

转自:http://www.ownself.org/blog/2010/kong-jian-zuo-biao-zhuan-huan.html 这个比较基础了,不过基础最重要,往往应该理解透彻,并且反复复习。 我们知道在3D画面渲染过程中对于模型的计算的一部分被称为Transforming and Ligh…

致所有.Net者和有梦想的朋友们 - 共勉

这篇文章很早就想写的了,主要是人到了一定的年纪,就想唠叨一些看法,认不认可不重要,重要的是生活给予你的酸甜苦辣,你都想一吐为快。 这里主要基于多年来自己的一个行业感受和以及生活感想,唠叨一下工作以及…