Dropout和学习率衰减

     Dropout 

  在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。

  过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。

  综上所述,训练深度神经网络的时候,总是会遇到两大缺点:

  •   容易过拟合
  •   费时

  Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。Dropout是在训练过程中,随机地忽略部分神经元。也就是说,在正向传播过程中,这些被忽略的神经元对下游神经元的贡献效果暂时消失;在反向传播时,这些神经元也不会有任何权值的更新。

  Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。

  隐含节点Dropout率等于0.5的时候效果最好,此时Dropout随机生成的网络结构最多。

  学习率衰减

  学习率决定了参数移动到最优值是的速度。如果学习率过大,很可能会越过最优值;反之,如果学习率过小,优化的效率可能过低,长时间算法无法收敛。学习率衰减可以平衡两者之间矛盾。

  基本思想:学习率随着训练的进行逐渐衰减。在训练过程开始时,使用较大的学习率值,可以使结果快速收敛,随着训练的进行,逐步降低学习率和收敛的速度,有助于找到最优结果。

  目前比较流行两种学习率衰减方法:线性衰减和指数衰减。

  1.线性衰减

  Learning Rate = Learning Rate * 1/(1 + decay * epoch)

  2.指数衰减

  Learning Rate = Initial Learning Rate * Drop Ratefloor[(1 + Epoch)/Epoch Drop]

  decay为衰减率,epoch为迭代数。

猜你喜欢

转载自www.cnblogs.com/Johnny-z6951/p/10574971.html