zoukankan      html  css  js  c++  java
  • 限制玻尔兹曼机

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

    要回答这个问题大概还要从神经网络说起。
    (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 = -frac12sum_{i,j}{w_{ij}{s_i}{s_j}}+sum_i{	heta_i s_i}
    可以看到,神经网络的变化过程,实质是一个能量不断减少的过程,最终达到能量的极小值点,也就是稳态。
     
    总结一下就是:递归神经网络由于其结构特性,神经元状态可随时间而变化,将此过程可以抽象成能量递减过程,变化最终会导致稳态,此稳态为能量极小值点。
     
     
    (未完待续)
     
     
    参考资料:
    http://en.wikipedia.org/wiki/Restricted_Boltzmann_machine
    http://wenku.baidu.com/view/735f472a647d27284b7351dd.html
    http://www.zhihu.com/question/22981388/answer/23259540
    http://blog.sina.com.cn/s/blog_631475300100oo93.html
     
    博客:http://blog.csdn.net/itplus/article/details/19168989,具体内容
  • 相关阅读:
    局域网内的邮件收发
    小菜鸟入门nginx
    记一次结巴分词.net core 2.0版 nuget发布过程
    记一次 .net core publish 之后找不到视图文件的问题
    eShopOnContainer 第一步
    Ocelot网关统一查看多个微服务asp.net core项目的swagger API接口
    在Azure中创建asp.net core 应用
    微服务监控zipkin、skywalking以及日志ELK监控系列
    微服务监控zipkin+asp.net core
    Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
  • 原文地址:https://www.cnblogs.com/sch-2015/p/4949110.html
Copyright © 2011-2022 走看看