Network in Network学习笔记

Network in Network学习笔记

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xjz18298268521/article/details/53642711

论文:《Network in Network》 
概述: 
  此论文是2014年的一篇比较厉害的paper,该论文改进了传统的cnn网络使得网络模型参数很少,也为后续的Googlenet和resnet以及目标检测网络中提出的全卷积共享提供了一个很好的开端,小菜也是在学习主流的深层网络模型的论文时发现许多论文中都有提到NIN这篇论文,所以专门挑了时间看了这篇论文,觉得这篇论文的确不错,论文中的网络整体架构如下图所示。 
这里写图片描述

论文的创新点:

  1. 提出了抽象能力更高的Mlpconv层
  2. 提出了Global Average Pooling(全局平均池化)层

    Mlpconv层 
     传统的卷积神经网络一般来说是由线性卷积层、池化层、全连接层堆叠起来的网络,卷积层通过线性滤波器进行线性卷积运算,然后在接个非线性激活函数最终生成特征图。而这种卷积滤波器是一种GLM:(Generalized linear model)广义线性模型。然而GLM的抽象能力是比较低水平的。 
      
    抽象:指得到对同一概念的不同变体保持不变的特征。

      一般用CNN进行特征提取时,其实就隐含地假设了特征是线性可分的,可实际问题往往是难以线性可分的。一般来说我们所要提取的特征一般是高度非线性的。在传统的CNN中,也许我们可以用超完备的滤波器,来提取各种潜在的特征。比如我们要提取某个特征,于是我就用了一大堆的滤波器,把所有可能的提取出来,这样就可以把我想要提取的特征也覆盖到,然而这样存在一个缺点,那就是网络太恐怖了,参数太多了。 
      我们知道CNN高层特征其实是低层特征通过某种运算的组合。所以论文就根据这个想法,提出在每个局部感受野中进行更加复杂的运算,提出了对卷积层的改进算法:MLP卷积层。(这里也不知道是否有道理,因为在后面的深层网络没有提出此种说法,还是按照传统的cnn方法使用多个滤波器去学习同一特征的不同变体)。MLP中的激活函数采用的是整流线性单元(即ReLU:max(wx+b,0)。 
    MLP的优点: 
    (1) 非常有效的通用函数近似器 
    (2) 可用BP算法训练,可以完美地融合进CNN 
    (3) 其本身也是一种深度模型,可以特征再利用 
             这里写图片描述

全局平均池化层 
  另一方面,传统的CNN最后一层都是全连接层,参数个数非常之多,容易引起过拟合(如Alexnet),一个CNN模型,大部分的参数都被全连接层给占用了,所以论文提出采用了全局均值池化替代全连接层。与传统的全连接层不同,我们对每个特征图一整张图片进行全局均值池化,这样每张特征图都可以得到一个输出。这样采用均值池化,连参数都省了,可以大大减小网络参数,避免过拟合,另一方面它有一个特点,每张特征图相当于一个输出特征,然后这个特征就表示了我们输出类的特征。 
全局平均池化的优势: 
(1) 通过加强特征图与类别的一致性,让卷积结构更简单 
(2)不需要进行参数优化,所以这一层可以避免过拟合 
(3)它对空间信息进行了求和,因而对输入的空间变换更具有稳定性

  在采用了微神经网络后,让局部模型有更强的抽象能力,从而让全局平均池化能具有特征图与类别之间的一致性,同时相比传统CNN采用的全连接层,不易过拟合(因为全局平均池化本身就是一种结构性的规则项)(PS:经典CNN容易过拟合,并严重依赖用dropout进行规则化)。

posted @ 2019-03-03 14:04  我的明天不是梦  阅读(256)  评论(0编辑  收藏  举报