Sparse Autoencoder 稀疏自动编码

转载 2016年06月13日 16:11:23

原文链接http://www.cnblogs.com/tornadomeet/archive/2013/03/19/2970101.html


这节课来学习下Deep learning领域比较出名的一类算法——sparse autoencoder,即稀疏模式的自动编码。我们知道,deep learning也叫做unsupervised learning,所以这里的sparse autoencoder也应是无监督的。按照前面的博文:Deep learning:一(基础知识_1)Deep learning:七(基础知识_2)所讲,如果是有监督的学习的话,在神经网络中,我们只需要确定神经网络的结构就可以求出损失函数的表达式了(当然,该表达式需对网络的参数进行”惩罚”,以便使每个参数不要太大),同时也能够求出损失函数偏导函数的表达式,然后利用优化算法求出网络最优的参数。应该清楚的是,损失函数的表达式中,需要用到有标注值的样本。那么这里的sparse autoencoder为什么能够无监督学习呢?难道它的损失函数的表达式中不需要标注的样本值(即通常所说的y值)么?其实在稀疏编码中”标注值”也是需要的,只不过它的输出理论值是本身输入的特征值x,其实这里的标注值y=x。这样做的好处是,网络的隐含层能够很好的代替输入的特征,因为它能够比较准确的还原出那些输入特征值。Sparse autoencoder的一个网络结构图如下所示:

   

 

  损失函数的求法:

  无稀疏约束时网络的损失函数表达式如下:

   

  稀疏编码是对网络的隐含层的输出有了约束,即隐含层节点输出的平均值应尽量为0,这样的话,大部分的隐含层节点都处于非activite状态。因此,此时的sparse autoencoder损失函数表达式为:

   

  后面那项为KL距离,其表达式如下:

   

  隐含层节点输出平均值求法如下:

    

  其中的参数一般取很小,比如说0.05,也就是小概率发生事件的概率。这说明要求隐含层的每一个节点的输出均值接近0.05(其实就是接近0,因为网络中activite函数为sigmoid函数),这样就达到稀疏的目的了。KL距离在这里表示的是两个向量之间的差异值。从约束函数表达式中可以看出,差异越大则”惩罚越大”,因此最终的隐含层节点的输出会接近0.05。

 

  损失函数的偏导数的求法:

  如果不加入稀疏规则,则正常情况下由损失函数求损失函数偏导数的过程如下:

   

  而加入了稀疏性后,神经元节点的误差表达式由公式:

   

  变成公式:

   

  

  梯度下降法求解:

  有了损失函数及其偏导数后就可以采用梯度下降法来求网络最优化的参数了,整个流程如下所示:

  

  从上面的公式可以看出,损失函数的偏导其实是个累加过程,每来一个样本数据就累加一次。这是因为损失函数本身就是由每个训练样本的损失叠加而成的,而按照加法的求导法则,损失函数的偏导也应该是由各个训练样本所损失的偏导叠加而成。从这里可以看出,训练样本输入网络的顺序并不重要,因为每个训练样本所进行的操作是等价的,后面样本的输入所产生的结果并不依靠前一次输入结果(只是简单的累加而已,而这里的累加是顺序无关的)。

 

  参考资料:

     Deep learning:一(基础知识_1)

     Deep learning:七(基础知识_2)

     http://deeplearning.stanford.edu/wiki/index.php/Autoencoders_and_Sparsity

 


稀疏自动编码(Sparse Autoencoder)

在之前的博文中,我总结了神经网络的大致结构,以及算法的求解过程,其中我们提高神经网络主要分为监督型和非监督型,在这篇博文我总结下一种比较实用的非监督神经网络——稀疏自编码(Sparse Autoen...
  • Daniel_djf
  • Daniel_djf
  • 2014年12月05日 10:13
  • 3711

《深度学习》学习笔记(一):稀疏自编码器(Sparse Autoencoder)

本笔记主要记录学习《深度学习》的总结体会。主要学习途径为UFLDL教程,本篇记录我对稀疏自编码器(Sparse Autoencoder)的理解,并具有完整的matlab代码实现,可以直接运行查看效果。...
  • u010278305
  • u010278305
  • 2015年07月14日 17:40
  • 12148

SparseAutoEncoder 稀疏自动编码器

Sparse Coding 稀疏编码(Sparse Coding)是一种模拟哺乳动物视觉系统主视皮层V1区的视觉感知算法,NNSC(Non-Negative Sparse Coding,非负稀疏编码)...
  • lynnandwei
  • lynnandwei
  • 2015年01月29日 11:38
  • 2956

SparseAutoEncoder 稀疏编码详解(Andrew ng课程系列)

先简单叙述问题,源码详细解析在下面 前言        首先介绍sparse autoencoder的一个实例练习,参考Ng的网页教程:Exercise:Sparse Autoencoder。这个例子...
  • whiteinblue
  • whiteinblue
  • 2014年03月06日 17:49
  • 6306

《深度学习》学习笔记(一):稀疏自编码器(Sparse Autoencoder)

本笔记主要记录学习《深度学习》的总结体会。主要学习途径为UFLDL教程,本篇记录我对稀疏自编码器(Sparse Autoencoder)的理解,并具有完整的matlab代码实现,可以直接运行查看效果。...
  • u010278305
  • u010278305
  • 2015年07月14日 17:40
  • 12148

sparse autoencoder(稀疏自动编码机)

预备知识(关于神经网络的) 例如如下简单的网络: 模型参数 {W, b},  每个神经元是一个计算单元, 可以是hybolic tangent, 可以是sigmoid,也可以是recti...
  • a130737
  • a130737
  • 2015年01月05日 16:16
  • 2351

UFLDL——Exercise: Sparse Autoencoder 稀疏自动编码

实验要求可以参考deeplearning的tutorial,Exercise:Sparse Autoencoder 。稀疏自动编码的原理可以参照之前的博文,神经网络,  稀疏自动编码   。 1...
  • Daniel_djf
  • Daniel_djf
  • 2014年12月09日 21:48
  • 2170

UFLDL 学习笔记——稀疏自动编码机(sparse autoencoder)

自动编码机是一种出入层节点数等于输出层节点数的三层神经网络,只有中间一层隐藏层。...
  • abc398966925
  • abc398966925
  • 2014年06月05日 13:29
  • 996

稀疏自动编码(Sparse Autoencoder)

在之前的博文中,我总结了神经网络的大致结构,以及算法的求解过程,其中我们提高神经网络主要分为监督型和非监督型,在这篇博文我总结下一种比较实用的非监督神经网络——稀疏自编码(Sparse Autoen...
  • Daniel_djf
  • Daniel_djf
  • 2014年12月05日 10:13
  • 3711

深度学习读书笔记之AE(自动编码AutoEncoder)

深度学习读书笔记之AE 声明: 1)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2)本文仅供学术交流,非商用。所以每一部分...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年05月08日 12:53
  • 1143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sparse Autoencoder 稀疏自动编码
举报原因:
原因补充:

(最多只允许输入30个字)