李宏毅机器学习课程梳理【七】:深度神经网络优化方法与卷积神经网络

摘要

上一篇文章介绍了高效计算DNN结果的Backpropagation方法,观察得到的结果,如果不理想,本篇文章介绍优化方法。本文分析深度学习的流程,分章节介绍无法train好的解决办法与过拟合的解决办法。其中,一些方法非常具有深度学习特点,如Dropout。本文最后一个章节介绍CNN的流程与卷积层的工作原理。

1 优化在Training Set上无法得到理想结果的问题

1.1 ReLU

Network叠很深时,Vanishing Gradient Problem会导致训练集上结果很不好。出现Vanishing Gradient Problem会导致训练时参数的更新卡住,且调整输入对结果的影响也小。出现此问题的根本原因是,Sigmoid作为激活函数,其输入是负无穷到正无穷,输出是0~1,因此输入变化 Δ w \Delta w Δw而输出的变化会衰减。那么层数越多,衰减越多, Δ C \Delta C ΔC越小,导致Input layer变化,Output layer变化非常小。

使用Rectified Linear Unit (ReLU)作为激活函数,解决激活函数输出递减的问题。z是激活函数的输入,a是激活函数的输出。可以将ReLU理解为无穷多个bias不同的Sigmoid叠加在一起的函数。下面分析ReLU如何解决Vanishing Gradient Problem:忽略Output为0的neuron,将其从神经网络中拿掉,神经网络变成一个线性网络。
1
问题是,深度学习需要非线性的函数,不过,由ReLU作激活函数的整个网络是非线性的。当input变化较大时,即改变neuron的Operation region,使每个neuron的Operation region不是全部相同,整个神经网络是非线性的。

1.2 Maxout

Maxout由Training Data决定激活函数,也就是激活函数是自动学的。
事先为中间Layer的计算结果分组,每组选择一个最大的值,这些值组成向量,传给下一层计算,如图2所示。
2
事先分组时,每组中有几个element是需要自己调的。
图3展示当Maxout参数特定设置时,可以做到与ReLU相同的效果。
3
图4展示Maxout自动学习参数,根据训练集来决定激活函数。
4
每一个neuron,根据它不同的参数,可以有不同的激活函数。
问题是如何Training Maxout?
Max虽然不可以微分,但其本质是对分组中最大的元素做线性运算,无需考虑分组中较小元素。训练集中每一笔数据都对应不同结构的神经网络,每个weight都可以被train到。示意图如图5所示。
5

1.3 RMSProp

自适应调整参数的Adagrad: w t + 1 = w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}=w^t-\cfrac{\eta}{\sqrt{\textstyle\sum_{i=0}^t (g^i)^2}} g^t wt+1=wti=0t(gi)2 ηgt,适用于Error Surface是convex,不适用于如图6所示的Loss function。
6
此函数在同一个方向上( w 1 w_1 w1)对 η \eta η的需求时大时小。
RMSProp方法:如图7所示。
7
其中 α \alpha α由我们设定。

1.4 Momentum

在做Gradient Descent时,Momentum提高找到全局最低点的成功率,每次移动的方向是用现在的梯度加上前一个时间点移动的方向,具体在计算Movement时, v t = λ v t − 1 − η ∇ L ( θ t − 1 ) v^t=\lambda v^{t-1}-\eta \nabla L(\theta^{t-1}) vt=λvt1ηL(θt1),其中 λ \lambda λ由我们设定,示意图如图8所示。
8
因为前一个时间点移动的方向就像惯性,使得在计算Movement时不仅仅被梯度左右,计算更加准确。

1.5 Adam

Adam算法理解为RMSProp+Momentum,算法描述如图9所示。
9
其中 m 0 m_0 m0是前一个时间点移动的方向, v 0 v_0 v0是之前梯度的root mean square σ t \sigma^t σt
红点所指的计算Bias correction是Adam特有,除数 ( 1 − β 1 ) (1-\beta_1) (1β1)开始时值小,越来越接近1
最后更新参数 θ t = θ t − 1 − α ⋅ m ^ t / ( v ^ t ) \theta_t = \theta_{t-1} - \alpha\cdot\hat m_t / (\sqrt{\hat v_t}) θt=θt1αm^t/(v^t )

2 优化在Training Set上结果好却在Testing Set上结果差的问题

2.1 Early Stopping

10
这个方法用在Overfitting时,早些停住训练,停止时间用验证集模拟测试集来找出。

2.2 Regularization

正则化是针对过拟合提出的。在一般优化最小的经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率(即参数 λ \lambda λ)来权衡模型复杂度与以往经验风险的权重。正则化可以防止模型训练过于复杂,有效地降低过拟合的风险。

L2 regularization(与【一】一样),重新定义Loss function,记为 L ′ ( θ ) L'(\theta) L(θ),更新参数计算如下
11
由于参数总会乘以一个小于1的常数,所以参数会越来越接近0。这招又称为Weight Decay。L2产生更多的特征,这些特征都会接近于0。

L1 regularization: ∣ ∣ θ ∣ ∣ 1 = ∣ w 1 ∣ + ∣ w 2 ∣ + . . . ||\theta||_1=|w_1|+|w_2|+... θ1=w1+w2+...
12
每一次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取平均,得到结果较好的最终结果。
13
上图展示了用四个子集训练,虽然每个model使用一个子集训练,但是图中红点所指weight是被所有训练集数据train到,很多其他weight也如此。
14
上图中展示如何在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所示。
15

3.3 Convolution

在Convolution Layer里面有一组Filter,每一个filter是一个矩阵,矩阵中的数是参数,必须训练学习得到,不可手动设计。先以黑白图像为例,图16展示Filter移动并计算内积的结果。
16
如果image的某个区域中包含filter的图案的话,那个区域得到的数值最大。一组的filter都过滤完后,会得到feature map。有多少个filter,会得到多少个image。如图17所示。
17
下面以彩色图片为例,矩阵叠三层(channel)分别表示RGB数值,相应的Filter也是叠三层。Filter移动时,是三个channel一起运算。如图18所示。
18

4 总结与展望

本文通过分析深度学习的流程,分章节介绍了无法train好的解决办法与过拟合的解决办法。其中,一些方法非常具有深度学习特点,如Dropout。本文最后一个章节介绍了CNN的流程与卷积层的工作原理。接下来将进入CNN其他步骤的学习,并理解为什么选择深度学习来解决机器学习问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值