文章目录
- 摘要
- 1 优化在Training Set上无法得到理想结果的问题
- 1.1 ReLU
- 1.2 Maxout
- 1.3 RMSProp
- 1.4 Momentum
- 1.5 Adam
- 2 优化在Training Set上结果好却在Testing Set上结果差的问题
- 2.1 Early Stopping
- 2.2 Regularization
- 2.3 Dropout
- 3 Convolutional Neural Network
- 3.1 何为CNN
- 3.2 CNN架构
- 3.3 Convolution
- 4 总结与展望
摘要
上一篇文章介绍了高效计算DNN结果的Backpropagation方法,观察得到的结果,如果不理想,本篇文章介绍优化方法。本文分析深度学习的流程,分章节介绍无法train好的解决办法与过拟合的解决办法。其中,一些方法非常具有深度学习特点,如Dropout。本文最后一个章节介绍CNN的流程与卷积层的工作原理。
1 优化在Training Set上无法得到理想结果的问题
1.1 ReLU
Network叠很深时,Vanishing Gradient Problem会导致训练集上结果很不好。出现Vanishing Gradient Problem会导致训练时参数的更新卡住,且调整输入对结果的影响也小。出现此问题的根本原因是,Sigmoid作为激活函数,其输入是负无穷到正无穷,输出是0~1,因此输入变化而输出的变化会衰减。那么层数越多,衰减越多,越小,导致Input layer变化,Output layer变化非常小。
使用Rectified Linear Unit (ReLU)作为激活函数,解决激活函数输出递减的问题。z是激活函数的输入,a是激活函数的输出。可以将ReLU理解为无穷多个bias不同的Sigmoid叠加在一起的函数。下面分析ReLU如何解决Vanishing Gradient Problem:忽略Output为0的neuron,将其从神经网络中拿掉,神经网络变成一个线性网络。
问题是,深度学习需要非线性的函数,不过,由ReLU作激活函数的整个网络是非线性的。当input变化较大时,即改变neuron的Operation region,使每个neuron的Operation region不是全部相同,整个神经网络是非线性的。
1.2 Maxout
Maxout由Training Data决定激活函数,也就是激活函数是自动学的。
事先为中间Layer的计算结果分组,每组选择一个最大的值,这些值组成向量,传给下一层计算,如图2所示。
事先分组时,每组中有几个element是需要自己调的。
图3展示当Maxout参数特定设置时,可以做到与ReLU相同的效果。
图4展示Maxout自动学习参数,根据训练集来决定激活函数。
每一个neuron,根据它不同的参数,可以有不同的激活函数。
问题是如何Training Maxout?
Max虽然不可以微分,但其本质是对分组中最大的元素做线性运算,无需考虑分组中较小元素。训练集中每一笔数据都对应不同结构的神经网络,每个weight都可以被train到。示意图如图5所示。
1.3 RMSProp
自适应调整参数的Adagrad:,适用于Error Surface是convex,不适用于如图6所示的Loss function。
此函数在同一个方向上()对的需求时大时小。
RMSProp方法:如图7所示。
其中由我们设定。
1.4 Momentum
在做Gradient Descent时,Momentum提高找到全局最低点的成功率,每次移动的方向是用现在的梯度加上前一个时间点移动的方向,具体在计算Movement时,,其中由我们设定,示意图如图8所示。
因为前一个时间点移动的方向就像惯性,使得在计算Movement时不仅仅被梯度左右,计算更加准确。
1.5 Adam
Adam算法理解为RMSProp+Momentum,算法描述如图9所示。
其中是前一个时间点移动的方向,是之前梯度的root mean square
红点所指的计算Bias correction是Adam特有,除数开始时值小,越来越接近1
最后更新参数
2 优化在Training Set上结果好却在Testing Set上结果差的问题
2.1 Early Stopping
这个方法用在Overfitting时,早些停住训练,停止时间用验证集模拟测试集来找出。
2.2 Regularization
正则化是针对过拟合提出的。在一般优化最小的经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率(即参数)来权衡模型复杂度与以往经验风险的权重。正则化可以防止模型训练过于复杂,有效地降低过拟合的风险。
L2 regularization(与【一】一样),重新定义Loss function,记为,更新参数计算如下
由于参数总会乘以一个小于1的常数,所以参数会越来越接近0。这招又称为Weight Decay。L2产生更多的特征,这些特征都会接近于0。L1 regularization:
每一次L1 regularization更新参数时,都加上或减去一个常数,该常数为模型参数的一范数。L1会产生稀疏的特征,会把不重要的特征直接置0,因此它是一个天然的特征选择器。L1趋向产生少量的特征,而其他的特征都是0。
L0和L1范数都可以得到稀疏,L1因具有比L0更好的优化特性而被广泛使用。L2与L1的区别之一是:L1将不重要的特征直接置0,L2将这些特征趋近于0。
2.3 Dropout
Dropout是深度学习新产生的解决Overfitting的方法。步骤一,在Training时,每一次更新参数都要sample一次,改变一次结构,dropout rate是p%。步骤二,在Testing时,不做Dropout,所有的weight乘以(1-p)%,这样使Training set上结果变差,但是Testing set上结果变好。
其实Dropout是一种Ensemble方法,Ensemble是有一个很大的训练集,每次抽样出一些子集,用这些子集(大概100笔data)分别训练,得到的结果取平均作为最终结果。Ensemble准的原因是复杂model的方差大,将几个model的结果取平均会减小方差。对每一笔Testing data,都将其丢入几个model中,再将它们的output取平均,得到结果较好的最终结果。
上图展示了用四个子集训练,虽然每个model使用一个子集训练,但是图中红点所指weight是被所有训练集数据train到,很多其他weight也如此。
上图中展示如何在Testing set上得到结果,蓝色取平均的方法由于model数量多、计算量过大无法实现,而Dropout神奇之处在于红色方法的结果与蓝色方法近似相等。
Tip: 在比较Deep和Shallow的model时,要将参数的数量调到一样多。
3 Convolutional Neural Network
3.1 何为CNN
CNN善于做影像辨识,将彩色图像的pixels转化成一维vector,与hidden layer全连接的话,参数过多。人们运用先导知识,将一些无用的参数拿掉,构成的神经网络称为CNN。实际上,CNN的Model比DNN的Model简单。
为什么减少参数还能够做到影像辨识?其实辨识的往往是一个图案,这个图案只占图片的一部分,可能位于任意位置,而且用subsampling将奇数行偶数列拿掉其实不影响辨识结果却大大减少了图片像素。这些原因都支持减少参数。【三个观察设计出CNN架构】
3.2 CNN架构
需提前设计好重复次数,开始时将图片输入Convolution,随后Max Pooling,接着重复计划次数的Convolution+Max Pooling,再Flatten,最后通过Fully Connected Feedforward Network,输出分类结果,示意图如图15所示。
3.3 Convolution
在Convolution Layer里面有一组Filter,每一个filter是一个矩阵,矩阵中的数是参数,必须训练学习得到,不可手动设计。先以黑白图像为例,图16展示Filter移动并计算内积的结果。
如果image的某个区域中包含filter的图案的话,那个区域得到的数值最大。一组的filter都过滤完后,会得到feature map。有多少个filter,会得到多少个image。如图17所示。
下面以彩色图片为例,矩阵叠三层(channel)分别表示RGB数值,相应的Filter也是叠三层。Filter移动时,是三个channel一起运算。如图18所示。
4 总结与展望
本文通过分析深度学习的流程,分章节介绍了无法train好的解决办法与过拟合的解决办法。其中,一些方法非常具有深度学习特点,如Dropout。本文最后一个章节介绍了CNN的流程与卷积层的工作原理。接下来将进入CNN其他步骤的学习,并理解为什么选择深度学习来解决机器学习问题。