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

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

  •  
  •   datayes2015 2016-12-02 11:01:39 +08:00 3597 次点击
    这是一个创建于 3286 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前言
    梯度下降法( Gradient escent )是机器学习中最常用的优化方法之一,常用来求解目标函数的极值。
    其基本原理非常简单:沿着目标函数梯度下降的方向搜索极小值(也可以沿着梯度上升的方向搜索极大值)。
    在《 [ Python 机器学习] 梯度下降法(一)》中简单分析了学习率大小对搜索过程的影响,发现:

    学习率较小时,收敛到极值的速度较慢。
    学习率较大时,容易在搜索过程中发生震荡。
    本次介绍“冲量”的原理以及如何用“冲量”来解决上述两个问题。

    冲量: momentum
    “冲量”这个概念源自于物理中的力学,表示力对时间的积累效应。

    在普通的梯度下降法 x += v 中,每次 x 的更新量 v 为 v = - dx × lr ,其中 dx 为目标函数 func(x)对 x 的一阶导数。
    当使用冲量时,则把每次 x 的更新量 v 考虑为本次的梯度下降量 - dx × lr 与上次 x 的更新量 v 乘上一个介于 [0, 1] 的因子 momentum 的和,即 v = - dx × lr + v × momemtum 。
    从公式上可看出:

    当本次梯度下降 dx × lr 的方向与上次更新量 v 的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
    当本次梯度下降 - dx × lr 的方向与上次更新量 v 的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。

    为了板式的清晰,完整实盘代码请戳: https://uqer.io/community/share/58204d90228e5ba8f357140a

    为了查看 momentum 大小对不同学习率的影响,此处设置
    学习率为 lr = [0.01, 0.1, 0.6, 0.9]
    冲量依次为 momentum = [0.0, 0.1, 0.5, 0.9]
    起始位置为 x_start = -5
    迭代周期为 6
    测试以及绘图代码如下: https://uqer.io/community/share/58204d90228e5ba8f357140a


    运行结果如上图所示,每一行的图的学习率 lr 一样,每一列的 momentum 一样,最左列为不使用 momentum 时的收敛情况。

    从第一行可看出:在学习率较小的时候,适当的 momentum 能够起到一个加速收敛速度的作用。
    从第四行可看出:在学习率较大的时候,适当的 momentum 能够起到一个减小收敛时震荡幅度的作用。
    6 条回复    2016-12-05 22:28:02 +08:00
    zhangyh26258
        1
    zhangyh26258  
       2016-12-05 10:26:15 +08:00
    不错不错~~~
    lisir
        2
    lisir  
       2016-12-05 13:57:33 +08:00
    mark
    Xs0ul
        3
    Xs0ul  
       2016-12-05 13:59:46 +08:00 via Android
    按照我学的物理, momentum 是动量, impulse 才是冲量(
    happyZX
        4
    happyZX  
       2016-12-05 20:48:13 +08:00
    学习了~~
    SCaffrey
        5
    SCaffrey  
       2016-12-05 22:23:49 +08:00 via iPad
    我翻了一下 选修 3-5 3 楼说的是对的
    ryd994
        6
    ryd994  
       2016-12-05 22:28:02 +08:00
    这是 numerical computing ,强行往机器学习上靠……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5719 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 03:06 PVG 11:06 LAX 19:06 JFK 22:06
    Do have faith in what you're doing.
    ubao msn 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