梯度下降法总结

梯度下降法的基本形式:

一、算法
1、选择initial x x x ( 0 ) (0) (0)

2、选择梯度下降方向以及下降步长

3、判断停止准则

4、继续更新 x x x ( k ) (k) (k) x x x ( k + 1 ) (k+1) (k+1) = = = x x x ( k ) (k) (k) − α k d -\alpha_kd αkd(k)

5、返回第2步

注:一般而言,对于一个下降法,主要是对其下降方向以及下降步长的把握。对于梯度gradient,切线方向 ∇ f ( x ) \nabla f(x) f(x)是下降最快的方向,证明可参考最优化理论一书。所以接下来对步长进行考虑

(一)、固定步长下降法

α k = c o n s t a n t \alpha_k=constant αk=constant,
即:
S1: d k = − ∇ f d_k=-\nabla f dk=f(x ( k ) (k) (k))
S2: α k = c o n s t a n t \alpha_k=constant αk=constant
S3: x x x ( k + 1 ) (k+1) (k+1) = = = x x x ( k ) (k) (k) − α k d k -\alpha_kd_k αkdk

(二)、最速梯度下降法:

改变下降步长:
α k = \alpha_k= αk= a r g m i n argmin argmin α > 0 \alpha>0 α>0 f f f( x x x ( k ) (k) (k)- α k \alpha_k αk ∇ f \nabla f f( x x x ( k ) (k) (k))在这里插入图片描述从上图中可看出最速梯度下降法的原理:每次出发依从负梯度方向直到寻找到满足停机准则的最小 x x x ( k + 1 ) (k+1) (k+1)。对于最速而言,是由于在每个点下降时都是一个 m i n min min,但是也有缺陷,它可能无限次接近最优点,所以一个好的停机准则或迭代次数是必须的。

(三)、牛顿下降法

根据泰勒展开: f ( x ) ≈ f f(x)≈f f(x)f(x ( k ) (k) (k)) + + +( x − x x-x xx(k)) g g g(k) + 1 2 +\frac{1}{2} +21( x − x x-x xx(k)) F F F ( x (x (x(k))( x − x x-x xx(k)),两边求导得到牛顿下降法的迭代公式:
x x x ( k + 1 ) (k+1) (k+1) = = = x x x ( k ) (k) (k) − - F F F ( x (x (x(k))-1 g g g(k)
当初始点接近于最优点的时候,牛顿法的收敛速度更快,但是若初始点选的不好会出现不能收敛到最优点的情况。特别的是,该方法可能不是下降算法,缺陷比较大,需要正确情况正确选择。

(四)、共轭梯度法

Q Q Q 共 轭 D 定 义 : 共轭D定义: D d 1 Q d 2 = 0 , 则 d 1 和 d 2 Q 共 轭 d_1Qd_2=0,则d_1和d_2Q共轭 d1Qd2=0d1d2Q
寻找一组正交基代表梯度下降方向,根据二次型矩阵Q的维数来决定基的个数。如何寻找:1、直接建立根据定义,先任意一个非0的向量,再根据定义法求得。2、Gram-Schmidt ,斯密斯正交变换。
基本算法:假设已寻找到一组共轭基 d d d(k), k = 0 , 1 , 2 , . . . , n − 1 k=0,1,2,...,n-1 k=0,1,2,...,n1,
给定初始点 x x x ( 0 ) (0) (0)
g ( k ) = ∇ f ( x ( k ) ) = Q x ( k ) − b α k = − g ( k ) ⊤ d ( k ) d ( k ) ⊤ Q d ( k ) x ( k + 1 ) = x ( k ) + α k d ( k ) \begin{aligned} \boldsymbol{g}^{(k)} &=\nabla f\left(\boldsymbol{x}^{(k)}\right)=\boldsymbol{Q} \boldsymbol{x}^{(k)}-\boldsymbol{b} \\ \alpha_{k} &=-\frac{\boldsymbol{g}^{(k) \top} \boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k) \top} \boldsymbol{Q} \boldsymbol{d}^{(k)}} \\ \boldsymbol{x}^{(k+1)} &=\boldsymbol{x}^{(k)}+\alpha_{k} \boldsymbol{d}^{(k)} \end{aligned} g(k)αkx(k+1)=f(x(k))=Qx(k)b=d(k)Qd(k)g(k)d(k)=x(k)+αkd(k)

具体算法步骤:

  1. Set k : = 0 ; k:=0 ; k:=0; select the initial point x ( 0 ) \boldsymbol{x}^{(0)} x(0)
  2. g ( 0 ) = ∇ f ( x ( 0 ) ) . \boldsymbol{g}^{(0)}=\nabla f\left(\boldsymbol{x}^{(0)}\right) . g(0)=f(x(0)). If g ( 0 ) = 0 , \boldsymbol{g}^{(0)}=\mathbf{0}, g(0)=0, stop; else, set d ( 0 ) = − g ( 0 ) \boldsymbol{d}^{(0)}=-\boldsymbol{g}^{(0)} d(0)=g(0)
  3. α k = − g ( k ) ⊤ d ( k ) d ( k ) ⊤ Q d ( k ) \alpha_{k}=-\frac{g^{(k) \top} d^{(k)}}{d^{(k) \top} Q d^{(k)}} αk=d(k)Qd(k)g(k)d(k)
  4. x ( k + 1 ) = x ( k ) + α k d ( k ) \boldsymbol{x}^{(k+1)}=\boldsymbol{x}^{(k)}+\alpha_{k} \boldsymbol{d}^{(k)} x(k+1)=x(k)+αkd(k)
  5. g ( k + 1 ) = ∇ f ( x ( k + 1 ) ) . \boldsymbol{g}^{(k+1)}=\nabla f\left(\boldsymbol{x}^{(k+1)}\right) . g(k+1)=f(x(k+1)). If g ( k + 1 ) = 0 , \boldsymbol{g}^{(k+1)}=\mathbf{0}, g(k+1)=0, stop.
  6. β k = g ( k + 1 ) ⊤ Q d ( k ) d ( k ) ⊤ Q d ( k ) \beta_{k}=\frac{\boldsymbol{g}^{(k+1) \top} \boldsymbol{Q} \boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k) \top} \boldsymbol{Q} \boldsymbol{d}^{(k)}} βk=d(k)Qd(k)g(k+1)Qd(k)
  7. d ( k + 1 ) = − g ( k + 1 ) + β k d ( k ) \boldsymbol{d}^{(k+1)}=-\boldsymbol{g}^{(k+1)}+\beta_{k} \boldsymbol{d}^{(k)} d(k+1)=g(k+1)+βkd(k)
  8. Set k : = k + 1 ; k:=k+1 ; k:=k+1; go to step 3

Three well-known modifications:
HS Formula: β k = g ( k + 1 ) ⊤ Q d ( k ) d ( k ) ⊤ Q d ( k ) \beta_{k}=\frac{\boldsymbol{g}^{(k+1) \top} \boldsymbol{Q} \boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k) \top} \boldsymbol{Q} \boldsymbol{d}^{(k)}} βk=d(k)Qd(k)g(k+1)Qd(k)

PR Formula: β k = g ( k + 1 ) ⊤ g ( k + 1 ) − g ( k + 1 ) ⊤ g ( k ) g ( k ) ⊤ g ( k ) \beta_{k}=\frac{\boldsymbol{g}^{(k+1) \top} \boldsymbol{g}^{(k+1)}-\boldsymbol{g}^{(k+1) \top} \boldsymbol{g}^{(k)}}{\boldsymbol{g}^{(k) \top} \boldsymbol{g}^{(k)}} βk=g(k)g(k)g(k+1)g(k+1)g(k+1)g(k)

FR Formula: β k = g ( k + 1 ) ⊤ g ( k + 1 ) g ( k ) ⊤ g ( k ) \beta_{k}=\frac{\boldsymbol{g}^{(k+1) \top} \boldsymbol{g}^{(k+1)}}{\boldsymbol{g}^{(k) \top} \boldsymbol{g}^{(k)}} βk=g(k)g(k)g(k+1)g(k+1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NXU2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值