zoukankan      html  css  js  c++  java
  • Deep learning:三十二(基础知识_3)

      前言:

      本次主要是重新复习下Sparse autoencoder基础知识,并且加入点自己的理解。关于sparse autoencoder在前面的博文Deep learning:八(Sparse Autoencoder)中已有所介绍。

      基础知识:

      首先来看看为什么sparse autoencoder能够学习到输入数据的特征呢?当使用autoencoder时,隐含层节点的个数会比输入层小(一般情况下),而autoencoder又要能够重构输入数据,说明隐含层节点压缩了原始数据,既然这个压缩是有效的,则它就代表了输入数据(因为输入数据每个分量值并不是相互独立的)的一部分特征了。如果对隐含节点加入稀疏性限制(此时隐含层节点的个数一般比输入层要多),即对输入的数据而言,其大部分时间都处于抑制状态,这时候学习到的特征就更有代表性,因为它只对它感兴趣的输入值响应,说明这些输入值就是我们需要学习的特征。

      在前面讲的稀疏性中,并不是说对于某一个输入样本,隐含层中大部分的节点都处于非抑制状态(虽然事实上有可能确实是如此),而是说对于所有的输入样本,某一个节点对这些输入的响应大部分都处于非抑制状态。

      此时的稀疏性惩罚值公式如下所示:

       

      其中的变量一般取很小,比如0.05. 而 的计算公式则如下:

        

      把其中的KL散度展开后,其公式如下:

        

      不过在Ng的一节视频教程http://www.stanford.edu/class/cs294a/handouts.html中,关于稀疏性的一些表达和计算方式稍有不同,它的并不是一次计算所有样本在本节点i的期望,而是通过每一个样本来迭代得到,如下面的讲解截图所示:

       

      

      比较难理解的是,它这里的偏置值b竟然不是由偏导公式来求得的,而是通过稀疏性来求得,有点不解,求解过程如下所示:

      

      

       

      参考资料:

         Deep learning:八(Sparse Autoencoder)

         http://www.stanford.edu/class/cs294a/handouts.html

    作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 欢迎转载或分享,但请务必声明文章出处。 (新浪微博:tornadomeet,欢迎交流!)
  • 相关阅读:
    微信小程序
    如何在微信小程序中使用骨架屏
    Nlog打印日志到Influxdb数据库
    C#通过模板导出Word的两种方法(超简单)
    VS2019制作的安装包,默认安装到C盘快捷方式无法打开
    orcale数据库还原备份
    Thread 类创建线程
    Quartz.NET
    DataTable ,使用详细。
    Unity3D 学习
  • 原文地址:https://www.cnblogs.com/tornadomeet/p/3041470.html
Copyright © 2011-2022 走看看