梯度方法

梯度方法

梯度下降法——一阶优化方法,用于求解无约束最优化问题。选取适当的初始值 x ( 0 ) x^{(0)} x(0),并不断向负梯度方向迭代更新 x x x,实现目标函数的极小化,直到收敛。

当目标函数是凸函数的时候,梯度下降法可以确保找到全局最优解,否则不一定能找到全局最优解,可能会陷入局部最优解。

梯度下降法原理

考虑最优化问题 min ⁡ x f ( x ) \min \limits_{x}f(x) xminf(x),其中 f ( x ) f(x) f(x)具有一阶连续偏导数。若第 k k k次迭代值为 x ( k ) x^{(k)} x(k),对 f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)处进行一阶泰勒展开:
f ( x ( k + 1 ) ) = f ( x ( k ) ) + ( x ( k + 1 ) − x ( k ) ) ∇ f ( x ( k ) ) f(x^{(k+1)})=f(x^{(k)})+(x^{(k+1)}-x^{(k)})\nabla f(x^{(k)}) f(x(k+1))=f(x(k))+(x(k+1)x(k))f(x(k))
其中, x ( k + 1 ) − x ( k ) x^{(k+1)}-x^{(k)} x(k+1)x(k)是微笑矢量,大小是步长 α \alpha α x ( k + 1 ) − x ( k ) x^{(k+1)}-x^{(k)} x(k+1)x(k)的单位向量用 v v v表示,则 x ( k + 1 ) − x ( k ) x^{(k+1)}-x^{(k)} x(k+1)x(k)可以表示为:
x ( k + 1 ) − x ( k ) = α v x^{(k+1)}-x^{(k)}=\alpha v x(k+1)x(k)=αv
(1)式可表示为:
f ( x ( k + 1 ) ) = f ( x ( k ) ) + α v ∇ f ( x ( k ) ) f(x^{(k+1)})=f(x^{(k)})+\alpha v\nabla f(x^{(k)}) f(x(k+1))=f(x(k))+αvf(x(k))
每次迭代,都要使 f ( x ( k + 1 ) ) f(x^{(k+1)}) f(x(k+1))变小,当 v v v ∇ f ( x ( k ) ) \nabla f(x^{(k)}) f(x(k))反向时,可使下降最快,故迭代公式可化为:
x ( k + 1 ) = x ( k ) − α ∇ f ( x ( k ) ) x^{(k+1)}=x^{(k)}-\alpha \nabla f(x^{(k)}) x(k+1)=x(k)αf(x(k))

算法过程

输入:目标函数 f ( x ) f(x) f(x),梯度函数 ∇ f ( x ) \nabla f(x) f(x),计算精度 ϵ \epsilon ϵ

输出: f ( x ) f(x) f(x)的极小点 x ∗ ​ x^*​ x

  1. 初始化相关参数。取初始值 x ( 0 ) ∈ R n x^{(0)}\in R^n x(0)Rn,置迭代次数 k = 0 k=0 k=0
  2. 计算 x ( 0 ) ​ x^{(0)}​ x(0)的梯度 ∇ f ( x ( 0 ) ) ​ \nabla f(x^{(0)})​ f(x(0))
  3. 确定 x ( 0 ) x^{(0)} x(0)的步长: α 0 = a r g min ⁡ α ⩾ 0 f ( x ( 0 ) − α ∇ f ( x ( 0 ) ) ) \alpha_0=arg \min \limits_ {\alpha \geqslant 0}f(x^{(0)}-\alpha \nabla f(x^{(0)})) α0=argα0minf(x(0)αf(x(0))),使用一维搜索方法(割线法);
  4. 使用式(4)计算迭代点 x ( 1 ) x^{(1)} x(1)。满足精度要求则停止迭代,否则继续。

最速下降法应用到二次型函数

目标函数为:
f ( x ) = 1 2 x T Q x − b T x f(x)=\frac{1}{2}x^TQx-b^Tx f(x)=21xTQxbTx
由于 D ( x T Q x ) = x T ( Q + Q T ) = 2 x T Q D(x^TQx)=x^T(Q+Q^T)=2x^TQ D(xTQx)=xT(Q+QT)=2xTQ D ( b T x ) = b T D(b^Tx)=b^T D(bTx)=bT,得到:
∇ f ( x ) = Q x − b \nabla f(x)=Qx-b f(x)=Qxb
为方便起见,记 g ( k ) = ∇ f ( x ( k ) ) g^{(k)}=\nabla f(x^{(k)}) g(k)=f(x(k)),针对二次型函数,最速下降法的迭代公式为:
x ( k + 1 ) = x ( k ) − α k g ( k ) x^{(k+1)}=x^{(k)}-\alpha_kg^{(k)} x(k+1)=x(k)αkg(k)
利用局部极小点的一阶必要条件可以得到:
α k = g ( k ) T g ( k ) g ( k ) T Q g ( k ) x ( k + 1 ) = x ( k ) − g ( k ) T g ( k ) g ( k ) T Q g ( k ) g ( k ) g ( k ) = ∇ f ( x ( k ) ) = Q x ( k ) − b \alpha_k=\frac{g^{(k)T}g^{(k)}}{g^{(k)T}Qg^{(k)}} \\x^{(k+1)}=x^{(k)}-\frac{g^{(k)T}g^{(k)}}{g^{(k)T}Qg^{(k)}}g^{(k)} \\g^{(k)}=\nabla f(x^{(k)})=Qx^{(k)}-b αk=g(k)TQg(k)g(k)Tg(k)x(k+1)=x(k)g(k)TQg(k)g(k)Tg(k)g(k)g(k)=f(x(k))=Qx(k)b

梯度方法收敛性分析

最速下降法和步长固定梯度法。

将目标函数设定为二次函数;
V ( x ) = f ( x ) + 1 2 x ∗ T Q x ∗ = 1 2 ( x − x ∗ ) T Q ( x − x ∗ ) V(x)=f(x)+\frac{1}{2}x^{*T}Qx^*=\frac{1}{2}(x-x^*)^TQ(x-x^*) V(x)=f(x)+21xTQx=21(xx)TQ(xx)
极小点 x ∗ x^* x通过求解方程 Q x = b Qx=b Qx=b得到, x ∗ = Q ( − 1 ) b x^*=Q^{(-1)}b x=Q(1)b

假定对于所有 k k k,都有 γ k > 0 \gamma_k>0 γk>0。当且仅当:
∑ k = 0 ∞ γ k = ∞ \sum_{k=0} ^{\infty}\gamma_k=\infty k=0γk=
时, x ( k ) x^{(k)} x(k)在任何初始值 x ( 0 ) x^{(0)} x(0)下都收敛到极小点 x ∗ x^* x

瑞利不等式:
λ m i n ( Q ) ∣ ∣ x ∣ ∣ 2 ⩽ x T Q x ⩽ λ m a x ( Q ) ∣ ∣ x ∣ ∣ 2 \lambda_{min}(Q)||x||^2\leqslant x^TQx\leqslant \lambda_{max}(Q)||x||^2 λmin(Q)x2xTQxλmax(Q)x2

最速下降法收敛性定理

对于最速下降法,对于任意的初始点 x ( 0 ) x^{(0)} x(0),都有 x ( k ) → x ∗ x^{(k)}\rightarrow x^* x(k)x。(所有的 k k k,均有 γ k > 0 \gamma_k>0 γk>0

步长固定梯度法收敛性定理

对于步长固定梯度法,当且仅当步长
0 &lt; α &lt; 2 λ m a x ( Q ) 0&lt;\alpha&lt;\frac{2}{\lambda_{max}(Q)} 0<α<λmax(Q)2
时, x ( k ) → x ∗ x^{(k)}\rightarrow x^* x(k)x

收敛率

利用最速下降法求解二次型函数的极小点,在任意第 k k k次迭代,都有:
V ( x ( k + 1 ) ) ⩽ λ m a x ( Q ) − λ m i n ( Q ) λ m a x ( Q ) V ( x ( k ) ) V(x^{(k+1)})\leqslant\frac{\lambda_{max}(Q)-\lambda_{min}(Q)}{\lambda_{max}(Q)}V(x^{(k)}) V(x(k+1))λmax(Q)λmax(Q)λmin(Q)V(x(k))
定义 r = λ m a x ( Q ) λ m i n ( Q ) = ∣ ∣ Q ∣ ∣ ∣ ∣ Q − 1 ∣ ∣ r=\frac{\lambda_{max}(Q)}{\lambda_{min}(Q)}=||Q|| ||Q^{-1}|| r=λmin(Q)λmax(Q)=QQ1为矩阵Q的条件数,故(13)式可表示为:
V ( x ( k + 1 ) ) ⩽ ( 1 − 1 r ) V ( x ( k ) ) V(x^{(k+1)})\leqslant(1-\frac{1}{r})V(x^{(k)}) V(x(k+1))(1r1)V(x(k))
其中 ( 1 − 1 r ) (1-\frac{1}{r}) (1r1)称为收敛率。

如果
0 &lt; lim ⁡ k → ∞ ∣ ∣ x ( k + 1 ) − x ∗ ∣ ∣ ∣ ∣ x ( k ) − x ∗ ∣ ∣ p &lt; ∞ 0&lt;\lim_{k\to \infty}\frac{||x^{(k+1)}-x^*||}{||x^{(k)}-x^*||^p}&lt;\infty 0<klimx(k)xpx(k+1)x<
则序列{ x ( k ) x^{(k)} x(k)}的收敛阶数为 p p p

如果对于所有 p &gt; 0 p&gt;0 p>0,有
lim ⁡ k → ∞ ∣ ∣ x ( k + 1 ) − x ∗ ∣ ∣ ∣ ∣ x ( k ) − x ∗ ∣ ∣ p = 0 \lim_{k\to \infty}\frac{||x^{(k+1)}-x^*||}{||x^{(k)}-x^*||^p}=0 klimx(k)xpx(k+1)x=0
则称收敛阶数为 ∞ \infty

序列收敛的阶数是收敛率的评价指标,阶数越高,收敛率越高,收敛速度越快。任意收敛序列的收敛阶数不会小于1.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值