• 非监督学习的单层网络分析


        这篇博客对应的是Andrew.Ng的那篇文章:An Analysis o f Single-Layer Networks in Unsupervised Feature Learning,文章的主要目的是讨论receptive field size,number of hidden nodes, step-stride以及whitening在对卷积网络模型的影响。同时,单层网络中,作者用sparse auto-coding,RBM, k-means和GMM四种模型提取特征,最后得到的结果是 k-means 的结果是最好的,文章提供了对应的代码利用k-means在单层网络中提取特征分类。试验中用到的数据库是CIFAR。可以在这个网站下载http://www.cs.toronto.edu/~kriz/文章的代码可以去NG的主页下载:http://ai.stanford.edu/~ang/papers.php

        由于文章只是单纯的以实验的形式分析receptive field size,number of hidden nodes, step-stride以及whitening对网络的影响,并无数学分析过程,涉及到k-means的知识可以去看我前面的博文http://www.cnblogs.com/txg198955/p/4072859.html,如果我们用k-means得到了聚类中心,那么对于给定的一个样本我们对其有两种特征表示,即文中所讲的:

    方法一:1-of-k(这种表示是一个向量,距离最近的那一类对应的值为1,其余为0)

                                                                    image

    方法二:给定一个样本,先求出这个样本到每一类的平均距离,然后用这个平均距离减去样本到每一类的距离得到A,若A<=0,则取0,否则取A。代码中用到的就是这种方法

                                                                    image

        好了,知道了这些,就可以对这几个影响因素进行分析了。文章给出的分析结果如下:

        effect of  Number of whithening:对于sparse auto-coding和RBM,whithening的影响不是很大,在选取100个特征的情况下,效果还是很明显,但是选取较多的特征后,效果就不明显了。但是对于k-means,whithening的影响就非常明显了,这可能是k-means不具备处理特征之间的相关性的原因。具体效果如下图所示:

                                   image

         effect of  Number of features: 作者用k-means分别选取100,200,400,800,1200,1600个特征进行测试,得到的结论是特征越多效果越好,1600个特征点时,正确率为79.6%,4000个的时候为97.21%。所以理论上特征越多效果越好,不过特征越多计算的开销就越大,这个自己把握就是了。

         effect of stride: 文中指出,stride=1的时候效果最好,随着stride不断增大,效果会越来越差。文中对此也有说明,stride越小则更多的samples会归到pooling中,特征的重复就更多

    理论上,特征重复越多效果就越好。

                                                        image        

        effect of receptive field size:文中指出如果“receptive field”太大,则包含的特征就会有冗余。比如一个“receptive field”会包含多个nonlinear feature-edges。如果“receptive field”太小,则pooling处理的样本会增多,这样stride也必须小。

        下面是我对代码解读的一个分析,画成图帮助大家理解:

                                                         特征提取过程

  • 相关阅读:
    springMVC 使用WebApplicationContext获取ApplicationContext对象
    idea for mac 最全快捷键整理
    装饰模式 应用场景和实现
    RabbitMQ基础知识详解
    jetty 介绍以及小例子
    业务对象的贫血模型与充血模型
    同构与异构
    Java设计模式之策略模式与状态模式
    C++之内部类(嵌套类)与外部类及友元
    深入理解Java中为什么内部类可以访问外部类的成员
  • 原文地址:https://www.cnblogs.com/txg198955/p/4108831.html
Copyright © 2020-2023  润新知