第11章 受限玻尔兹曼机

17 篇文章 0 订阅
13 篇文章 0 订阅

序言

1. 内容介绍

  本章介绍深度学习算法-受限玻尔兹曼机,主要介绍受限玻尔兹曼机的 原理常见架构 以及 吉布斯分布与对比散度算法

2. 理论目标

  • 受限玻尔兹曼机 原理
  • 受限玻尔兹曼机 表示形式
  • 吉布斯分布算法
  • 对比散度算法

3. 实践目标

  • 掌握 受限玻尔兹曼机 原理
  • 掌握 受限玻尔兹曼机 表示形式
  • 掌握 吉布斯分布
  • 掌握 对比散度

4. 内容目录

  • 1.受限玻尔兹曼机简介
  • 2.受限玻尔兹曼机网络模型
  • 3.Gibbs Sampling
  • 4.对比散度

第1节 受限玻尔兹曼机简介

  受限玻尔兹曼机(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 中的神经元都是二值化的,也就是说只有激活 (1) 和不激活 (0) 两种状态
  • 可见层和隐藏层之间的边的权重可以用 WW 来表示,为 |V|\times|H|∣V∣×∣H∣ 大小的实数矩阵, RBM 算法的核心即为对 WW 与偏差值 bias 求导,用于梯度下降的更新
  • VV 和 HH 都是二值化的,没有连续的可导函数去计算,传统采用的 Sampling,比如 Gibbs Sampling 方法
  • Hinton 提出了 对比散度 (Contrastive Divergence,CD) 方法,比 Gibbs 方法更快,并成为求解 RBM 的标准解法

第2节 受限玻尔兹曼机网络模型

2.1 RBM 模型结构

  因为 RBM 隐藏层和可见层是全连接的,为了描述清楚与容易理解,把每一层的神经元展平即可,如下所示

正在上传…重新上传取消

  • n_v,n_hnv​,nh​: 分别表示可见层与隐藏层中包含神经元的数目,下标 v,hv,h 代表 visible 与 hidden
  • v = (v_1,v_2,\dots,v_{n_v})^Tv=(v1​,v2​,…,vnv​​)T: 可见层的 状态向量,v_ivi​ 表示可见层中第 ii 个神经元的状态
  • h = (h_1,h_2,\dots,h_{n_h})^Th=(h1​,h2​,…,hnh​​)T: 隐藏层的 状态向量,h_jhj​ 表示隐藏层中第 jj 个神经元的状态
  • a = (a_1,a_2,\dots,a_{n_v})^T \in \Re^{n_v}a=(a1​,a2​,…,anv​​)T∈ℜnv​: 可见层的 偏置向量,a_iai​ 表示隐藏层中第 ii 个神经元的状态
  • b = (b_1,b_2,\dots,b_{n_h})^T \in \Re^{n_h}b=(b1​,b2​,…,bnh​​)T∈ℜnh​: 隐藏层的 偏置向量,b_jbj​ 表示隐藏层中第 jj 个神经元的状态
  • W = (W_{i,j}) \in \Re^{{n_h} \times {n_n}}W=(Wi,j​)∈ℜnh​×nn​: 隐藏层与可见层之间的 权值矩阵, w_{i,j}wi,j​ 表示隐藏层中第 ii 个神经元与可见层中第 jj 个神经元之间的连接权重

经典的 RBM 模型中的神经元都是 binary 的,也就是说上面图中的神经元取值都是 {0,1}

2.2 RBM 能量函数

  RBM 是一个 能量模型(Energy based model, EBM),是从物理学能量模型中演变而来。能量模型需要做的事情就是先定义一个合适的能量函数,然后基于这个能量函数得到变量的概率分布,最后基于概率分布去求解一个目标函数(如最大似然)

  RBM 过程如下

  • 现有 变量 为 (v,h),(v,h)(v,h),(v,h),包括隐藏层和可见层神经元,参数 包括 \theta = (W,a,b)θ=(W,a,b), 则能量函数定义


    \qquad\qquad E_{\theta}(v,h) = - \sum\limits^{n_v}_{i=1}a_iv_i - \sum\limits^{n_h}_{j=1}b_jh_j - \sum\limits^{n_v}_{i=1} \sum\limits^{n_h}_{j=1}h_jw_{j,i}v_iEθ​(v,h)=−i=1∑nv​​ai​vi​−j=1∑nh​​bj​hj​−i=1∑nv​​j=1∑nh​​hj​wj,i​vi​
     
  • 写成向量/矩阵的形式,则


    \qquad\qquad E_{\theta}(v,h) = -a^Tv-b^Th-h^TWvEθ​(v,h)=−aTv−bTh−hTWv
     
  • 变量 (v,h),(v,h)(v,h),(v,h) 的联合概率分布为


    \qquad\qquad P_{\theta}(v,h) = \dfrac{1}{Z_{\theta}} e^{-E_{\theta}\;(v,h)}Pθ​(v,h)=Zθ​1​e−Eθ​(v,h)

其中 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θ​1​h∑​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θ​1​v∑​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∑nv​​wkj​vj​)


  类似的也可以求 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∑nh​​wjk​hj​)
 

Sigmoid 是一种激励函数,因此才把 RBM 当做一种神经网络模型

2.3 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​,…,vnv​i​),且都是独立同分布的。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=1ns​​P(vi)=∑i=1ns​​lnP(vi)

第3节 Gibbs Sampling

3.1 二维马尔科夫链转移

  吉布斯采样 是 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 = \begin{cases}Q(A\to B) = p(y_B|x_1)&if\quad x_A = x_B = x_1\\Q(A\to C) = p(x_C|y_1)&if\quad y_A = y_C = y_1\\Q(A\to D) = 0&else\\\end{cases}Q=⎩⎪⎪⎨⎪⎪⎧​Q(A→B)=p(yB​∣x1​)Q(A→C)=p(xC​∣y1​)Q(A→D)=0​ifxA​=xB​=x1​ifyA​=yC​=y1​else​

  很容易验证对平面上任意两点 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)

3.2 多维马尔可夫链转移

  在 \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​) 可以如下定义转移矩阵

  • 如果当前状态为 (x_1,x_2,\dots,x_n)(x1​,x2​,…,xn​), 马尔科夫链转移的过程中,只能沿着坐标轴做转移,沿着 x_ixi​ 这根坐标系做转移的时候,转移概率由条件概率 p(x_i|x_1,\dots,x_{i-1},x_{i+1},\dots,x_n)p(xi​∣x1​,…,xi−1​,xi+1​,…,xn​) 定义
  • 无法沿着单根坐标轴进行的跳转,转移概率都设置为0

虽然 Gibbs 采样逻辑简单,但是问题是,每一次采样过程都需要反复迭代很多次以保证马尔科夫链收敛,而这只是一次梯度更新

第4节 对比散度

  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)

4.1 CDK 算法

  CD-k 算法在一次梯度更新中计算梯度近似值

  • 输入值: k, S, W, a, bk,S,W,a,b

  • 输出值: \Delta W, \Delta a, \Delta bΔW,Δa,Δb

  • 步骤:

    • 参数初始化 \Delta W = 0, \Delta a = 0, \Delta b = 0ΔW=0,Δa=0,Δb=0
    • 通过对 SS 中的样本循环,生成 \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,…,nv​DO

\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}

4.2 RBM 算法

  在 CD 算法的帮助下,就可以总结整个 RBM 算法

  • 初始化 (Initialization)

    • 给定训练样本集合 S(|S| = n_s)S(∣S∣=ns​)
    • 给定训练周期 JJ, 学习率 \etaη 以及 CD-k 算法参数 kk
    • 指定隐藏层的参数数目 n_hnh​ (可见层的单元数目 n_vnv​ 由样本特征维数确定)
    • 初始化偏置向量 a,ba,b 与权值矩阵 WW
  • 训练 (Training)

    • 调用 CD-k (k,S,W,a,b; \Delta W,\Delta a,\Delta bΔW,Δa,Δb), 生成 \Delta W, \Delta a, \Delta bΔW,Δa,Δb
    • 参数更新 kk 次
      • W = W + \eta(\frac{1}{n_s}\Delta W)W=W+η(ns​1​ΔW)
      • a = a + \eta(\frac{1}{n_s}\Delta a)a=a+η(ns​1​Δa)
      • b = b + \eta(\frac{1}{n_s}\Delta b)b=b+η(ns​1​Δb)

开始实验

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码的xiao摩羯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值