zoukankan      html  css  js  c++  java
  • 如何设置学习率

    学习率的调整

    从梯度下降算法的角度来说,通过选择合适的学习率,可以使梯度下降法得到更好的性能。学习率,即参数到达最优值过程的速度快慢,如Andrew Ng的Stanford公开课程所说,假如你从山峰的最高点根据梯度下降法寻找最优值,当你学习率过大,即下降的快,步子大,那么你很可能会在某一步跨过最优值,当你学习率过小时,每次下降一厘米,这将走到何年何月呀,用术语来说就是,长时间无法收敛。因此,学习率直接决定着学习算法的性能表现。

    • 可以根据数据集的大小来选择合适的学习率,当使用平方误差和作为成本函数时,随着数据量的增多,学习率应该被设置为相应更小的值(从梯度下降算法的原理可以分析得出)。另一种方法就是,选择不受数据集大小影响的成本函数-均值平方差函数。

    • 在不同的迭代中选择不同的学习率,还是用前面下山的例子来解释,当你大概知道最优值离你还挺远时,你肯定不会一步一厘米的去走,你肯定会大跨步走到离最优值不远的地方,然后再用小碎步来慢慢找到最优值。即,在最初的迭代中,学习率可以大一些,快接近时,学习率小一些。问题就出在这里,有人会说,我要是知道了最优值,还有梯度下降算法什么事,说的也对,那么我们是怎么解决的呢,我们在每次迭代后,使用估计的模型的参数来查看误差函数的值,如果相对于上一次迭代,错误率减少了,就可以增大学习率如果相对于上一次迭代,错误率增大了,那么应该重新设置上一轮迭代的值,并且减少学习率到之前的50%。因此,这是一种学习率自适应调节的方法。

    • 一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10

     

    深度学习如何设置学习率

    学习率是深度学习中的一个重要的超参,如何调整学习率是训练出好模型的关键要素之一。在通过SGD求解问题的极小值时,梯度不能太大,也不能太小。太大容易出现超调现象,即在极值点两端不断发散,或是剧烈震荡,总之随着迭代次数增大loss没有减小的趋势;太小会导致无法快速地找到好的下降的方向,随着迭代次数增大loss基本不变。

    因此,我们常常用一些退火的方法调整学习率。学习率调整方法基本上有两种

    1. 基于经验的手动调整。 通过尝试不同的固定学习率,如0.1, 0.01, 0.001等,观察迭代次数和loss的变化关系,找到loss下降最快关系对应的学习率。

    2. 基于策略的调整。

       2.1 fixed 、exponential、polynomial

       2.2. 自适应动态调整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd

     

  • 相关阅读:
    POJ 3660 Cow Contest (floyd求联通关系)
    POJ 3660 Cow Contest (最短路dijkstra)
    POJ 1860 Currency Exchange (bellman-ford判负环)
    POJ 3268 Silver Cow Party (最短路dijkstra)
    POJ 1679 The Unique MST (最小生成树)
    POJ 3026 Borg Maze (最小生成树)
    HDU 4891 The Great Pan (模拟)
    HDU 4950 Monster (水题)
    URAL 2040 Palindromes and Super Abilities 2 (回文自动机)
    URAL 2037 Richness of binary words (回文子串,找规律)
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9714649.html
Copyright © 2011-2022 走看看