6.3-训练DNN的技巧

发布于:2023-01-16 ⋅ 阅读:(493) ⋅ 点赞:(0)

一、新的激活函数(New activation function)

  • 比较常用的激活函数是sigmod函数,下图是在多层网络出现的一些问题
    • 消失梯度问题(Vanishing Gradient Problem):网络在输入层附近梯度比较小,学习得非常慢,结果几乎是随机的。而在输出层附近时梯度比较大,学习得非常快,几乎很快收敛。为了提高输入层附近的网络对最终结果的影响,有人提出了新的激活函数ReLU

image-20220814141517243image-20220814141617054

image-20220814141941886image-20220814142058305

image-20220814160117277

1.1 校正线性单元(Rectified Linear Unit)

  • 如下图ReLU的原理是当输入小于0时,输出等于0;输入大于0时,输出等于输入。
  • ReLU会让网络中等于0的神经元失去作用,从而使网络变得细长而且线性。
  • ReLU也有一些变种:如𝐿𝑒𝑎𝑘𝑦𝑅𝑒𝐿𝑈,𝑃𝑎𝑟𝑎𝑚𝑒𝑡𝑟𝑖𝑐𝑅𝑒𝐿𝑈

image-20220814160554046image-20220814160610602

image-20220814160634950image-20220814160817981

1.2 Maxout

  • ReLU是Maxout的一个特例,也就是说Maxout可以产生和ReLU一模一样的效果。
  • Maxout的原理就是取两个输出中的较大值:即max{z1,z2}
  • 根据Maxout的特性,不难推出在每一笔数据输入时,都会产生不一样的线性网络,从而保证了网络的每个权重都有被训练到。

image-20220814162359293image-20220814162446388

image-20220814162508715image-20220814162536605

image-20220814163209956image-20220814163229355

二、自适应学习率(Adaptive Learning Rate)

  • 复习Adagrad:在平缓的地方学习率设置的比较低,在陡峭的地方学习率设置的比较高。
  • RMSProp:实际上当我们训练神经网络时,误差面会非常复杂。就算是在一个方向上也有可能时而平缓,时而陡峭。而RMSProp则很好的解决了这个问题
  • 实际上我们在一个较为复杂的神经网络里是很难找到多个局部最优解的,一般都只有一个全局最优解。网络越复杂,全局最优解的概率越高。

image-20220814164623667image-20220814164718170

image-20220814164729238image-20220814164746428

image-20220814164802237image-20220814164818592

2.1 Momentum

  • Momentum是用来模拟真实世界中物体的惯性,一般的梯度下降加入Momentum后,是下图这个样子的
  • 当一个局部最优解不是太深时,Momentum是可以跳出这个局部最优解,到达一个更好的局部最优解或全局最优解
  • Adam:由RMSProp和Momentum组成的梯度下降

image-20220814170036668image-20220814170153706

image-20220814170220597image-20220814170246594

三、提前停止(Early Stopping)

  • 通过验证集来提前停止模型的训练
image-20220815181858233

四、正则化(Regularization)

  • 正则化是为了使模型更加平滑,左图中 ∣ ∣ θ ∣ ∣ 2 ||\theta||_2 ∣∣θ2就是L2 正则化,相当于在loss函数中加了正则化这一项。
  • 权重衰减(Weight Decay):右图是L2正则化梯度下降的式子,由于每次权重w更新时都要乘 1 − η λ 1-\eta\lambda 1ηλ ,因此也被称为权重衰减
  • L1正则化:L1实际是每次参数更新时减去一个固定的值,而L2是乘一个小于1的固定的值

image-20220815182103065image-20220815182132762

image-20220815191824454image-20220815191846442

五、删除(dropout)

  • 训练时:每个神经元在参数更新时都有p%的概率被删除,因此dropout会改变网络的结构,使网络变得细长
  • 测试时:若训练时的删除概率(dropout rate)是p%,则测试时所有的权重w都要乘1-p%,并且参数更新时不会删除神经元。
  • 使用dropout的原因:
    • 训练时负重,实战时就能表现得更好
    • 在一个团队中,总有人摆烂,其他人就需要做的更好,在最终测试时表现也会更好

image-20220815192445839image-20220815192457846

image-20220815192515764image-20220815192542226

image-20220815193702017image-20220815193735436

5.1 Ensemble

  • Ensemble:将训练集拆分为多个子训练集,然后进行训练,最后将所有的模型平均起来。由于将多个网络输出的结果进行平均是一件计算量很大的事情,所以我们将权重w乘1-p%来代替计算这件事。

image-20220815194132090image-20220815194156169

image-20220815194211361image-20220815194226018

image-20220815195014652image-20220815195050310

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到