前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习算法原理——稀疏自编码器

深度学习算法原理——稀疏自编码器

作者头像
felixzhao
发布2019-02-13 15:20:15
2.5K0
发布2019-02-13 15:20:15
举报
文章被收录于专栏:null的专栏null的专栏

注:最近打算将UFLDL教程重新看一遍,其实里面有很多关于神经网络以及深度学习的知识点很有用,但是只是学习深度学习的话有一些内容就有点多余,所以想整理一个笔记,记录下神经网络到深度学习的一些知识点。整个教材已经非常好,网上有原版的英文版,也有翻译的中文版,这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。

这个笔记主要分为以下几个部分: - 神经网络 - 自编码器与稀疏性 - Softmax回归 - 自我学习 - 深度网络 - 其他,如PCA

二、自编码器与稀疏性

1、自编码器

前面介绍了神经网络的基本结构,并且对于监督学习,神经网络模型可以训练出模型中的参数,然后,神经网络也可以应用在无监督学习中,无监督学习是指数据集中没有类别标签,如训练样本为{x(1),x(2),⋯}\left \{ \mathbf{x}^{(1)},\mathbf{x}^{(2)},\cdots \right \},其中x(i)∈Rn\mathbf{x}^{(i)}\in \Re ^n。自编码神经网络是一种无监督学习算法,其模型结构与上述的神经网络一致,所不同的是其目标值等于其输入值,即y(i)=x(i)\mathbf{y}^{(i)}=\mathbf{x}^{(i)},其结构如下图所示:

2、自编码器的特点

对于上述结构自编码器实际上完成了一个hW,b(x)≈xh_{\mathbf{W},\mathbf{b}}\left ( \mathbf{x} \right )\approx \mathbf{x}函数的学习的过程,本身可以说并没有什么意义,但是通过观察上述的结构中,我们发现在自编码器结果中,中间的隐含层,是从特征x\mathbf{x}提取出来,同时,这提取出的特征又能还原原先的特征,简单来讲,中间层实现了对原数据的抽象,是原数据的另一种表示。对于中间的隐含层具有两种结构:

  • 降维,即隐含层的节点个数要小于输入节点的个数。
  • 稀疏,即在隐含层的神经元上加入稀疏性的限制。

3、稀疏性约束

对于使用Sigmoid作为神经元的激活函数的情况下,若神经元的输出为11表示该神经元被激活,否则称为未被激活,则稀疏性的含义是指在大多数情况下神经元都是未被激活的。可以使用神经元的输出作为神经元的激活度,即对于隐含层的第jj个神经元,其激活度为:

a(2)j=f(W(1)j1x1+W(1)j2x2+⋯+W(1)j6x6+b(1)j)

a_j^{(2)}=f\left ( W_{j1}^{(1)}x_1+W_{j2}^{(1)}x_2+\cdots +W_{j6}^{(1)}x_6+b_j^{(1)} \right )

则对于mm个样本,其平均激活度为:

ρ^j=1m∑i=1m[a(2)j(x(i))]

\hat{\rho }_j=\frac{1}{m}\sum_{i=1}^{m}\left [ a_j^{(2)}\left ( \mathbf{x}^{(i)} \right ) \right ]

假设令ρ^j=ρ\hat{\rho }_j=\rho ,其中ρ\rho 是一个常数,表示的是稀疏性参数,通常可以取一个接近于00的常数,如取ρ=0.05\rho =0.05。为了使得模型比较稀疏,我们希望平均激活度能够尽可能接近稀疏性常数,通常可以取相对熵来度量平均激活度与稀疏性参数之间的差异程度。

4、相对熵的概念

要说相对熵,首先得说说“什么是熵”。也称为信息熵,是反应了一个系统有序化程度的指标,一个系统越有序,那么其熵就越低,反之,熵就越大。熵的公式如下:

H(x)=−∑i=1np(xi)logp(x)

H\left ( x \right )=-\sum_{i=1}^{n}p\left ( x_i \right )logp\left ( x \right )

对于上述的自编码器模型,其隐含层的第jj个神经元的平均激活度为:

ρ^j=1m∑i=1m[a(2)j(x(i))]

\hat{\rho }_j=\frac{1}{m}\sum_{i=1}^{m}\left [ a_j^{(2)}\left ( \mathbf{x}^{(i)} \right ) \right ]

稀疏性常数为:ρ\rho ,则对于隐含层的相对熵为:

∑j=1s2ρlogρρ^j+(1−ρ)log1−ρ1−ρ^j

\sum_{j=1}^{s_2}\rho log\frac{\rho }{\hat{\rho }_j}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_j}

其中,s2s_2表示的是隐含层节点的个数,相对熵又称为KL散度,即:

∑j=1s2KL(ρ∥ρ^j)=∑j=1s2ρlogρρ^j+(1−ρ)log1−ρ1−ρ^j

\sum_{j=1}^{s_2}KL\left ( \rho \parallel \hat{\rho }_j \right )=\sum_{j=1}^{s_2}\rho log\frac{\rho }{\hat{\rho }_j}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_j}

相对熵是一种用来度量两个分布之间的差异的方法。对于上述的相对熵,若ρ=ρ^j\rho =\hat{\rho }_j时达到最小值,最小值为00,否则差距越大,相对熵的值越大,如下图所示:

从上图中,我们看出:

  • 当ρ=ρ^j\rho =\hat{\rho }_j时达到最小值00;
  • 相对熵的值大于等于00;
  • 由于图像是非对称的,因此KL(ρ∥ρ^j)≠KL(ρ^j∥ρ)KL\left ( \rho \parallel \hat{\rho }_j \right )\neq KL\left ( \hat{\rho }_j \parallel \rho \right )。

5、稀疏自编码器

对于稀疏自编码器的损失函数,其与神经网络的损失函数一致,可以表示为:

J(W,b)

J\left ( \mathbf{W},\mathbf{b} \right )

则对于稀疏自编码器,其损失函数即在神经网络的损失函数的基础上加上稀疏性的约束即可,即为:

Jsparse(W,b)=J(W,b)+β∑j=1s2KL(ρ∥ρ^j)

J_{sparse}\left ( \mathbf{W},\mathbf{b} \right )=J\left ( \mathbf{W},\mathbf{b} \right )+\beta \sum_{j=1}^{s_2}KL\left ( \rho \parallel \hat{\rho }_j \right )

其中,β\beta 控制稀疏性的权重。在更新的过程中,原本在神经网络中,更新公式为:

δ(2)i=⎛⎝∑j=1s2W(2)jiδ(3)j⎞⎠f′(z(2)i)

\delta _i^{(2)}=\left ( \sum_{j=1}^{s_2}W_{ji}^{(2)}\delta _j^{(3)} \right ){f}'\left ( z_i^{(2)} \right )

则在稀疏自编码器中的隐含层为:

δ(2)i=∂∂z(2)iJsparse(W,b;x,y)=∂∂z(2)i[12∥∥y−hW,b(x)∥∥2+β∑i=1s2ρlogρρ^i+(1−ρ)log1−ρ1−ρ^i]=∂∂z(2)i⎡⎣12∑j=1s3∥∥yj−a(3)j∥∥2+β∑i=1s2ρlogρρ^i+(1−ρ)log1−ρ1−ρ^i⎤⎦12∑j=1s3∂∂z(3)j∥∥yj−a(3)j∥∥2⋅∂∂z(2)iz(3)j+β∂z(2)i∑i=1s2ρlogρρ^i+(1−ρ)log1−ρ1−ρ^i

\begin{matrix} \delta _i^{(2)}=\frac{\partial }{\partial z_i^{(2)}}J_{sparse}\left ( \mathbf{W},\mathbf{b};\mathbf{x},y \right )\\ =\frac{\partial }{\partial z_i^{(2)}}\left [ \frac{1}{2}\left \| y-h_{W,b}\left ( x \right ) \right \|^2+\beta \sum_{i=1}^{s_2}\rho log\frac{\rho }{\hat{\rho }_i}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_i} \right ]\\ =\frac{\partial }{\partial z_i^{(2)}}\left [ \frac{1}{2}\sum_{j=1}^{s_3}\left \| y_j-a_j^{(3)} \right \|^2+\beta \sum_{i=1}^{s_2}\rho log\frac{\rho }{\hat{\rho }_i}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_i} \right ]\\ \frac{1}{2}\sum_{j=1}^{s_3}\frac{\partial }{\partial z_j^{(3)}}\left \| y_j-a_j^{(3)} \right \|^2\cdot \frac{\partial }{\partial z_i^{(2)}}z_j^{(3)}+\beta \frac{\partial }{z_i^{(2)}}\sum_{i=1}^{s_2}\rho log\frac{\rho }{\hat{\rho }_i}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_i}\\ \end{matrix}

=∑j=1s3δ(3)j⋅∂∂z(2)i∑i=1s2f(z(2)i)⋅W(2)ji+β∂z(2)i(ρlogρρ^i+(1−ρ)log1−ρ1−ρ^i)=∑j=1s3δ(3)j⋅W(2)ji⋅f′(z(2)i)+β⎛⎝ρ⋅ρ^iρ⋅∂∂z(2)i(ρρ^i)+(1−ρ)⋅1−ρ^i1−ρ⋅∂∂z(2)i⋅(1−ρ1−ρ^i)⎞⎠

\begin{matrix} =\sum_{j=1}^{s_3}\delta _j^{(3)}\cdot \frac{\partial }{\partial z_i^{(2)}}\sum_{i=1}^{s_2}f\left ( z_i^{(2)} \right )\cdot W_{ji}^{(2)}\\ +\beta \frac{\partial }{z_i^{(2)}}\left ( \rho log\frac{\rho }{\hat{\rho }_i}+\left ( 1-\rho \right )log\frac{1-\rho }{1-\hat{\rho }_i} \right )\\ =\sum_{j=1}^{s_3}\delta _j^{(3)}\cdot W_{ji}^{(2)}\cdot {f}'\left ( z_i^{(2)} \right )\\ +\beta \left ( \rho \cdot \frac{\hat{\rho }_i}{\rho }\cdot \frac{\partial }{\partial z_i^{(2)}}\left ( \frac{\rho }{\hat{\rho }_i} \right )+\left ( 1-\rho \right )\cdot \frac{1-\hat{\rho }_i}{1-\rho }\cdot \frac{\partial }{\partial z_i^{(2)}}\cdot \left ( \frac{1-\rho }{1-\hat{\rho }_i} \right )\right )\\ \end{matrix}

=∑j=1s3δ(3)j⋅W(2)ji⋅f′(z(2)i)+β⎛⎝⎜⎜ρ^i⋅−ρ(ρ^i)2⋅∂∂z(2)iρ^i+(1−ρ^i)−(1−ρ)(1−ρ^j)2⋅∂∂z(2)i(1−ρ^j)⎞⎠⎟⎟=∑j=1s3δ(3)j⋅W(2)ji⋅f′(z(2)i)+β(−ρρ^i⋅f′(z(2)i)+−(1−ρ)1−ρ^i⋅[−f′(z(2)i)])=⎛⎝⎛⎝∑j=1s3δ(3)j⋅W(2)ji⎞⎠+β(−ρρ^i+1−ρ1−ρ^i)⎞⎠⋅f′(z(2)i)

\begin{matrix} =\sum_{j=1}^{s_3}\delta _j^{(3)}\cdot W_{ji}^{(2)}\cdot {f}'\left ( z_i^{(2)} \right )\\ +\beta \left ( \hat{\rho }_i\cdot \frac{-\rho }{\left ( \hat{\rho }_i \right )^2}\cdot \frac{\partial }{\partial z_i^{(2)}}\hat{\rho }_i+\left ( 1-\hat{\rho }_i \right )\frac{-\left ( 1-\rho \right )}{\left ( 1-\hat{\rho }_j \right )^2}\cdot \frac{\partial }{\partial z_i^{(2)}}\left ( 1-\hat{\rho }_j \right )\right )\\ =\sum_{j=1}^{s_3}\delta _j^{(3)}\cdot W_{ji}^{(2)}\cdot {f}'\left ( z_i^{(2)} \right )\\ +\beta \left ( \frac{-\rho }{\hat{\rho }_i}\cdot {f}'\left ( z_i^{(2)} \right )+\frac{-\left ( 1-\rho \right )}{1-\hat{\rho }_i}\cdot \left [ -{f}'\left ( z_i^{(2)} \right ) \right ] \right )\\ =\left ( \left ( \sum_{j=1}^{s_3}\delta _j^{(3)}\cdot W_{ji}^{(2)} \right )+\beta \left ( -\frac{\rho }{\hat{\rho }_i}+ \frac{ 1-\rho }{1-\hat{\rho }_i}\right ) \right )\cdot {f}'\left ( z_i^{(2)} \right ) \end{matrix}

对于稀疏自编码器,其更新公式为:

δ(2)i=⎛⎝∑j=1s2W(2)jiδ(3)j+β(−ρρ^i+1−ρ1−ρ^i)⎞⎠f′(z(2)i)

\delta _i^{(2)}=\left ( \sum_{j=1}^{s_2}W_{ji}^{(2)}\delta _j^{(3)}+\beta \left ( -\frac{\rho }{\hat{\rho }_i}+\frac{1-\rho }{1-\hat{\rho }_i} \right ) \right ){f}'\left ( z_i^{(2)} \right )

参考文献

若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年11月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、自编码器与稀疏性
    • 1、自编码器
      • 2、自编码器的特点
        • 3、稀疏性约束
          • 4、相对熵的概念
            • 5、稀疏自编码器
            • 参考文献
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档