zoukankan      html  css  js  c++  java
  • 梯度下降法与迭代结束条件



        一个多元函数的梯度方向是该函数值增大最陡的方向。对于一元函数而言,梯度方向是沿着曲线切线的,然后取切线向上增长的方向为梯度方向。对于二元或多元函数而言,梯度向量为函数F对每个变量的导数,该向量的方向就是梯度的方向。

        上图为一元二次函数的曲线图,可以看出:在最低点的左边部分,每一点的梯度方向值都是负值,因为每一点的斜率都是小于0的,所以当变量沿着梯度的方向递进,函数值越来越大,从上图可以很明显看出;同理右边,每一点的梯度方向都是大于0的,所以沿着梯度方向,函数值也是越来越大。所以,函数的梯度方向总是函数值越来越大的方向。因此,我们要想求最小值,就应该沿着梯度的反方向进行,这正是梯度下降法的原理。

    梯度下降法(梯度上升法应该也适用)迭代结束的条件,常用的有两种:

    、定义一个合理的阈值,当两次迭代之间的差值小于该阈值时,迭代结束。

    、设置一个大概的迭代步数,比如1000或500,梯度下降法最终的迭代肯定会收敛,只要达到相应迭代次数,多了也没关系。因为迭代次数多了后,在

    到达极值点时,函数对变量的导数已近乎为0,即使过了极值点,导数就变为正数了,之前的导数为负数。这个时候,变量x的值减去步长与导数的乘

    积反倒变小了所以即使步数多了,结果也基本上就在极值点处左右徘徊,几乎等于极值点,因此没有问题

     为什么梯度是下降最快的方向呢?

    其实下降最快的方向在数学上被称为梯度方向而已,所以并不是什么梯度下降最快,而是最快的方向就被定义为梯度。那么什么方向下降最快呢,所谓下降最快其实就是这一点的斜率最大的方向

    上图Duf(x,y)表示的是曲面上任意方向的变化速率,即该点对应的斜率,因为曲面上过某点的切线有无数条,曲线上是只有一条。

    根据上述解释我们举例函数z=x+y,依据上面推到则A=(1,1),I=(cosθ,sinθ),θ是任意变化速率方向与X轴的夹角,如下图所示:

     所以当向量I转到与A平行的时候,方向导数最大,因为这个时候I跟A的夹角为0,斜率就等于|A|=√(12+12)=√2 ,此时I与X轴与y轴的夹角都为45°,因为A的方向是(1,1),所以这个时候sinθ和cosθ都是1/√2,然后fx(x,y)sinθ+fy(x,y)cosθ=√2 。

    从几何图示上来解释,其实我们求的这个斜率就是针对x,y的变化,所引起的z轴数值的变化速率,当x,y从点(0,0)沿着梯度方向(1,1)变化的时候,z值由0变成了2,如下图所示:

    而x和y共同走的是下面的√2,所以斜率为2/√2=√2。同理如果梯度是(1,2),则梯度方向的斜率为√5,几何意义参考上图

    参考:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247483704&idx=1&sn=8f0c6e33ef84c26823e562be16bce684&chksm=ebb439ecdcc3b0fa4e9571deb33ccea62e42034c88db4e190633588307dce4a1e0c91ed2635c&scene=21#wechat_redirect

  • 相关阅读:
    bzoj2564: 集合的面积(闵可夫斯基和 凸包)
    省选前做题记录
    loj#2978. 「THUSCH 2017」杜老师(乱搞)
    loj#6437. 「PKUSC2018」PKUSC(计算几何)
    洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
    loj#6436. 「PKUSC2018」神仙的游戏(NTT)
    洛谷P4459/loj#2511 [BJOI2018]双人猜数游戏(博弈论)
    洛谷P4458 /loj#2512.[BJOI2018]链上二次求和(线段树)
    洛谷P4457/loj#2513 [BJOI2018]治疗之雨(高斯消元+概率期望)
    loj#6435. 「PKUSC2018」星际穿越(倍增)
  • 原文地址:https://www.cnblogs.com/gczr/p/6381603.html
Copyright © 2011-2022 走看看