神经网络学习心得(1)
今日心得
今天阅读了Going deeper with convolutions,也就是人们所说的Inception-v1,产生了一些疑问,今天的心得就是回答这些疑问的。
- 什么是卷积?有什么用?
- 什么是池化?有什么用?
- 什么是超参数?有什么用?
- 什么是dropout?有什么用?
- 什么是$L_1$ norm和$L_2$ norm?有什么用?
什么是卷积?有什么用?
知乎上有一个问题:如何通俗易懂地解释卷积?,详细讲解了什么是卷积。
因为我读博的研究领域是神经网络,我着重解释下在神经网络中卷积的作用。
卷积的重要的物理意义是:一个函数在另一个函数上的加权叠加。在神经元网络中可以看成对特征的提取,同时因为卷积核本身可以看成一种权重,这种卷积操作使得当前层共享同一组卷积核,也就是共享了变量,这种卷积操作大大减小了神经网络中要训练的参数的个数。
什么是池化?有什么用?
所谓池化是在通过卷积获得了特征之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。学习一个拥有超过百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。
为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。
我理解的池化的作用:
- 降低维度,以加速神经网络的收敛
- 在降低维度的同时,尽可能保留所提取出来的Feature Map的特性
常用的池化方式:
- MaxPooling 最大池化,选择池化核区域的最大的元素
- AveragePooling 平均池化,选择池化核区域所有元素的平均
什么是超参数?有什么用?
所谓超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数。它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通枚举(叫做网格搜索)。
通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
什么是dropout?有什么用?
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络,作用是为了增加神经网络的多样性,以提升神经网络的性能。
关于对它的讲解,推荐2篇博文:
- 简书上的文章:分析 Dropout
- csdn上的文章:理解dropout
两篇文章从不同角度详细介绍了dropout的来龙去脉,值得一读。
什么是$L_1$ norm和$L_2$ norm?有什么用?
正则项是为了防止参数过大导致过拟合
- $L_1$ norm: 所有权重$w$绝对值的和,乘以$\frac{\lambda}{n}$
即$C=C_0+\frac{\lambda}{n} \sum\limits_w |w| $
- $L_2$ norm: 所有权重$w$的平方和,乘以$\frac{\lambda}{2n}$
即$C=C_0+\frac{\lambda}{2n} \sum\limits_w w^2 $