[UFLDL] *Train and Optimize

 
这部分内容应属于以下[Converge]系列一员:
[Converge] Gradient Descent - Several solvers
[Converge] Weight Initialiser
[Converge] Backpropagation Algorithm 【BP实现细节】
[Converge] Feature Selection in training of Deep Learning 【特性相关性的影响】
[Converge] Training Neural Networks 【cs231n-lec5&6,推荐】
[Converge] Batch Normalisation
View Code

 

需附加关注:权重初始化梯度爆炸梯度消失的影响

 
论文有点老,感觉目前已没有必要纠结:
本文主要是参考论文:On optimization methods for deep learning,文章内容主要是笔记
    • SGD(随机梯度下降)
    • LBFGS(受限的BFGS)--> Broyden–Fletcher–Goldfarb–Shanno (BFGSalgorithm
    • CG(共轭梯度法)
三种常见优化算法的在deep learning体系中的性能。
 
 
Dropout是hinton提出的?源于其文章Improving neural networks by preventing co-adaptation of feature detectors.
没什么可说的,如果是ensembling原理,用了总比没用好。
 
 
感觉实践意义不大,目前牛顿法就挺好!
 
目前,深度网络(Deep Nets)权值训练的主流方法还是梯度下降法(结合BP算法),当然在此之前可以用无监督的方法(比如说RBM,Autoencoder)来预训练参数的权值,
    • 而梯度下降法应用在深度网络中的一个缺点是权值的迭代变化值会很小,很容易收敛到的局部最优点;
    • 另一个缺点是梯度下降法不能很好的处理有病态的曲率(比如Rosenbrock函数)的误差函数。
而本文中所介绍的Hessian Free方法(以下简称HF)可以不用预训练网络的权值,效果也还不错,且其适用范围更广(可以用于RNN等网络的学习),同时克服了上面梯度下降法的那2个缺点
HF的主要思想类似于牛顿迭代法,只是并没有显示的去计算误差曲面函数某点的Hessian矩阵H,而是通过某种技巧直接算出H和任意向量v的乘积Hv(该矩阵-向量的乘积形式在后面的优化过程中需要用到),因此叫做”Hessian Free”。
 
 
 

卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

顺便理解下相关的概念。

参考资料

[1] Maxout Networks, 2013 
[2] http://www.jianshu.com/p/96791a306ea5 
[3] Deep learning:四十五(maxout简单理解) 
[4] 论文笔记 《Maxout Networks》 && 《Network In Network》 
[5] Fully convolutional networks for semantic segmentation, 2015 
[6] http://blog.csdn.net/u010402786/article/details/50499864 
[7] 深度学习(二十六)Network In Network学习笔记 
[8] Network in Nerwork, 2014 
[9] Improving neural networks by preventing co-adaptation of feature detectors
Reference

 

1、Maxout Network

提出了一个概念——线性变化+Max操作可以拟合任意的的凸函数,包括激活函数 (such as Relu)。

 

(1)

如果激活函数采用sigmoid函数的话,在前向传播过程中,隐含层节点的输出表达式为:

这里写图片描述

W是2维,这里表示取出的是第i列(对应第i个输出节点),下标i前的省略号表示对应所有行中的第i列中的。

(2)

如果是maxout激活函数,则其隐含层节点的输出表达式为:

这里写图片描述

这里写图片描述

W是3维,尺寸为d*m*k

  • d表示输入层节点的个数,
  • m表示隐含层节点的个数,
  • k表示每个隐含层节点展开k个中间节点,这k个中间节点都是线性输出的,而maxout的每个节点就是取这k个中间节点输出最大的那个值。

 

参考一个日文的maxout ppt 中的一页ppt如下:

这里写图片描述

这张图的意识是说,紫圈中的隐藏节点展开成了5个黄色节点,取max。Maxout的拟合能力是非常强的,它可以拟合任意的的凸函数

从左往右,依次拟合出了ReLU,abs,二次曲线。

这里写图片描述

作者从数学的角度上也证明了这个结论,即只需2个maxout节点就可以拟合任意的凸函数了(相减),前提是中间节点的个数可以任意多,如下图所示,具体可以翻阅paper[1]。

maxout的一个强假设是输出是位于输入空间的凸集中的….这个假设是否一定成立呢?虽然ReLU是Maxout的一个特例——实际上是得不到ReLU正好的情况的,我们是在学习这个非线性变换,用多个线性变换的组合+Max操作。

这里写图片描述

Jeff: 是否具有一定的实战价值?还是叫好不叫座?感觉是无关同样的改进,稍微了解下。

 

2、Network In Network

本文的一些概念,包括1*1卷积global average pooling都已经成为后来网络设计的标准结构,有独到的见解。

这里写图片描述 

这里写图片描述

看第一个NIN,本来11*11*3*96(11*11的卷积kernel,输出map 96个)对于一个patch输出96个点,是输出feature map同一个像素的96个channel,但是现在多加了一层MLP,把这96个点做了一个全连接,又输出了96个点

很巧妙,这个新加的MLP层就等价于一个1 * 1 的卷积层

这样在神经网络结构设计的时候就非常方便了,只要在原来的卷积层后面加一个1*1的卷积层,而不改变输出的size。

注意,每一个卷积层后面都会跟上ReLU。所以,相当于网络变深了,我理解其实这个变深是效果提升的主要因素。

意义在于:成了一个不同特征提取器的综合效果,节省NN空间,但保证效果,这对网络的简化很有意义。

【举例解释,见原文】

这里建立了一个概念,全连接网络可以等价转换到1*1的卷积,这个idea在以后很多网络中都有用到,比如FCN[5]。

 

3、Global Average Pooling

在Googlenet网络中,也用到了Global Average Pooling,其实是受启发于Network In Network。

Global Average Pooling一般用于放在网络的最后,用于替换全连接FC层,为什么要替换FC?因为在使用中,例如alexnet和vgg网络都在卷积和softmax之间串联了fc层,发现有一些缺点:

(1)参数量极大,有时候一个网络超过80~90%的参数量在最后的几层FC层中; 
(2)容易过拟合,很多CNN网络的过拟合主要来自于最后的fc层,因为参数太多,却没有合适的regularizer;过拟合导致模型的泛化能力变弱; 
(3)实际应用中非常重要的一点,paper中并没有提到:FC要求输入输出是fix的,也就是说图像必须按照给定大小,而实际中,图像有大有小,fc就很不方便;

作者提出了Global Average Pooling,做法很简单,是对每一个单独的feature map取全局average。要求输出的nodes和分类category数量一致,这样后面就可以直接接softmax了。

这里写图片描述

作者指出,Global Average Pooling的好处有:

  • 因为强行要求最后的feature map数量等于category数量,因此feature map就会被解析为categories confidence maps.
  • 没有参数,所以不会过拟合;
  • 对一个平面的计算,使得利用了空间信息,对于图像在空间中变化更鲁棒;

这里写图片描述

举个例子:

假如,最后的一层的数据是10个6*6的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值,

这样10 个特征图就会输出10个数据点,将这些数据点组成一个1*10的向量的话,就成为一个特征向量,就可以送入到softmax的分类中计算了

 

From: https://alexisbcook.github.io/2017/global-average-pooling-layers-for-object-localization/

In mid-2016, researchers at MIT demonstrated that CNNs with GAP layers (a.k.a. GAP-CNNs) that have been trained for a classification task can also be used for object localization.

That is, a GAP-CNN not only tells us what object is contained in the image - it also tells us where the object is in the image, and through no additional work on our part! The localization is expressed as a heat map (referred to as a class activation map), where the color-coding scheme identifies regions that are relatively important for the GAP-CNN to perform the object identification task. 

 

 

 
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout的改进
    • 与Dropout不同的是,它不是随机将隐含层节点的输出清0,
    • 将节点中的每个与其相连的输入权值以1-p的概率清0
根据作者的观点,Dropout和DropConnect都类似模型平均,Dropout是2^|m|个模型的平均,而DropConnect是2^|M|个模型的平均(m是向量,M是矩阵,取模表示矩阵或向量中对应元素的个数),
从这点上来说,DropConnect模型平均能力更强(因为|M|>|m|)
 
Jeff: 无足轻重的改进,并没有绝对的优势。
 
 
 
 
stochastic pooling方法非常简单,只需对feature map中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大。而不像max-pooling那样,永远只取那个最大值元素。
Jeff: 怎么感觉这些paper都是灌水文。
 
 
需附加关注:权重初始化对梯度爆炸和梯度消失的影响
需要了解下。
 
 
posted @ 2017-11-20 19:37  郝壹贰叁  阅读(222)  评论(0编辑  收藏  举报