机器学习06-如何对深度学习模型进行调优

东阳的学习记录,坚持就是胜利

技巧1:不要总是让过拟合背锅

下图表示了深度学习的过程:

  • 经过神经网络训练出来的模型如果在训练集上表现良好,但是在测试集上表现不好,那这就是过拟合;
  • 如果在训练集上都没有比较好的结果,这个时候就不是过拟合的锅,而应该考虑是其他原因
    在这里插入图片描述
    在这里插入图片描述

正确地处理方法

针对训练集和测试集(),我们需要做不同的处理。如下图:

  • 当在训练集上效果很差时:
    • 调整学习率
    • 更换激活函数
  • 当在测试集效果不好时:
    • 提前终止训练(将测试集分出Validation Set)
    • 正则化(正则化的效果并不是很好???)
    • Dropout(会降低训练集的准确率,增加测试集的准确率)
      在这里插入图片描述

技巧2:在测试集上效果不好的处理

1. 梯度消失

在这里插入图片描述

为什么会发生梯度消失

我们来看下面这张图:
在这里插入图片描述
按照极限的思想,输出结果l对权重w求导即梯度的公式:
在这里插入图片描述
我们可以看到,如果网络结构很复杂,输入数据多次经过激活函数(sigmoid)后, δ ( l ) \delta(l) δ(l)将会远小于 δ ( w ) \delta(w) δ(w),从而造成梯度消失。

如何解决梯度消失
使用ReLU
  • 更快收敛
  • 生物上的理由
  • 无穷多不同bias的sigmoid函数叠加的结果
  • 可以解决梯度消失的问题(不会有smaller gradients)
    在这里插入图片描述
ReLU - variant
  • Leaky ReLU
  • Parametric ReLU
Maxout

Maxout是ReLU的一般化,见下图:
在这里插入图片描述
如上图,maxout做的工作就是将上一层输出的结果进行group,并输出其中最大值(类似于最大池化)。结果如下。
在这里插入图片描述
在这里插入图片描述
分组中元素个数不同,可以得到不同形状的激活函数
在这里插入图片描述
注意:maxout并不会导致有很多的参数缺失,因为对于每一个输入,都会得到不同的结果,最后,每一个参数都能够被训练到。

2. 调整学习率

即优化器的选择。

Adagrad

在这里插入图片描述

RMSProp

每一次的学习率都除上一个 δ 0 \delta_0 δ0. 这个 δ 0 \delta_0 δ0等于参数a * 上一次的 δ 0 2 \delta_0^2 δ02 + (1-a)这一次梯度 g 2 g^2 g2
在这里插入图片描述

动量法(Momentum)

在实际应用中常常不能找到全局的最优点。使用动量法可以一定程度上避免定六再局部最优点或者是平台点。

**注意:**并不用过分担心这个问题,在实际问题中,模型往往十分复杂,局部最优解的条件亦十分苛刻(需要在每一个方向上的导数都为0(或小于设定值))。
![在这里插在这里插入图片描述
从上图可以看到,在Momentum中,参数更新的方向等于梯度下降的方向和上一次参数更新方向的矢量和。如下图,类似于物理中的惯性概念。借助惯性可能翻过山坡!!!
在这里插入图片描述

Adam

即为:RMSProp + Momentum

技巧3:训练集上表现好测试集上表现不好(过拟合)

1. 提前终止训练

将训练集划出一部分做Validation Set,让训练收敛于验证集的最低点,而不是训练集的最低点。
在这里插入图片描述

2. 正则化

正则化的目的是使得训练出来的参数更小,函数曲线更平滑,增加模型的抗干扰能力。

L1正则化

在这里插入图片描述
在这里插入图片描述
L1的操作是,当参数大于0时减去一个正数,小于0时,减去一个负数,通过这种方法,使得系数接近于0.

L2正则化

在这里插入图片描述
在这里插入图片描述

L1正则化和L2正则化的区别

从以上分析可以看出L1正则化和L2正则化使得参数趋于0的原理是不同的,L1正则化是通过减去一个值使得参数趋于0,L2正则化是通过乘以一个小于1的数使得参数趋于0.

  • 在经过L1正则化后,得到的米性参数中仍然含有比较大的值;
  • L2正则化后,参数分布更均匀,总体趋于0,并没有很大的参数。

3. Dropout

每次更新参数之前,对网络中的神经元以概率p决定是否丢弃。
在这里插入图片描述

注意:
  1. 在训练集Dropout,测试集不需要Dropout
  2. 在训练集经过dropout后,在测试时,需要将w的值乘以(1-p),例如,若以0.5的概率dropout,训练得到的w=1, 则测试时设置w=0.5.
  3. dropout在线性网络中的表现更好。(可以配合ReLU和Maxout使用)
为什么Dropout有用
形象的理解

当参数变少时,单个参数被更好地训练了!!!
在这里插入图片描述

一个正式的理由(Ensemble集成学习的思想)

将每个minibatch使用dropout得到的不同模型(因随机丢弃神经元,可视为不同的models)的参数求平均值。这些不同网络的参数时共享的。
在这里插入图片描述
在这里插入图片描述

为什么dropout后的参数需要乘上(1-p)

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东阳z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值