赞
踩
本章介绍深度学习算法-受限玻尔兹曼机,主要介绍受限玻尔兹曼机的 原理、常见架构 以及 吉布斯分布与对比散度算法
受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是深度学习的开山鼻祖 Geoffrey Hinton 提出,其在 2006 年的关于 深度信念网络 (Deep Belief Network, DBN) 以及逐层预训练的训练方法,开启了深度学习的序章。其中,DBN 中在层间的预训练就采用了 RBM 算法模型
RBM 是一种无向图模型,也是一种神经网络模型, 模型一般具有两层:可见层(V层),以及隐藏层(H层)
正在上传…重新上传取消
玻尔兹曼机 (Boltzman Machine, BM) 是允许 V 层或 H 层之间的神经元相连的,RBM 其实是一种简化了的 BM 模型。可以看到,两层神经元之间都是全连接的,但是每一层各自的神经元之间并没有连接,也就是说,RBM 图结构是一种 二分图 (Bipartite Graph), 正是这个特点,命名为受限玻尔兹曼机
因为 RBM 隐藏层和可见层是全连接的,为了描述清楚与容易理解,把每一层的神经元展平即可,如下所示
正在上传…重新上传取消
经典的 RBM 模型中的神经元都是 binary 的,也就是说上面图中的神经元取值都是 {0,1}
RBM 是一个 能量模型(Energy based model, EBM),是从物理学能量模型中演变而来。能量模型需要做的事情就是先定义一个合适的能量函数,然后基于这个能量函数得到变量的概率分布,最后基于概率分布去求解一个目标函数(如最大似然)
RBM 过程如下
其中 Z_\thetaZθ 称为归一化因子,作用是使得概率之和为1,形式为 Z_\theta = \sum\limits^{}_{v,h} = e^{-E_{\theta}\;(v,h)}Zθ=v,h∑=e−Eθ(v,h)
下标 \thetaθ 表示在参数 \theta =(W,a,b)θ=(W,a,b) 下的表达, 当得到联合概率分布后,如果想求(可见层)的概率分布 P(v)P(v),则求边缘分布
\qquad\qquad P_{\theta}(v) = \sum\limits^{}_{h} P_{\theta}(v,h) = \dfrac{1}{Z_{\theta}}\sum\limits^{}_{h}e^{-E_{\theta}\;(v,h)}Pθ(v)=h∑Pθ(v,h)=Zθ1h∑e−Eθ(v,h)
相对应的,如果想求隐层单元的概率分布 P(h)P(h),则求边缘分布
\qquad\qquad P_{\theta}(h) = \sum\limits^{}_{v} P_{\theta}(v,h) = \dfrac{1}{Z_{\theta}}\sum\limits^{}_{v}e^{-E_{\theta}\;(v,h)}Pθ(h)=v∑Pθ(v,h)=Zθ1v∑e−Eθ(v,h)
当然,直接计算 Z_\thetaZθ 是不可能的,因为 Z_\thetaZθ 的求和中存在指数项 2^{n_v+n_h}2nv+nh 种取值。接下来考虑条件概率,即可见层神经元状态给定时,任意隐藏层神经元状态为 11 的概率,即 P(h_k=1|v)P(hk=1∣v)
\qquad\qquad P(h_k=1|v) == sigmoid (b_k + \sum\limits^{n_v}_{j=1}w_{kj}v_j)P(hk=1∣v)==sigmoid(bk+j=1∑nvwkjvj)
类似的也可以求 P(v_k=1|h)P(vk=1∣h)
\qquad\qquad P(v_k=1|h) == sigmoid (a_k + \sum\limits^{n_h}_{j=1}w_{jk}h_j)P(vk=1∣h)==sigmoid(ak+j=1∑nhwjkhj)
Sigmoid 是一种激励函数,因此才把 RBM 当做一种神经网络模型
假设给定的训练集合是 \mathcal{S}={v^i}S=vi,总数是 n_sns,其中每个样本表示为 v^i=(v^i_1,v^i_2,\dots,v^i_{n_v})vi=(v1i,v2i,…,vnvi),且都是独立同分布的。RBM采用最大似然估计,即最大化
\qquad\qquad \color{red}{\ln L_s = \ln\prod^{n_s}_{i=1}P(v^i) = \sum^{n_s}_{i=1}\ln P(v^i)}lnLs=ln∏i=1nsP(vi)=∑i=1nslnP(vi)
吉布斯采样 是 MCMC (Markov Chain Monte Carlo) 方法的一种。Gibbs 采样可以从一个复杂概率分布 P(x)P(x) 下生成数据,只需要知道每一个分量的相对于其他分量的条件概率 P(X_k | X_{k-1})P(Xk∣Xk−1)
假设在二维空间里存在概率分布 p(x,y)p(x,y),考察 xx 坐标相同的两个点 A(x_1,y_1)A(x1,y1), B(x_1,y_2)B(x1,y2), 则有
\qquad\qquad p(x_1,y_1)p(y_2|x_1) = p(x_1)p(y_1|x_1)p(y_2|x_1)p(x1,y1)p(y2∣x1)=p(x1)p(y1∣x1)p(y2∣x1)
\qquad\qquad p(x_1,y_2)p(y_1|x_1) = p(x_1)p(y_2|x_1)p(y_1|x_1)p(x1,y2)p(y1∣x1)=p(x1)p(y2∣x1)p(y1∣x1)
\qquad\qquad\Rightarrow p(x_1,y_1)p(y_2|x_1) = p(x_1,y_2)p(y_1|x_1)⇒p(x1,y1)p(y2∣x1)=p(x1,y2)p(y1∣x1)
\qquad\qquad\Rightarrow p(A)p(y_2|x_1) = p(B)p(y_1|x_1)⇒p(A)p(y2∣x1)=p(B)p(y1∣x1)
基于以上等式,可以推断出在二维平面空间 \Re^2ℜ2 的 x = x_1x=x1 这条平行于 yy 轴的直线上,如果使用条件分布 p(y|x_1)p(y∣x1) 做为任意两个点之间的转换概率,那么任意两个点之间的转移满足细致平稳条件。同样的,如果在 y=y_1y=y1 这条直线上任意取两个点 A(x_1,y_1), C(x_2,y_1)A(x1,y1),C(x2,y1), 也有如下不等式
\qquad\qquad p(A)p(x_2|y_1) = p(C)p(x_1|y_1)p(A)p(x2∣y1)=p(C)p(x1∣y1)
因此,在此平面上任意两点的 转移概率矩阵
\qquad\qquad Q =
很容易验证对平面上任意两点 X,YX,Y 满足细致平稳条件 p(X)Q(X\to Y) = p(Y)Q(Y\to X)p(X)Q(X→Y)=p(Y)Q(Y→X), 于是这个二维空间上的马尔科夫链将收敛到平稳分布 p(x,y)p(x,y)
在 \Re^2ℜ2 平面里马尔科夫链的转移只是轮换着沿着坐标轴 xx 轴和 yy 轴做转移,得到样本 (x_0,y_0),(x_0,y_1),(x_1,y_1),(x_1,y_2),(x_2,y_2), \dots(x0,y0),(x0,y1),(x1,y1),(x1,y2),(x2,y2),… 当马尔科夫链收敛时,最终得到的样本就是 p(x,y)p(x,y) 的样本,而收敛之前的阶段称为 burn-in period
以上过程很容易推导到高维的情形,对于上述等式中,如果 x_1x1 变成多维空间中的向量 \mathbf x_1x1,可以看出推导过程不变,所以细致平稳条件同样是成立的
\qquad\qquad p(\mathbf{x_1},y_1)p(y_2|\mathbf{x_1}) = p(\mathbf{x_1},y_2)p(y_1|\mathbf{x_1})p(x1,y1)p(y2∣x1)=p(x1,y2)p(y1∣x1)
此时转移矩阵 QQ 由条件分布 p(y|\mathbf x_1)p(y∣x1) 定义,$\Re^n $ 维空间中对于概率分布 p(x_1,x_2,\dots,x_n)p(x1,x2,…,xn) 可以如下定义转移矩阵
虽然 Gibbs 采样逻辑简单,但是问题是,每一次采样过程都需要反复迭代很多次以保证马尔科夫链收敛,而这只是一次梯度更新
Gibbs Sampling 方法来训练 RBM 会非常慢, Geoffery Hinton 提出了 对比散度 (Contrasive Divergence, CD) 算法。Gibbs 采样算法希望得到 P(v)P(v) 分布下的样本,而训练样本本质上是依照 P(v)P(v) 分布的,因此可以通过直接从训练样本开始 Gibbs 采集,而不是从随机的状态开始
CD 算法的大致思路依照上述想法,从样本集任意一个样本 v^0v0 开始, 经过 kk 次 Gibbs 采样,则有
\qquad\qquad h^{t-1} \sim P(h|v^{t-1})ht−1∼P(h∣vt−1)
\qquad\qquad v^{t} \sim (v|h^{t-1})vt∼(v∣ht−1)
得到样本 v^kvk, 然后用 v^kvk 去近似对应于三个单样本的梯度
\qquad\qquad \frac {\partial \ln {P(v)}}{\partial w_{ij}} \approx P(h_i = 1 |v^0)v^0_j - P(h_i = 1 | v^k)v^k_j∂wij∂lnP(v)≈P(hi=1∣v0)vj0−P(hi=1∣vk)vjk
\qquad\qquad \frac {\partial \ln {P(v)}}{\partial a_i} \approx= v^0_i - v^k_i∂ai∂lnP(v)≈=vi0−vik
\qquad\qquad \frac {\partial \ln {P(v)}}{\partial b_i} \approx P(h_i = 1 |v^0) - P(h_i = 1 | v^k)∂bi∂lnP(v)≈P(hi=1∣v0)−P(hi=1∣vk)
CD-k 算法在一次梯度更新中计算梯度近似值
输入值: k, S, W, a, bk,S,W,a,b
输出值: \Delta W, \Delta a, \Delta bΔW,Δa,Δb
步骤:
伪代码:
\quad \mathcal FORALL\;FORALL the v \in S \;\; \mathcal DOv∈SDO
\quad{
\qquad v^{(0)} := vv(0):=v
\qquad \mathcal FOR \;\; t = 0,1,\dots,k-1 \;\; DOFORt=0,1,…,k−1DO
\qquad{
\qquad\quad \bullet\; h^{(t)} =∙h(t)= sample.h_given_v (v^{(t)},W,a,bv(t),W,a,b)
\qquad\quad \bullet\; v^{(t+1)} =∙v(t+1)= sample.v_given_h (h^{(t)},W,a,bh(t),W,a,b)
\qquad}
\qquad \mathcal FOR \;\; i = 1,2,\dots,n_h;j = 1,2,\dots,n_v \;\; DOFORi=1,2,…,nh;j=1,2,…,nvDO
\qquad{
\qquad\quad \bullet\; \Delta w_{i,j} = \Delta w_{i,j} + [P(h_i = 1 |v^{(0)})v^{(0)}_j - P(h_i=1|v^{(k)})v^{(k)}_j]∙Δwi,j=Δwi,j+[P(hi=1∣v(0))vj(0)−P(hi=1∣v(k))vj(k)]
\qquad\quad \bullet\; \Delta a_j = \Delta a_j + [v^{(0)}_j - v^{(k)}_j]∙Δaj=Δaj+[vj(0)−vj(k)]
\qquad\quad \bullet\; \Delta b_i = \Delta b_i + [P(h_i = 1|v^{(0)}) - P(h_i=1 | v^{(k)})]∙Δbi=Δbi+[P(hi=1∣v(0))−P(hi=1∣v(k))]
\qquad}
\quad}
在 CD 算法的帮助下,就可以总结整个 RBM 算法
初始化 (Initialization)
训练 (Training)
开始实验
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。