李宏毅深度学习--《Tips for Deep Learning》

Deep Learning策略:

在这里插入图片描述

d e e p   l e a r n i n g deep\ learning deep learning不像传统的机器学习那样够确保在 t r a i n i n g   d a t a training\ data training data上取得很高的正确率(像 K N N 、 D T KNN、DT KNNDT决策数能够使 t r a i n i n g   d a t a training\ data training data取得 100 % 100\% 100%正确率);所以对于 d e e p   l e a r n i n g deep\ learning deep learning来说,检查 o v e r   f i t t i n g over\ fitting over fitting不是首要的事,首要的是要检查是否在 t r a i n i n g   d a t a training\ data training data取得较高的正确率。并且 o v e r   f i t t i n g over\ fitting over fitting指的是在训练集上表现良好,测试集上表现较差的模型。

举两个例子:
示例1:
模型在测试集上的错误率如下所示:
在这里插入图片描述
这是可能就会说, 56 56 56层的神经网络错误率比较高很有可能发生了过拟合;这时候我们回到训练集上,训练集错误率如下:

在这里插入图片描述
可以看到并不是 56 56 56层的模型发生了 o v e r   f i t t i n g over\ fitting over fitting,只是 56 56 56层的神经网络没那么好训练(可能存在梯度消失问题),训练的效果没有 20 20 20层的那么好。

有人也许会认为 56 56 56层的神经网的问题是 u n d e r f i t t i n g under fitting underfitting,但是 u n d e r f i t t i n g under fitting underfitting指的是模型不够复杂,参数不够多,不足与描述问题;但这个 56 56 56层的复杂程度是高于 20 20 20层的,所以问题可能是出现在训练的方式上或者模型结构的选择上


Vanishing Gradient Problem

d e e p   l e a r n i n g deep\ learning deep learning不好训练的原因之一是存在梯度消失。即靠近输出层的梯度很小,参数更新的很慢;而靠近输出层的梯度较大,学习的非常快。就会出现靠近输出层的参数还是随机的状态,输出层就已经根据这些随机的参数找到了局部最优解,然后输出层的参数就收敛了。

在这里插入图片描述

为什么会发生梯度消失呢?假设我们在神经网络中使用的是 s i g m o i d sigmoid sigmoid激活函数;现在对输入层的权重 w w w加上一个较大的 Δ w \Delta w Δw s i g m o i d sigmoid sigmoid会将无穷大的数都映射到0-1内,所以在经过第一层 l a y e r layer layer后, Δ w \Delta w Δw被衰减了;即层数越多 Δ w \Delta w Δw o u t p u t output output的影响就越小,所以靠近 i n p u t input input的参数对损失函数的值的影响是很小的,于是靠近 i n p u t input input的参数对于损失函数的梯度 ∂ l ∂ w \frac{∂l}{∂w} wl远小于靠近输出的的梯度。如下图所示:

在这里插入图片描述


ReLU

现在常用的激活函数是ReLU,函数图像如下:
在这里插入图片描述

使用 R e L U ReLU ReLU有以下4点原因:

  • R e L U ReLU ReLU函数运算很快
  • R e L U ReLU ReLU函数结合了生物上的观察
  • 无穷多不同 b i a s bias bias s i g m o i d sigmoid sigmoid函数叠加的结果就是 R e L U ReLU ReLU函数
  • 可以解决 V a n i s h i n g   G r a d i e n t Vanishing\ Gradient Vanishing Gradient问题

所以梯度消失可以通过更换激活函数解决

为什么 R e L U ReLU ReLU能够解决梯度消失问题呢?

根据 R e L U ReLU ReLU图像可知,当 i n p u t input input大于0, R e L U ReLU ReLU就是线性的;当小于0, R e L U ReLU ReLU就恒等于 0 0 0。如下图,神经网络中的节点要么是线性函数要么是 0 0 0.
在这里插入图片描述

o u t p u t output output 0 0 0的神经节点对输出 y y y没有影响,所以从图中去掉,如下图:

在这里插入图片描述
变成了一个更加“精瘦”的线性神经网络,不会像 s i g m o i d sigmoid sigmoid那样 Δ w \Delta w Δw的影响逐层递减了。

这里大家可能会产生疑问,使用 d e e p   l e a r n i n g deep \ learning deep learning就是为了找到一个复杂的非线性函数,使用了 R e L U ReLU ReLU难度不是消弱了神经网络的学习能力吗?

其实这个 R e L U ReLU ReLU神经还是非线性的,当 i n p u t input input不同时,“精瘦”的线性神经网络不是一层不变的;而是随着输入的不同在使用不同的“精瘦”的线性神经网络,有点分段函数的感觉。


Leaky ReLU and Parametric ReLU:

R e L U ReLU ReLU函数当输入小于 0 0 0时,此时梯度值也为0,则不会去更新参数了;为了让输入小于0时,也有比较小的梯度值,所以当输入小于0时, a = 0.001 ⋅ z a=0.001\cdot z a=0.001z;如下图:
在这里插入图片描述

这个激活函数就叫做 L e a k y   R e L U Leaky\ ReLU Leaky ReLU

为什么是 0.001 ⋅ z 0.001\cdot z 0.001z呢?据此问题提出了 P a r a m e t r i c   R e L U Parametric\ ReLU Parametric ReLU,如下图:

在这里插入图片描述

α α α也是需要学习的参数之一。


Maxout:

M a x o u t Maxout Maxout的想法是 L e a r n a b l e   a c t i v a t i o n   f u n c t i o n Learnable\ activation\ function Learnable activation function(激活函数也是可学习的)。

M a x o u t Maxout Maxout会将几个输入划分为一个 g r o u p group group,然后取最大值输出,如下图:

在这里插入图片描述

划分的 g r o u p group group M a x Max Max操作就可以看作原来的神经节点了。有点类似 C N N CNN CNN M a x   P o o l i n g Max\ Pooling Max Pooling

为什么 M a x o u t Maxout Maxout能够学习到不同的激活函数呢?

先看原来的ReLU神经节点,蓝色曲线是 z z z的图像,经过 R e L U ReLU ReLU后得到绿色曲线。

在这里插入图片描述

接下来看 M a x o u t Maxout Maxout,假设连接 z 2 z_2 z2的权重 w w w都是 0 0 0,如下图;分别画出 z 1 z_1 z1(蓝色)和 z 2 z_2 z2(红色)线条,再经过 M a x Max Max操作后,得到的就是绿色线条了,这正是 R e L U ReLU ReLU函数的曲线。

在这里插入图片描述

对于上图,将连接 z 2 z_2 z2的权重 w w w设置为非 0 0 0 w ′ w' w b ′ b' b,得到的激活函数就会发生改变,如下图:

在这里插入图片描述

所以 M a x o u t Maxout Maxout不仅能够学习到 R e L U ReLU ReLU,还能够学习不同的激活函数。

M a x o u t Maxout Maxout性质
可以实现任何的分段线性凸激活函数,有多少段取决于把多少个 e l e m e n t   z element\ z element z分为一个组,如下图:
在这里插入图片描述


How to train Maxout:

下图是 M a x o u t Maxout Maxout的结构图,假设红框部分是比较大的值,即 M a x Max Max操作后输出的是红框的部分的数值。

在这里插入图片描述
所以其余节点对输出并没有影响,从图中去掉,得到下图中的比较细长的 l i n e a r   n e t w o r k linear \ network linear network;训练 M a x o u t Maxout Maxout其实就是训练这个比较细长的 l i n e a r   n e t w o r k linear \ network linear network

在这里插入图片描述

所以在没有开始训练模型是,含有 m a x max max操作的 n e t w o r k network network是不能够进行微分的。当输入了一个具体的样本,此时 n e t w o r k network network就能够确定具体的形状,此时的 M a x Max Max操作就转换成了某个具体的函数,是能够进行微分的。

注意,对于不同的输入样本,会得到不同的细长的 l i n e a r   n e t w o r k linear \ network linear network;所以每次训练的 n e t w o r k network network都会是不同的,这能够确保每一个权重 w w w都会被训练。


Adaptive Learning Rate:

当数据在训练集上并没有得到很好的效果,可以尝试使用优化算法。

  1. Adagrad
    A d a g r a d Adagrad Adagrad公式:
    w t + 1 : = w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}:=w^t-\frac{\eta}{\sqrt{\sum ^t_{i=0}(g^i)^2}}g^t wt+1:=wti=0t(gi)2 ηgt
    t t t:第 t t t次梯度下降
    g i g^i gi:第 i i i次梯度下降的梯度值
    .
    思想:
    当之前的下降梯度都很大时,当前很可能已经在局部最优解附近了,所以需要缩小下降梯度;反之增大下降梯度。

  2. RMSProp
    吴恩达课程-RMSProp笔记
    R M S P r o p RMSProp RMSProp公式:
    w t + 1 = w t − η σ t g t (1) w^{t+1}=w^t-\frac{\eta}{σ^t}g^t \tag1 wt+1=wtσtηgt(1)
    σ t = α ( σ t − 1 ) 2 + ( 1 − α ) ( g t ) 2 (2) σ^t=\sqrt{α(σ^{t-1})^2+(1-α)(g^t)^2}\tag2 σt=α(σt1)2+(1α)(gt)2 (2)
    .
    思想:
    A d a g r a d Adagrad Adagrad考虑的是过去的所有梯度,对所有的梯度侧重都是一样的。
    R M S P r o p RMSProp RMSProp也考虑了过去的所有梯度,但是有侧重的考虑;它乘上了一个小于0的 α α α,表示更新当前的 w w w着重考前最近的梯度,较远的梯度对当前 w w w的梯度更新影响不大。

  3. Momentum
    吴恩达笔记,具体细节看这,本小节只做简单补充
    损失函数如下图所示,梯度下降就像是小球的滚落,朝着低谷( L o s s Loss Loss较小的地方)落去。小球很容易落到一些局部最优处,但是由于原本存在的动量,小球会继续滚动落入到一个地势更低的山谷。
    在这里插入图片描述
    将小球下落和动量的想法带入到学习率中去就是动量梯度下降算法了。

  4. Adam
    R M S P r o p RMSProp RMSProp M o m e n t u m Momentum Momentum的结合。吴恩达笔记


Early Stopping:

如果在训练集上 p e r f o r m e r performer performer比较好,然而在测试集上的 p e r f o r m e r performer performer,可以考虑 E a r l y   S t o p p i n g Early\ Stopping Early Stopping

具体的意思是可以提前停止训练,使模型处在一个训练集和测试集上 L o s s Loss Loss都比较低的状态,而不是一定要在测试集上 L o s s Loss Loss最低。

在这里插入图片描述

E a r l y   S t o p p i n g Early\ Stopping Early Stopping更多的会用在 T r a i n i n g   s e t Training\ set Training set V a l i d a t i o n   s e t Validation\ set Validation set上;因为 T e s t i n g   s e t Testing\ set Testing set可能是一个未知的数据集,实际使用时才会获取的数据集。

【平时说的 T e s t i n g   s e t Testing\ set Testing set一般说的是已知的用于测试数据集】


Regularization:

吴恩达笔记

如果在训练集上 p e r f o r m e r performer performer比较好,然而在测试集上的 p e r f o r m e r performer performer,也可以考虑 R e g u l a r i z a t i o n Regularization Regularization

正则化就是在损失函数后面加上一个惩罚项,经可能的在使 L o s s Loss Loss较低的同时,参数 w w w是一个接近于 0 0 0的参数。

  1. L 2   r e g u l a r i z a t i o n L2\ regularization L2 regularization:
    损失函数表达式:
    L ′ ( θ ) = L ( θ ) + λ 1 2 ​ ∣ ∣ θ ∣ ∣ 2 ​ L'(θ)=L(θ)+λ\frac{1}{2}​||θ||_2​ L(θ)=L(θ)+λ21​∣∣θ2
    梯度表示:
    ∂ L ′ ∂ w = ∂ L ∂ w + λ w \frac{∂L'}{∂w}=\frac{∂L}{∂w}+λw wL=wL+λw
    符号解释:
    θ = w 1 , w 2 , ⋯ θ={w_1,w_2,\cdots} θ=w1,w2,
    ∣ ∣ θ ∣ ∣ 2 = ( w 1 ) 2 + ( w 2 ) 2 + ⋯ ​ ||θ||_2=(w_1)^2+(w_2)^2+\cdots​ ∣∣θ2=(w1)2+(w2)2+第二范式
    L ( θ ) L(θ) L(θ):未加正则项的损失函数
    .
    参数更新过程如下图:
    在这里插入图片描述
    可以看出 L 2   r e g u l a r i z a t i o n L2\ regularization L2 regularization每次更新前都会缩小当前的参数再进行梯度下降

  2. L 1   r e g u l a r i z a t i o n L1\ regularization L1 regularization
    损失函数表达式:
    L ′ ( θ ) = L ( θ ) + λ 1 2 ​ ∣ ∣ θ ∣ ∣ 1 ​ L'(θ)=L(θ)+λ\frac{1}{2}​||θ||_1​ L(θ)=L(θ)+λ21​∣∣θ1
    梯度表示:
    ∂ L ′ ∂ w = ∂ L ∂ w + λ s g n ( w ) \frac{∂L'}{∂w}=\frac{∂L}{∂w}+λsgn(w) wL=wL+λsgn(w)
    符号解释:
    ∣ ∣ θ ∣ ∣ 1 = ∣ w 1 ∣ + ∣ w 2 ∣ + ⋯ ​ ||θ||_1=|w_1|+|w_2|+\cdots​ ∣∣θ1=w1+w2+第一范式
    .
    s g n ( w ) sgn(w) sgn(w) ∣ ∣ θ ∣ ∣ 1 ||θ||_1 ∣∣θ1包含绝对值,其实就是一个 V V V字形的图像;所以当 w w w大于0,微分值为1;小于0时为-1;等于0时就随便赋值,比如说0。 s g n ( w ) sgn(w) sgn(w)就是当 w w w大于0时就是一个正数,小于0时是一个负数,等于0时就是0。
    .
    参数更新过程如下:
    在这里插入图片描述
    可以看出 L 1   r e g u l a r i z a t i o n L1\ regularization L1 regularization每次更新都会减去一个固定数值

  3. L 1   r e g u l a r i z a t i o n L1\ regularization L1 regularization VS L2 regularization:
    .
    L 2   r e g u l a r i z a t i o n L2\ regularization L2 regularization每次更新前都会缩小当前的参数再进行梯度下降;
    L 1   r e g u l a r i z a t i o n L1\ regularization L1 regularization每次更新都会减去一个固定数值。
    .
    当参数 w w w的绝对值比较大的时候, L 2 L2 L2会让 w w w下降得更快,而 L 1 L1 L1每次更新只让 w w w减去一个固定的值,训练完以后可能还会有很多比较大的参数;当参数 w w w的绝对值比较小的时候, L 2 L2 L2的下降速度就会变得很慢,训练出来的参数平均都是比较小的,而 L 1 L1 L1每次下降一个固定的值,训练出来的参数有很多是接近0的值,也会有很大的值。
    .
    之前 C N N CNN CNN手写数字可视化的例子中使用的正则项就很适合使用 L 1 L1 L1,因为我们想让大部分的值都很小(空白处多一些),小部分值大一些(笔迹部分)。

其实 E a r l y   S t o p p i n g Early\ Stopping Early Stopping r e g u l a r i z a t i o n regularization regularization做的事情是类似的。我么在训练 D e e p   L e a r n i n g Deep\ Learning Deep Learning时会将参数 θ θ θ设置成接近于0的值,而 u p d a t e update update的过程就是让 θ θ θ远离0的过程;而 E a r l y   S t o p p i n g Early\ Stopping Early Stopping就是提前终止 u p d a t e update update,就是停止 θ θ θ远离0的这一过程。


Dropout:

吴恩达笔记

如果在训练集上 p e r f o r m e r performer performer比较好,然而在测试集上的 p e r f o r m e r performer performer,也可以考虑 D r o p o u t Dropout Dropout

Dropout就是使一些节点完全失效,每个节点失效的概率是 p p p(需要人为设置)。如下图,打叉的部分就是被失效的节点。

在这里插入图片描述

这些失效的节点对最后的输出并没有影响,所以得到了一个细长的神经网络,如下图:

在这里插入图片描述
对于每个mini-batch data,都会进行 D r o p o u t Dropout Dropout,即每个mini-batch都会得到不同的细长的神经网络。

还有一些细节:
我们只有在训练时才会执行 D r o p o u t Dropout Dropout,测试时会使用全部的神经节点。当 D r o p o u t   r a t e Dropout\ rate Dropout rate p p p时,在测试时会将权重 w w w都乘上 ( 1 − p ) (1-p) (1p)

为什么要成上 ( 1 − p ) (1-p) (1p)呢?

举一个直观的例子,假设 p = 0.5 p=0.5 p=0.5,如下图,一半的神经节点在训练时失效了,但是在测试时会使用全部的神经节点;所以最后得到的结果可能是训练时的 2 2 2倍,所以需要乘上 0.5 0.5 0.5来弥补失效节点带来的影响。

在这里插入图片描述


Dropout is a kind of ensemble:

为什么Dropout 会有作用呢?
有一种解释是:Dropout is a kind of ensemble。

ensemble的思想:
有一个很大的训练姐,每次训练都从其中随机采样一部分数据,如下图:
在这里插入图片描述

对于这些数据可以搭建不痛的模型去拟合,所以最后会得到很多不一样的预测值 y y y,如下图;然后把这些结果平均起来当做最后的输出通常会比较准确。

在这里插入图片描述

对于 D r o p o u t Dropout Dropout也是类似的,对于不同的minibatch都对应着不同的 n e t w o r k network network,如下图;如果有 M M M个神经节点,就会有 2 M 2^M 2M种不同的 n e t w o r k   s t r u c t u r e . network \ structure. network structure.

在这里插入图片描述

注意,虽然一个 n e t w o r k network network只能用一个minibatch进行训练,但权重 w w w可以在不同的 n e t w o r k network network里被不同的minibatch训练,所以同一个权重 w w w实际上是被所有没有丢掉它的 n e t w o r k network network一起共享的,是所有包含这个权重 w w w n e t w o r k network network共同训练的成果。

在测试集上进行预测时,使用的是所有的神经节点和权重。将测试时的权重乘上 ( 1 − p ) (1-p) (1p)得出得结果和不同minibatch预测结果得平均是相近得,如下图:

在这里插入图片描述

举一个具体得例子:
下图种 p p p设置为 0.5 0.5 0.5,左边为Dropout过程,右边为测试过程。
在这里插入图片描述

一般只有在线性网络种才会得到上图的等值关系;虽然在非线性网络种是不等值的关系,但是dropout依然可以使用。

当神经网络接近于线性使,dropout的效果会比较好;因此,通常会将 R e L U ReLU ReLU M a x o u t Maxout Maxout的神经网络与 D r o p o u t Dropout Dropout搭配使用。

总结图片

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值