深度学习读书笔记(Learning Deep Architectures for AI杂记)

深度学习需要EBM的基础(EBM读书笔记),了解EBM后,需要学习大牛Yoshua Bengio的文章“Learning Deep Architectures for AI”,本文翻译部分内容,并加入自己理解。可能有错误,希望批判的参考。

1.引言


人的神经实际上就是一层层传递的过程。一个典型的图像如下图所示:

4.深层架构的神经网络


图:sigmoid信念网络

规定(x=h^0),则上图中层之间的一个典型的传递公式是:

(h^k=tanh(b^k+W^kh^k-1))

其中,(b)是偏置,而(W)是权重,(tanh)是一个应用元素智能,能被替代为(sigm(u)=1/(1+e^{-u}=frac{1}{2}(tanh(u)+1)).顶层(h^l)被用来做预测和被监督的目标y联合在一起用在损失函数:(L(h^l,y)),典型的如(b^l+W^lh^{l-1}),输出层有可能是非线性的:

(h_i^l=frac{e^{b_i^l+W_i^lh^{l-1}}}{sum_je^{b_j^l+W_j^lh^{l-1}}})

其中,(W_i^l)是(W^l)的第(i)行,(h_i^l)是一个正数,并且(sum_ih_i^l=1).softmax函数的输出(h_i^l)可以用作估计概率(P(Y=i|X)),在这种情况下热门经常用负条件对数似然(L(h^l,y)=-logP(Y=y|x)=-logh_y^l)作为损失,最小化就可以得到期望值。

4.4深层繁殖架构

在一个sigmoid信念网络中,当给定上一层的单元值时,本层的单元之间是相互独立的,典型的分布类似于下面的神经激活等式:

(P(h_i^k=1|h^{k+1}=sigm(b_i^k+sum_jW_{i,j}^{k+1}h_j^{k+1})).

其中,规定(x=h^0)。

如果考虑多层的话,模型可以用下式表示:

(P(x,h^1,cdots,h^l)=P(h^l)(coprod_{k=1}^{l-1}P(h^k|h^{k+1})P(x|h^1))

然后边缘化(P(x))即可。这个操作只有在小模型里才具有可行性。在sigmod信念网络中,非常简单:(P(h^l)=coprod_iP(h_i^l))。

 深度信念网络和sigmoid信念网络非常相似,只是最上面两层有一个轻微不同的参数化:

(P(x,h^1,cdots,h^l)=P(h^{l-1}h^l)(coprod_{k=1}^{l-1}P(h^k|h^{k+1})P(x|h^1))

图:多层神经网络。

最上面的联合概率分布是受限玻尔兹曼机(RBM),由于它是无向图,因此画了双箭头。

(P(h^{l-1},h^l) propto e^{b'h^{l-1}+c'h^l+h^l'Wh^{l-1}})

4.5卷积神经网络

如果不使用无监督的预训练,训练深层的受监督神经网络非常困难。但也有一个例外:卷积神经网络。

4.6自动编码机

5基于能量的模型和玻尔兹曼机

5.1基于能量

5.1.1引入隐藏变量

有时我们需要引入隐藏变量来增加系统表达能力:

(P(x,h)=frac{e^{-Energy(x,h)}}{Z})由于只有x是可见,我们只关心边缘概率:

(P(x)=sum_hfrac{e^{-Energy(x,h)}}{Z})

为了和一般能量模型形式对应,我们引入自由能量:

(P(x)=frac{e^{-FreeEnergy(x)}}{Z})

其中,(Z=sum_xe^{-FreeEnergy(x)})  并且 (FreeEnergy(x)=-logsum_he^{-Energy(x,h)})

引入( heta)表示参数模型:

(logP(x)=-FreeEnergy(x)-log(Z))

(  egin{matrix}egin{aligned}   frac{partial logP(x)}{partial heta}&=-frac{partial FreeEnergy(x)}{partial heta}+frac{1}{Z}sum_{ ilde{x}}e^{-FreeEnergy( ilde{x})}frac{partial FreeEnergy( ilde{x})}{partial heta}\&=-frac{partial FreeEnergy(x)}{partial heta}+sum_{ ilde{x}}P( ilde{x})frac{partial FreeEnergy( ilde{x})}{partial heta}   end{aligned}end{matrix}  .)

因此,平均对数似然梯度为:

(E_{hat{P}}[frac{partial logP(x)}{partial heta}]=-E_{hat{P}}[frac{partial FreeEnergy(x)}{partial heta}]+E_P[frac{partial FreeEnergy(x)}{partial heta}])

其中,(hat{P})是训练集的经验分布,(E_P)是模型的分布P下的期望。

因此,如果我们能够从P中采样,并且顺利的计算自由能量的话,我们可以利用Monte-Carlo方法去获得一个对数似然梯度的随机估计量。

如果能量能被写成隐藏变量项的和的形式:

(Energy(x,h)=-eta(x)+sum_i gamma_i (x,h_i),)

这种形式是满足RBM的,自由能量和似然就能被顺利的求出来(即使里面有指数和的形式):

(  egin{matrix}egin{aligned} P(x)&=frac{1}{Z}e^{-FreeEnergy(x,h)}=frac{1}{Z}sum_he^{-Energy(x,h)}\&=frac{1}{Z}sum_{h_1}sum_{h_2}cdotssum_{h_k}e^{eta(x)-sum_i gamma_i (x,h_i)}   \& =frac{1}{Z}sum_{h_1}sum_{h_2}cdotssum_{h_k}e^{eta(x)}prod_i e^{-gamma_i(x,h_i)}\&=frac{e^{eta(x)}}{Z}sum_{h_1}e^{-gamma_1(x,h_1)} sum_{h_2}e^{-gamma_2(x,h_2)} cdotssum_{h_k}e^{-gamma_k(x,h_k)} \&=frac{e^{eta(x)}}{Z}prod_i sum_{h_i}e^{-gamma_k(x,h_i)}end{aligned}end{matrix})

其中,(sum_h_i)是对(h_i)所有可能的取值进行求和。比起对h的所有可能求和的(sum_h),这个求和要容易很多。如果h是连续的话,那所有的求和都可以用积分来替代。在很多情况下,求和或者积分(对一个隐藏单元的取值来说)是容易计算的。

5.1.2条件EBM

5.2玻尔兹曼机

玻尔兹曼机(BM)是一个带隐藏变量的特殊EBM,而受限玻尔兹曼机(RBM)则是一个(P(h|x))和(P(x|h))都可求的玻尔兹曼机。在一个BM中,能量函数是一个二阶多项式:

(Energy(x,h)=-b'x-c'h-h'Wx-x'Ux-h'Vh)

由于包含h的二次项,因此上面的计算自由能量的方法在这里是不可行的。然而,为了获得梯度的随机估计量,可以用MCMC(Monte Carlo Markov Chain)取样的方法。对数似然的梯度可以写成下面的形式。

(egin{matrix}egin{aligned}frac{partial logP(x)}{partial heta}&=frac{partial logsum_he^{-Energy(x,h)}}{partial heta}-frac{partial log sum_{ ilde{x},h} e^{-Energy( ilde{x},h)}}  {partial heta}\&=-frac{1}{sum_he^{-Energy(x,h)}}sum_he^{-Energy(x,h)}frac{partial Energy(x,h)}{partial heta}\& +frac{1}{sum_(tilde{x},h)e^{-Energy( ilde{x},h)}}sum_{ ilde{x},h}e^{-Energy( ilde{x},h)}frac{partial Energy( ilde{x},h)}{partial heta}  \&=-sum_hP(h|x)frac{partial Energy(x,h)}{partial heta} + sum_{ ilde{x},h}P( ilde{x},h)frac{partial Energy( ilde{x},h)}{partial heta}end{aligned}end{matrix})

 MCMC采样是基于Gibbs采样的。而N个随机变量(S=S_1,cdots,S_N))的Gibbs采样通过N个子步骤完成的:

(S_isim P(S_i|S_{-i}=s_{-i}))

其中(S_{-i})表示除了(S_i)之外的所有变量集合。在N个样品全部采集完之后,我们也就完成了链条的一步。在某些条件下,随着步骤的进行,S的分布趋近于P(S)。收敛的一个充分条件是非周期和非回归的。

那么如何在BM上实施Gibbs采样呢,让我们用(s={x,h})来表示所有的BM单元,那么通过把所有的参数放进一个向量d和一个对阵矩阵A中,BM能量函数可以写成下面的形式:

(Energy(s)=-d's-s'As.)

让(d_{-i})表示去除元素(d_i)的向量d,(A_{-i})表示去除第i行和第i列的矩阵A.(a_{-i})表示去除第i个元素的A的第i行(或者说列)那么我们可以从BM里容易的得到(P(s_i|s_{-i})).例如,如果(s_i in {0,1})并且A的对角线为空:

(Energy(s)=-d_is_i-d_{-i}'s_{-i}'-(s_{-i}A_{-i}+s_ia_i)s_{-i}    \=-d_is_i-d_{-i}'s_{-i}'-(s_{-i}'A_{-irow}+s_iA_{irow})s    \=-d_is_i-d_{-i}'s_{-i}'-s_{-i}'A_{-i}s_{-i}-s_{-i}'a_{-i}s_i-s_ia_{-i}s_{-i}-s_ia_is_i\=-d_is_i-d_{-i}'s_{-i}'-s_{-i}'A_{-i}s_{-i}-2s_{-i}'a_{-i}s_i)

(egin{matrix}egin{aligned} P(s_i=1|s_{-i})=sigm(d_i+2a_{-i}'s_{-i}))

例如,

5.3受限玻尔兹曼机

受限玻尔兹曼机同层之间是没有连接的,因此:

/(Energy(x,h)=-b'x-c'h-h'Wx)

在二元化的情况下有(P(h_i=1|x)=sigm(c_i+W_ix))和(P(x_i=1|h)=sigm(b_i+W_j'h))

5.3.1Gibbs采样

采样是指我们知道一个样本x(大多数情况下是多维的)的概率分布函数,要通过这个函数来产生多个样本点集合。

Gibss采用是需要知道样本中一个属性在其它所有属性下的条件概率,然后利用这个条件概率来分布产生各个属性的样本值。其过程如下所示:

Gibbs采样,可用下式表示:

(x_1simhat{P}(x)-->h_1simP(h|x_1)-->x_2simP(x|h_1)-->h_2simP(h|x_2)-->...-->x_{k+1}sim{x|h_k})

5.4对比分歧(contrastive divergence,CD)

CD是对数似然梯度的近似,证实对训练RBM是有效的。

5.4.1证明

为了获得算法,我们需要用一个样本来近似所有可能输入的平均值。

原文地址:https://www.cnblogs.com/Iknowyou/p/3648416.html