深度置信网络学习总结
目录
一、 蒙特卡洛方法和Gibbs 采样
深度置信网络,是由多层限制波尔兹曼机组成,在网络学习过程中用到了蒙特卡洛方法,所以在学习深度置信网络的过程中,首先需要了解蒙特卡洛方法的作用、原理、使用方法。
1.1 随机模拟(蒙特卡罗方法)的作用
随机模拟(或者统计模拟)方法的别名是蒙特卡罗方法(Monte CarloSimulation)。现代的统计模拟方法最早由数学家乌拉姆提出,被命名为蒙特卡罗方法,蒙特卡罗是著名的赌场,赌博总是和统计密切关联的,所以这个命名风趣而贴切,很快被大家广泛接受。
统计模拟中有一个重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本。可是,这些样本有什么用呢?举个例子,假设在一场射击比赛中,经过了多轮射击,最后要计算运动员的平均成绩。假如运动员射击了无数次,我们可以得到运动员射击点的分布函数 , 表示射击点与靶心的距离, 表示射击点在 处时的成绩,那么该运动员的平均成绩便可以通过下面的一个积分求得:
但显然,上述的 是很难求得的,因此在实际中,假设运动员射击了 次,我们可以将多次的成绩相加,然后平均来近似地表示成绩,即
要强调一点,利用蒙特卡洛思想的条件是,假设我们以及知道了概率 ,而且我们也已经得到了大量服从概率分布 的样本,再此基础上我们才能通过抽样来求解上面的积分。但这也造成了蒙特卡洛方法的一个缺陷,即有时候,我们虽然知道概率 ,但上述 太复杂,我们得不到,服从这一分布的样本我们也没有现成的,此时要使用蒙特卡洛方法,就要创造一批服从分布 随机样本,那应该怎么创造呢?
一般而言均匀分布Uniform(0,1)的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布Uniform(0,1)的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。
而我们常见的概率分布,无论是连续的还是离散的分布,都可以基于Uniform(0,1)的样本生成。例如正态分布可以通过著名的Box-Muller变换得到
如果随机变量 , 独立且 , 服从分布Uniform[0,1],
则 , 独立且服从标准正态分布。其它几个著名的连续分布,包括指数分布、Gamma分布、t分布、F分布、Beta分布、Dirichlet分布等等,也都可以通过类似的数学变换得到;离散的分布通过均匀分布更加容易生成。更多的统计分布如何通过均匀分布的变换生成出来,大家可以参考统计计算的书,其中SheldonM.Ross的《统计模拟》是写得非常通俗易懂的一本。
不过我们并不是总是这么幸运的,当p(x)的形式很复杂,或者p(x)是个高维的分布的时候,样本的生成就可能很困难了。譬如有如下的情况
§ ,而 我们是可以计算的,但是底下的积分式无法计算。
§ p(x,y)是一个二维的分布函数,这个函数本身计算很困难,但是条件分布p(x|y),p(y|x)的计算相对简单;如果p(x)是高维的,这种情形就更加明显。
此时就需要使用一些更加复杂的随机模拟的方法来生成样本。而本节中将要重点介绍的MCMC(Markov Chain MonteCarlo)和Gibbs Sampling算法就是最常用的一种,这两个方法在现代贝叶斯分析中被广泛使用。要了解这两个算法,我们首先要对马氏链的平稳分布的性质有基本的认识。
3.2蒙特卡洛的基础——马氏链及其平稳分布
马氏链的数学定义很简单:
也就是状态转移的概率只依赖于前一个状态。
我们先来看马氏链的一个具体的例子。社会学家经常把人按其经济状况分成3类:下层(lower-class)、中层 (middle-class)、上层 (upper-class),我们用1、2、3分别代表这三个阶层。社会学家们发现决定一个人的收入阶层的最重要的因素就是其父母的收入阶层。如果一个人的收入属于下层类别,那么他的孩子属于下层收入的概率是0.65,属于中层收入的概率是0.28,属于上层收入的概率是0.07。事实上,从父代到子代,收入阶层的变化的转移概率如下
使用矩阵的表示方式,转移概率矩阵记为
假设当前这一代人处在下层、中层、上层的人的比例是概率分布向量π0=[π0(1),π0(2),π0(3)],那么他们的子女的分布比例将是π1=π0P,他们的孙子代的分布比例将是π2=π1P=π0P2,……,第n代子孙的收入分布比例将是πn=πn−1P=π0Pn。
假设初始概率分布为π0=[0.21,0.68,0.11],则我们可以计算前n代人的分布状况如下