[Python 机器学习] 梯度下降法(三) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
datayes2015
V2EX    推广

[Python 机器学习] 梯度下降法(三)

  •  
  •   datayes2015 2016-12-05 14:16:49 +08:00 3301 次点击
    这是一个创建于 3231 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前言
    梯度下降法( Gradient escent )是机器学习中最常用的优化方法之一,常用来求解目标函数的极值。
    其基本原理非常简单:沿着目标函数梯度下降的方向搜索极小值(也可以沿着梯度上升的方向搜索极大值)。

    在《 [ Python 机器学习] 梯度下降法(一)》中简单分析了学习率大小对搜索过程的影响,发现:

    学习率较小时,收敛到极值的速度较慢。
    学习率较大时,容易在搜索过程中发生震荡。

    在《 [ Python 机器学习] 梯度下降法(二)》中简单分析了冲量对搜索过程的影响,发现:

    在学习率较小的时候,适当的 momentum 能够起到一个加速收敛速度的作用。
    在学习率较大的时候,适当的 momentum 能够起到一个减小收敛时震荡幅度的作用。

    接下来介绍梯度下降法中的第三个超参数: decay 。

    学习率衰减因子: decay

    为了板式的清晰,完整回测代码请戳: https://uqer.io/community/share/5820515e228e5ba8f5571953



    从上图可看出,学习率较大时,容易在搜索过程中发生震荡,而发生震荡的根本原因无非就是搜索的步长迈的太大了。

    在使用梯度下降法求解目标函数 func(x) = x * x 的极小值时,更新公式为 x += v ,其中每次 x 的更新量 v 为 v = - dx * lr , dx 为目标函数 func(x) 对 x 的一阶导数。如果能够让 lr 随着迭代周期不断衰减变小,那么搜索时迈的步长就能不断减少以减缓震荡。学习率衰减因子由此诞生:

    lr_i = lr_start * 1.0 / (1.0 + decay * i)

    上面的公式即为学习率衰减公式,其中 lr_i 为第 i 次迭代时的学习率, lr_start 为原始学习率, decay 为 一个介于[0.0, 1.0]的小数。

    decay 越小,学习率衰减地越慢,当 decay = 0 时,学习率保持不变。
    decay 越大,学习率衰减地越快,当 decay = 1 时,学习率衰减最快。

    测试以及绘图代码如下: https://uqer.io/community/share/5820515e228e5ba8f5571953



    在所有行中均可以看出, decay 越大,学习率衰减地越快。
    在第三行与第四行可看到, decay 确实能够对震荡起到减缓的作用。

    起始学习率为 1.0
    decay 为[0.0, 0.001, 0.1, 0.5, 0.9, 0.99]
    迭代周期为 300

    测试以及绘图代码如下: https://uqer.io/community/share/5820515e228e5ba8f5571953



    可以看到,当 decay 为 0.1 时, 50 次迭代后学习率已从 1.0 急剧降低到了 0.2 。如果 decay 设置得太大,则可能会收敛到一个不是极值的地方呢。
    1 条回复    2016-12-08 10:12:11 +08:00
    xiamx
        1
    xiamx  
       2016-12-08 10:12:11 +08:00
    很棒! OP 什么时候讲一下 epoch 的作用和调参呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1017 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:50 PVG 06:50 LAX 15:50 JFK 18:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86