最优下降法学习

原理

设目标函数一阶连续可微
x k x^k xk点处对 f ( x ) f(x) f(x)进行泰勒展开,得到:
▽ f ( x k ) : f 在 点 x k 处 的 一 阶 导 数 \bigtriangledown f(x^k):f在点x_k处的一阶导数 f(xk):fxk
λ : 为 步 长 \lambda:为步长 λ:
f ( x k ) − f ( x k + t p k ) = − λ ▽ f ( x k ) T p k + o ( ∣ ∣ t p k ∣ ∣ ) f(x^k)-f(x^k+tp^k)=-\lambda\bigtriangledown f(x^k)^Tp^k+o(||tp^k||) f(xk)f(xk+tpk)=λf(xk)Tpk+o(tpk)
可知在令 p k = − ▽ f ( x k ) p^k=-\bigtriangledown f(x^k) pk=f(xk)时,函数值下降最快

步骤

k : 迭 代 次 数 k:迭代次数 k:
x k : 表 示 第 k 步 的 点 x^k:表示第k步的点 xk:k
ξ : 终 止 误 差 \xi:终止误差 ξ:
p k : 第 k 步 的 搜 索 方 向 p^k:第k步的搜索方向 pk:k
λ k : 第 k 步 的 步 长 \lambda_k:第k步的步长 λk:k

  1. 确定初始点 x 0 x^0 x0,终止误差 ξ > 0 \xi>0 ξ>0, k = 0 k=0 k=0
  2. 计算 ▽ f ( x k ) \bigtriangledown f(x^k) f(xk),如果 ▽ f ( x k ) < ξ \bigtriangledown f(x^k)<\xi f(xk)<ξ停止迭代,否则进行第3步
  3. p k = − ▽ f ( x k ) p^k=-\bigtriangledown f(x^k) pk=f(xk)
  4. λ k \lambda_k λk,满足:
    f ( x k + λ k p k ) = m i n λ ≥ 0 f ( x k + p k ) : ( 一 般 是 对 λ k ) 构 成 的 新 的 函 数 求 导 , 得 到 其 导 数 为 0 的 点 f(x^k+\lambda_kp^k)=min_{\lambda\geq0}f(x^k+p^k):(一般是对\lambda_k)构成的新的函数求导,得到其导数为0的点 f(xk+λkpk)=minλ0f(xk+pk)λk0
    x k + 1 = x k + λ k p k , k = k + 1 x^{k+1}=x^k+\lambda_kp^k,k=k+1 xk+1=xk+λkpk,k=k+1,再进行第2步

一个实例

例: m i n f ( x ) = x 1 − x 2 + 2 x 1 2 + 2 x 1 x 2 + x 2 2 minf(x)=x_1-x_2+2x_1^2+2x_1x_2+x_2^2 minf(x)=x1x2+2x12+2x1x2+x22,给定初始点 x ( 1 ) = ( 0 , 0 ) T , x^{(1)}=(0,0)^T, x(1)=(0,0)T,

  1. 确定初始点 x 0 = ( 0 , 0 ) x^0=(0,0) x0=(0,0), k = 0 k=0 k=0
  2. 求取 ▽ f ( x k ) = [ ∂ f ( x ) ∂ x 1 ∂ f ( x ) ∂ x 2 ] = [ 1 + 4 x 1 + 2 x 2 − 1 + 2 x 1 + 2 x 2 ] \bigtriangledown f(x^k)=\left[\begin{matrix}\frac{\partial f(x)}{\partial x_1}\\\frac{\partial f(x)}{\partial x_2}\end{matrix}\right]= \left[\begin{matrix}1+4x_1+2x_2\\ -1+2x_1+2x_2\end{matrix}\right] f(xk)=[x1f(x)x2f(x)]=[1+4x1+2x21+2x1+2x2]
    带入 x 0 x^0 x0得到: ▽ f ( x 0 ) = [ 1 − 1 ] \bigtriangledown f(x^0)=\left[\begin{matrix}1\\-1\end{matrix}\right] f(x0)=[11]
    得到 ξ 0 = ∣ f ( x 0 ) ∣ = 2 \xi_0=|f(x^0)|=\sqrt{2} ξ0=f(x0)=2
  3. d ( 0 ) = − ▽ f ( x 0 ) = [ − 1 1 ] d^{(0)}=-\bigtriangledown f(x^0)=\left[\begin{matrix}-1\\1\end{matrix}\right] d(0)=f(x0)=[11]
  4. λ 0 \lambda_0 λ0,
    (1): x ( 0 ) + λ d ( 0 ) = [ 0 0 ] + λ [ − 1 1 ] = [ − λ λ ] x^{(0)}+\lambda d^{(0)}=\left[\begin{matrix}0\\0 \end{matrix}\right]+\lambda \left[\begin{matrix}-1\\1 \end{matrix}\right]=\left[\begin{matrix}-\lambda\\\lambda \end{matrix}\right] x(0)+λd(0)=[00]+λ[11]=[λλ],得到 x 1 = − λ , x 2 = λ 2 x_1=-\lambda,x_2=\lambda_2 x1=λ,x2=λ2
    (2)将 x 1 , x 2 x_1,x_2 x1,x2带入 f ( x ) = f ( x ( 0 ) + λ d ( 1 ) ) = ( − λ ) − λ + 2 ( − λ ) 2 + 2 λ ( − λ ) + λ 2 = λ 2 − 2 λ = ϕ 1 ( λ ) f(x)=f(x^{(0)}+\lambda d^{(1)})=(-\lambda)-\lambda+2(-\lambda)^2+2\lambda(-\lambda)+\lambda^2=\lambda^2-2 \lambda=\phi_1(\lambda) f(x)=f(x(0)+λd(1))=(λ)λ+2(λ)2+2λ(λ)+λ2=λ22λ=ϕ1(λ)
    (3) ϕ 0 ( λ ) = 2 λ − 2 = 0 \phi_0(\lambda)=2\lambda-2=0 ϕ0(λ)=2λ2=0, λ 0 = 1 \lambda_0=1 λ0=1
    (4) x ( 1 ) = x ( 0 ) + λ 0 d ( 0 ) = [ 0 0 ] + 1 ∗ [ − 1 1 ] = [ − 1 1 ] x^{(1)}=x^{(0)}+\lambda_0 d^{(0)}=\left[\begin{matrix}0\\0 \end{matrix}\right]+1* \left[\begin{matrix}-1\\1 \end{matrix}\right]= \left[\begin{matrix}-1\\1 \end{matrix}\right] x(1)=x(0)+λ0d(0)=[00]+1[11]=[11]

步长的确定方法

原理看这里
黄金分割法
缩小区间法
插值法

优缺点

在开头几步,目标函数下降较快;但在接近极小点时,收敛速度长久不理想了。特别适当目标函数的等值 线为比较扁平的椭圆时,收敛就更慢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值