深度学习读书笔记(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_h\frac{e^{-Energy(x,h)}}{Z}\)

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

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

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

引入\(\theta\)表示参数模型:

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

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

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

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

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

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

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

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

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

\(  \begin{matrix}\begin{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}\cdots\sum_{h_k}e^{\beta(x)-\sum_i \gamma_i (x,h_i)}   \\& =\frac{1}{Z}\sum_{h_1}\sum_{h_2}\cdots\sum_{h_k}e^{\beta(x)}\prod_i e^{-\gamma_i(x,h_i)}\\&=\frac{e^{\beta(x)}}{Z}\sum_{h_1}e^{-\gamma_1(x,h_1)} \sum_{h_2}e^{-\gamma_2(x,h_2)} \cdots\sum_{h_k}e^{-\gamma_k(x,h_k)} \\&=\frac{e^{\beta(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)取样的方法。对数似然的梯度可以写成下面的形式。

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

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

\(S_i\sim 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\)

\(\begin{matrix}\begin{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_1\sim\hat{P}(x)-->h_1\sim\P(h|x_1)-->x_2\sim\P(x|h_1)-->h_2\sim\P(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值