#DeepLearningBook#算法概览之十:Deep Generative Models

一、Boltzmann Machines

Energy-based model(EBM)具有以下形式:
这里写图片描述
同时,这个形式的分布又是Boltzmann distribution;许多的energy-based models又称为Boltzmann machines。
对Boltzmann machines,它们的联合分布都是结合了一个能量方程的:
这里写图片描述
E(x)是能量方程,Z是配分方程(partition function)。Z负责保证P(x)的求和为1。Boltzmann machine的能量方程表达如下:
这里写图片描述
U指的是状态间的连接强度;x是状态,只能是0和1。BM也是多层网络,包括:input、hide、output。因此状态x可以分成两类,visible units v和latent(hidden) units h。
这里写图片描述

二、 Restricted Boltzmann Machines(RBM)

RBM的用途主要是两种,一是对数据进行编码,然后交给监督学习方法去进行分类或回归,二是得到了权重矩阵和偏移量,供BP神经网络初始化训练。
第一种可以说是把它当做一个降维的方法来使用。
第二种是因为如果直接用BP神经网络,初始值选得不好的话,往往会陷入局部极小值。根据实际应用结果表明,直接把RBM训练得到的权重矩阵和偏移量作为BP神经网络初始值,得到的结果会非常地好。

能量模型的具体含义:
【能量模型大部分转自博客】
能量模型是个什么样的东西呢?直观上的理解就是,把一个表面粗糙又不太圆的小球,放到一个表面也比较粗糙的碗里,就随便往里面一扔,看看小球停在碗的哪个地方。一般来说停在碗底的可能性比较大,停在靠近碗底的其他地方也可能,甚至运气好还会停在碗口附近(这个碗是比较浅的一个碗);能量模型把小球停在哪个地方定义为一种状态,每种状态都对应着一个能量,这个能量由能量函数来定义,小球处在某种状态的概率(如停在碗底的概率跟停在碗口的概率当然不一样)可以通过这种状态下小球具有的能量来定义(换个说法,如小球停在了碗口附近,这是一种状态,这个状态对应着一个能量E,而发生“小球停在碗口附近”这种状态的概率p,可以用E来表示,表示成p=f(E),其中f是能量函数),这就是我认为的能量模型。
波尔兹曼网络是一种随机网络。描述一个随机网络,总结起来主要有两点。
第一,概率分布函数。由于网络节点的取值状态是随机的,从贝叶斯网的观点来看,要描述整个网络,需要用三种概率分布来描述系统。即联合概率分布,边缘概率分布和条件概率分布。要搞清楚这三种不同的概率分布,是理解随机网络的关键,这里向大家推荐的书籍是张连文所著的《贝叶斯网引论》。很多文献上说受限波尔兹曼是一个无向图,从贝叶斯网的观点看,受限波尔兹曼网络也可以看作一个双向的有向图,即从输入层节点可以计算隐层节点取某一种状态值的概率,反之亦然。
第二,能量函数。随机神经网络是根植于统计力学的。受统计力学中能量泛函的启发,引入了能量函数。能量函数是描述整个系统状态的一种测度。系统越有序或者概率分布越集中,系统的能量越小。反之,系统越无序或者概率分布越趋于均匀分布,则系统的能量越大。能量函数的最小值,对应于系统的最稳定状态。

为什么要弄这个能量模型呢?原因有几个。
第一、RBM网络是一种无监督学习的方法,无监督学习的目的是最大可能的拟合输入数据,所以学习RBM网络的目的是让RBM网络最大可能地拟合输入数据。
第二、对于一组输入数据来说,现在还不知道它符合那个分布,那是非常难学的。例如,知道它符合高斯分布,那就可以写出似然函数,然后求解,就能求出这个是一个什么样个高斯分布;但是要是不知道它符合一个什么分布,那可是连似然函数都没法写的,问题都没有,根本就无从下手。
好在天无绝人之路——统计力学的结论表明,任何概率分布都可以转变成基于能量的模型,而且很多的分布都可以利用能量模型的特有的性质和学习过程,有些甚至从能量模型中找到了通用的学习方法。有这样一个好东西,当然要用了。
第三、在马尔科夫随机场(MRF)中能量模型主要扮演着两个作用:一、全局解的度量(目标函数);二、能量最小时的解(各种变量对应的配置)为目标解。也就是能量模型能为无监督学习方法提供两个东西:a)目标函数;b)目标解。

因此从以上角度出发,最扼要地描述RBM如下:
RBM也相当于一个编解码器
编码:
0)输入编码前的样本x;
1)根据x的值计算概率p(h=1|v),其中v的取值就是x的值;
2)按照均匀分布产生一个0到1之间的随机数,如果它小于p(h=1|v),y的取值就是1,否则就是0;
3)得到编码后的样本y。
解码:
0)输入解码前的样本y;
1)根据y的值计算概率p(v=1|h),其中h的取值就是y的值;
2)按照均匀分布产生一个0到1之间的随机浮点数,如果它小于p(v=1|h),v的取值就是1,否则就是0;
3)得到解码后的样本x。
具体RBM请参照http://blog.csdn.net/mytestmy/article/details/9150213/。

三、Deep Belief Networks

当Restricted Boltzmann machines被叠栈叠起来,它就可以通过Greedy layer-wise的方式进行训练,也就成为了deep belief networks。
#DeepLearningBook#算法概览之十:Deep Generative Models_第1张图片
从DBN里面训练出来的权值可以用来定义一个MLP,进而对前面的Greedy layer-wise进行fine tuning。

四、 Deep Boltzmann Machines

Deep Boltzmann machines也是由单个RBM堆叠而成,但是与DBN不同的是,DBM所有的层都是undirected model(Markov Random Field)。
DBM由于它undirected的特性,可以重构成bipartite graph的形式,即将奇数层放在一边,偶数层放在另外一边。这样的话,我们描述这个模型需要用到的方程数量和RBM是一样的。处理的时候只需要用到Gibb sampling。
#DeepLearningBook#算法概览之十:Deep Generative Models_第2张图片
DBM较之于DBN的后验分布比较复杂,因此比较适合于用variational approximation来逼近,尤其适宜使用a mean field approximation。
#DeepLearningBook#算法概览之十:Deep Generative Models_第3张图片

#DeepLearningBook#算法概览之十:Deep Generative Models_第4张图片
写在最后:
到这里已经越来越觉得自己在偷工减料了。╮(╯_╰)╭没办法,毕竟自学能力有限。不懂的东西也就和滚雪球一样越滚越大。到最后一章Boltzmann machines的时候,世界已经不是我所熟知的那个世界了。毕竟前面graphic model, Monte Carlo, Markov, approximation inference这些都是对于这一块理解很重要的。
最后的最后,这些锅我会慢慢背起来的。

参考文献:
[1] http://blog.csdn.net/mytestmy/article/details/9150213/

你可能感兴趣的:(AI读书笔记)