深度学习——P14 tips for training DNN

DNN(Deep Neural Network)

关于深度神经网络(Deep Neural Network)训练过程中的一些方法和技巧

机器学习三步骤

在这里插入图片描述

如果model在testing data上得到的结果不好就一定是过拟合吗
并不是,我们要回到training data上进行测试

  • 如果在training data上的结果就是不好的,那说明这个model本身就不好,并不是因为overfitting
  • 如果在training data上的结果是好的,在testing data上得到的结果不好,此时才叫overfitting

关于testing/training data不好的解决方案

不同情况下的解决方法:

  • 当训练结果不好时,可以考虑:
    新的激活函数(New activation function)
    自动调整学习率(Adaptive Learning Rate)
  • 当测试结果不好时,可以考虑:
    提前终止(Early Stopping)
    正则化(Regularization)
    Dropout
    在这里插入图片描述

具体介绍这些对应方法

当training data结果不好的时候,一个可能的原因就是梯度下降
为什么会出现梯度消失?
拿激活函数sigmod来说,当输入改变很大的时候,输出的变化很小,神经网络的模型结构决定了:接近输出层y 的隐藏层,梯度大、学习快,当它们很快收敛的时候,接近输入层x 的隐藏层,梯度小、学习慢,参数几乎还是随机的。因此,模型训练后在训练集上的结果不好。
?

①新的激活函数

  1. ReLU
    在这里插入图片描述
    假设有这样一个network,部分neuron的输出是0,那么有ReLU函数可知,当某个neuron是0的时候,其实对最后的output没有影响,可以删去
    在这里插入图片描述
    那么最后的结果就变成一个Linear的function了,(但其实我们用deep就是不想要linear的,我们需要一个复杂的network structure)而且很不好的是,没有办法微分了
    在这里插入图片描述
    有些人为了是z小于0的时候也能微分,也能decent,就提出了下面的函数
  2. ReLU的变体:Leaky ReLU、Parametric ReLU
    在这里插入图片描述
    3. Maxout
    将同一层的几个神经元(个数需要自己设定)绑定为一组,下一层的输入取每组里的输出的最大值。类似于卷积神经网络的Max Pooling(在CNN这一章会讲到)
    在这里插入图片描述
    Maxout也能用ReLU,即做到ReLU可以做的事
    在这里插入图片描述
    同时Maxout可以做的比ReLU更多
    在这里插入图片描述
    在这里插入图片描述

②自动调整学习率

  1. Adagrad
    在这里插入图片描述
  2. RMSProp
    可以改变α的值:α 小,倾向于相信新的梯度;α 大,倾向于相信旧的梯度
    在这里插入图片描述
  3. Momentum
    在这里插入图片描述
    更新公式
    在这里插入图片描述
  4. Adam
    在这里插入图片描述

以上都是在testing data得到不好的结果的应对措施
接下来就是在training data上得到不好的结果的应对措施

③提前终止(early stopping)

不是终止在training set最小的地方,是终止在testing最小的地方
在这里插入图片描述
补充:
训练集(train set) 验证集(validation set) 测试集(test set)
一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。
样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。
training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。

④正则化

L1 训练结果:权重会比较稀疏,有的参数很小,接近于0;有的参数很大。
L2 训练结果:平均都比较小。
在这里插入图片描述
在这里插入图片描述

⑤Dropout

训练深度神经网络的时候,总是会遇到两大缺点:
(1)容易过拟合
(2)费时
Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。
训练的时候,每次sample之前,都看一下每一个neuron会不会被丢掉,每个neuron被丢弃的概率是p%,当一个neuron被丢掉,跟它相邻的weight也失去作用被丢掉,network structure会改变,所以每一次调整参数的时候,拿来训练的network是不一样的,所以都要重新sample
在training的时候dropout效果会变差
在这里插入图片描述
测试的时候,不需要 dropout,如果训练时,丢弃神经元的概率是p% ,测试时,所有权重都要乘(1−p%) .
在这里插入图片描述
在这里插入图片描述
Dropout 是一种集成学习方法:
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值