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

 


相关文章推荐

Keras上实现AutoEncoder自编码器

一、自编码器简介 无监督特征学习(Unsupervised Feature Learning)是一种仿人脑的对特征逐层抽象提取的过程,学习过程中有两点:一是无监督学习,即对训练数据不需要进行标签化标...

稀疏自动编码(Sparse Autoencoder)

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

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

实验要求可以参考deeplearning的tutorial,Exercise:Sparse Autoencoder 。稀疏自动编码的原理可以参照之前的博文,神经网络,  稀疏自动编码   。 1...

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

自动编码机是一种出入层节点数等于输出层节点数的三层神经网络,只有中间一层隐藏层。...

sparse autoencoder(稀疏自动编码机)

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

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

深度学习读书笔记之AE 声明: 1)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2)本文仅供学术交流,非商用。所以每一部分...

降噪自动编码机(Denoising Autoencoder)

摘要 dA的Theano实现 Autoencoder原理 dA原理

机器学习课程练习(一)——稀疏自动编码机

前言 斯坦福的UFLDL教程每一个章节都配有练习 本文是稀疏自动编码器这一章节的练习的解答 练习的目的是填补空缺代码,实现一个稀疏自动编码器,完成对8*8图片块的特征编码 具体内容可以浏览课程网页 s...

Tensorflow实现稀疏自动编码(SAE)

1.概述人在获取图像时,并不是像计算机逐个像素去读,一般是扫一眼物体,大致能得到需要的信息,如形状,颜色,特征。怎么让机器也有这项能力呢,稀疏编码来了。定义: 稀疏自编码器(Sparse Auto...

autoencoder理解(2): 自动编码器的作用之稀疏编码

如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sparse Autoencoder 稀疏自动编码
举报原因:
原因补充:

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