花书+吴恩达深度学习(二七)深度生成模型之玻尔兹曼机及其变体(RBM, DBN, DBM)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/86668593

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

花书+吴恩达深度学习(二七)深度生成模型之玻尔兹曼机及其变体(RBM, DBN, DBM)
花书+吴恩达深度学习(二八)深度生成模型之有向生成网络(VAE, GAN, 自回归网络)
花书+吴恩达深度学习(二九)生成随机网络 GSN

0. 前言

玻尔兹曼机(Boltzmann machine)最初用来学习二值向量上的任意概率分布。

玻尔兹曼机的变体早已超过了原始玻尔兹曼机的流行程度。

1. 玻尔兹曼机

d d 维二值随机向量 x { 0 , 1 } d x\in \{0,1\}^d 上定义玻尔兹曼机,玻尔兹曼机是一种基于能量的模型:
P ( x ) = exp ( E ( x ) ) Z E ( x ) = x T U x b T x P(x)=\frac{\exp(-E(x))}{Z}\\ E(x)=-x^TUx-b^Tx
这意味着一个单元的概率由其他单元值得线性模型给出

正式的,将单元 x x 分解成:可见单元 v v 和隐藏单元 h h ,能量函数表示为:
E ( v , h ) = v T R v v T W h h T S h b T v c T h E(v,h)=-v^TRv-v^TWh-h^TSh-b^Tv-c^Th

当基于最大似然的学习规则训练时,连接两个单元的特定权重的更新仅取决于这两个单元在不同分布下收集的统计信息 P m o d e l ( v ) P_{model}(v) P ^ d a t a ( v ) P m o d e l ( h v ) \hat{P}_{data}(v)P_{model}(h\mid v) ,这意味着学习规则是“局部的”

2. 受限玻尔兹曼机 RBM

受限玻尔兹曼机(restricted Boltzmann machine)是包含一层可观察变量和单层潜变量的无向概率图模型

如下图所示(图源:深度学习):

RBM也是基于能量的模型:
P ( v , h ) = exp ( E ( v , h ) ) Z E ( v , h ) = v T W h b T v c T h Z = v h exp ( E ( v , h ) ) P(v,h)=\frac{\exp(-E(v,h))}{Z}\\ E(v,h)=-v^TWh-b^Tv-c^Th\\ Z=\sum_v\sum_h\exp(-E(v,h))

难解的配分函数 Z Z 意味着归一化联合概率分布 P ( v ) P(v) 也难以估计,但RBM的二分图结构具有非常特殊的性质,其条件分布 P ( h v ) P(h\mid v) P ( v h ) P(v\mid h) 是因子的,并且计算和采样时相对简单的:
P ( h v ) = j = 1 n h σ ( ( 2 h 1 ) ( c + W T v ) ) j P ( v h ) = i = 1 n v σ ( ( 2 v 1 ) ( b + W h ) ) i P(h\mid v)=\prod_{j=1}^{n_h}\sigma((2h-1)\odot(c+W^Tv))_j\\ P(v\mid h)=\prod_{i=1}^{n_v}\sigma((2v-1)\odot(b+Wh))_i

3. 深度信念网络 DBN

深度信念网络(deep belief network)是具有若干潜变量层的生成模型,潜变量通常是二值的,而可见单元可是二值或实数。

顶部两层之间的连接是无向的,而所有其他层之间的连接是有向的,箭头指向最接近数据的层。

只有一个隐藏层的DBN只是一个RBM。

如下图所示(图源:深度学习):

具有 l l 个隐藏层的DBN包含 l l 个权重矩阵, l + 1 l+1 个偏置,其中 b ( 0 ) b^{(0)} 是可见层的偏置:
P ( h ( l ) , h ( l 1 ) ) exp ( b ( l ) T h ( l ) + b ( l 1 ) T h ( l 1 ) + h ( l 1 ) T W ( l ) h ( l ) ) P ( h i ( k ) = 1 h ( k + 1 ) ) = σ ( b i ( k ) + W : , i ( k + 1 ) T h ( k + 1 ) )   i , k 1 , . . . , l 2 P ( v i = 1 h ( 1 ) ) = σ ( b i ( 0 ) + W : , i ( 1 ) T h ( 1 ) )   i P(h^{(l)},h^{(l-1)})\propto \exp({b^{(l)}}^Th^{(l)}+{b^{(l-1)}}^Th^{(l-1)}+{h^{(l-1)}}^TW^{(l)}h^{(l)})\\ P(h_i^{(k)}=1\mid h^{(k+1)})=\sigma(b_i^{(k)}+{W_{:,i}^{(k+1)}}^Th^{(k+1)})\ \forall i,\forall k\in 1,...,l-2\\ P(v_i=1\mid h^{(1)})=\sigma(b_i^{(0)}+{W_{:,i}^{(1)}}^Th^{(1)})\ \forall i

从DBN中生成样本的方法:先在顶部两个隐藏层运行几个Gibbs采样步骤,主要采一个样本,然后我们对模型其余部分使用单词原始采样。

训练DBN的方法

先使用对比散度或随机最大似然训练RBM以最大化:
E v p d a t a log p ( v ) \mathbb{E}_{v\sim p_{data}}\log p(v)
RBM的参数定义了DBN第一层的参数,然后第二个RBM训练以近似最大化:
E v p d a t a E h ( 1 ) p ( 1 ) ( h ( 1 ) v ) log p ( 2 ) ( h ( 1 ) ) \mathbb{E}_{v\sim p_{data}}\mathbb{E}_{h^{(1)}\sim p^{(1)}(h^{(1)}\mid v)}\log p^{(2)}(h^{(1)})
其中, p ( 1 ) p^{(1)} 是第一个RBM表示的概率分布, p ( 2 ) p^{(2)} 是第二个RBM表示的概率分布。

第二个RBM被训练为模拟由第一个RBM的隐藏单元采样定义的分布,而第一个RBM由数据驱动。这个过程无限重复,从而向DBN添加任意多层,其中每个新的RBM对前一个RBM的样本建模,每个RBM定义DBN的另一层。

4. 深度玻尔兹曼机 DBM

深度玻尔兹曼机(Deep Boltzmann Machine)与DBN不同,它是一个完全无向的模型,与RBM不同,它有几层潜变量

如下图所示(图源:深度学习):

在包含一个可见层 v v ,3个隐藏层 h ( 1 ) , h ( 2 ) , h ( 3 ) h^{(1)},h^{(2)},h^{(3)} 的情况下,联合概率表示为:
P ( v , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = exp ( E ( v , h ( 1 ) , h ( 2 ) , h ( 3 ) ; θ ) ) Z ( θ ) E ( v , h ( 1 ) , h ( 2 ) , h ( 3 ) ; θ ) = v T W ( 1 ) h ( 1 ) h ( 1 ) T W ( 2 ) h ( 2 ) h ( 2 ) T W ( 3 ) h ( 3 ) P(v,h^{(1)},h^{(2)},h^{(3)})=\frac{\exp(-E(v,h^{(1)},h^{(2)},h^{(3)};\theta))}{Z(\theta)}\\ E(v,h^{(1)},h^{(2)},h^{(3)};\theta)=-v^TW^{(1)}h^{(1)}-{h^{(1)}}^TW^{(2)}h^{(2)}-{h^{(2)}}^TW^{(3)}h^{(3)}

在具有两个隐藏层的示例中,激活概率由下式子给出:
P ( v i = 1 h ( 1 ) ) = σ ( W i , : ( 1 ) h ( 1 ) ) P ( h i ( i ) = 1 v , h ( 2 ) ) = σ ( v T W : , i ( 1 ) + W i , : ( 2 ) h ( 2 ) ) P ( h k ( 2 ) = 1 h ( 1 ) ) = σ ( h ( 1 ) T W : , k ( 2 ) ) P(v_i=1\mid h^{(1)})=\sigma(W_{i,:}^{(1)}h^{(1)})\\ P(h_i^{(i)}=1\mid v,h^{(2)})=\sigma(v^TW_{:,i}^{(1)}+W_{i,:}^{(2)}h^{(2)})\\ P(h_k^{(2)}=1\mid h^{(1)})=\sigma({h^{(1)}}^TW_{:,k}^{(2)})

DBM一个不理想的特性是从中采样时相对困难的。DBN只需要在顶部中使用MCMC采样,其它层仅在采样过程末尾涉及,并且只需要一个高效的原始采样过程。而DBM必须在所有层中使用MCMC,并且模型的每一层都参与每个马尔可夫链转移。

5. 实值数据上的玻尔兹曼机

5.1 高斯 RBM

能量函数定义为:
E ( v , h ) = 1 2 v T ( β v ) ( v β ) T W h b T h E(v,h)=\frac{1}{2}v^T(\beta\odot v)-(v\odot \beta)^TWh-b^Th

5.2 均值和协方差 RBM

mcRBM使用隐藏单元独立编码所有可见单元的条件均值和协方差。

h ( m ) h^{(m)} 是二值均值单元, h ( c ) h^{(c)} 是二值协方差单元,能量函数定义为:
E m c ( x , h ( m ) , h ( c ) ) = E m ( x , h ( m ) ) + E c ( x , h ( c ) ) E m ( x , h ( m ) ) = 1 2 x T x j x T W : , j h j ( m ) j b j ( m ) h j ( m ) E c ( x , h ( c ) ) = 1 2 j h j ( c ) ( x T r ( j ) ) 2 j b j ( c ) h j ( c ) E_{mc}(x,h^{(m)},h^{(c)})=E_m(x,h^{(m)})+E_c(x,h^{(c)})\\ E_m(x,h^{(m)})=\frac{1}{2}x^Tx-\sum_jx^TW_{:,j}h_j^{(m)}-\sum_jb_j^{(m)}h_j^{(m)}\\ E_c(x,h^{(c)})=\frac{1}{2}\sum_jh_j^{(c)}(x^Tr^{(j)})^2-\sum_jb_j^{(c)}h_j^{(c)}

5.3 学生t分布均值乘积

mPot模型能量函数定义为:
E m P o T ( x , h ( m ) , h ( c ) ) = 1 2 x T x j x T W : , j h j ( m ) j b j ( m ) h j ( m ) + j ( h j ( c ) ( 1 + 1 2 ( r ( j ) T x ) 2 ) + ( 1 γ j ) log h j ( c ) ) \begin{aligned}E_{mPoT}(x,h^{(m)},h^{(c)})&=\frac{1}{2}x^Tx-\sum_jx^TW_{:,j}h_j^{(m)}-\sum_jb_j^{(m)}h_j^{(m)}\\ &+\sum_{j}(h_j^{(c)}(1+\frac{1}{2}(r^{(j)T}x)^2)+(1-\gamma_j)\log h_j^{(c)}) \end{aligned}

5.4 尖峰和平板 RBM

ssRBM的二值隐藏单元通过使用辅助实值变量来编码跨像素的条件协方差。

h h 是二值尖峰单元, s s 是二值平板单元,能量函数定义为:
E s s ( x , s , h ) = i x T W : , i s i h i + 1 2 x T ( Λ + i Φ i h i ) x + 1 2 i α i s i 2 i α i μ i s i h i i b i h i + i α i μ i 2 h i \begin{aligned} E_{ss}(x,s,h)&=-\sum_ix^TW_{:,i}s_ih_i+\frac{1}{2}x^T(\Lambda+\sum_i\Phi_ih_i)x\\ &+\frac{1}{2}\sum_i\alpha_is_i^2-\sum_i\alpha_i\mu_is_ih_i-\sum_ib_ih_i+\sum_i\alpha_i\mu_i^2h_i \end{aligned}


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/86668593
DBN
今日推荐