凸优化——无约束优化问题常用求解方法

无约束优化问题常用求解方法

在这里插入图片描述

1.前情提要

上一章说了线搜索下降算法的几个关键问题,确定步长和下降方向,前一章的线搜索方法主要是确定步长。这一章确定下降方向。

2. 坐标轴下降法

3. 最速下降法

4.牛顿法

5. 修正牛顿法

6. 拟牛顿法

7. 共轭梯度法

(1) 共轭方向

定义: 设A为 n × n n \times n n×n阶实对称矩阵,如果有两个n维向量 d 0 , d 1 d^{0},d^1 d0,d1,满足 ( d 0 ) T A d 1 = 0 {(d^{0})}^TA d^1=0 (d0)TAd1=0,则向量 d 0 , d 1 d^{0},d^1 d0,d1是关于A共轭的向量。

几何解释:

对于二次函数: f ( x ) = 1 / 2 X T A X + B T X + C f(x)=1/2X^TAX+B^TX+C f(x)=1/2XTAX+BTX+C,有以下等值线。

假设有初始点 X 0 X^0 X0,和方向 d 0 d^0 d0,可以得到必有一等值线与方向 d 0 d^0 d0相切。设走 α 0 d 0 \alpha^0d^0 α0d0可以到达 X 1 X^1 X1,再假设 d 1 d^1 d1为指向最优解方向,走 α 1 d 1 \alpha^1d^1 α1d1

公式化上述过程 : X 0 → α 0 d 0 d 1 → α 1 d 1 X ∗ X^0\stackrel{\alpha^0d^0}\rightarrow d^1\stackrel{\alpha^1d^1}\rightarrow X^* X0α0d0d1α1d1X
在这里插入图片描述

探究:此时 d 0 和 d 1 d^0和d^1 d0d1有什么关系呢?
因为 X ∗ X^* X是最优解,所以对 f ( X ) f(X) f(X)求一阶导时:
∇ f ( X ∗ ) = A X ∗ + B = 0 \nabla f(X^*)=AX^*+B=0 f(X)=AX+B=0
因为:
X ∗ = X 1 + α 1 d 1 X^*=X^1+\alpha^1d^1 X=X1+α1d1
所以:
∇ f ( X ∗ ) = A ( X 1 + α 1 d 1 ) + B = 0 \nabla f(X^*)=A(X^1+\alpha^1d^1)+B=0 f(X)=A(X1+α1d1)+B=0
∇ f ( X ∗ ) = ( A X 1 + B ) + α 1 A d 1 = 0 \nabla f(X^*)=(AX^1+B)+\alpha^1Ad^1=0 f(X)=(AX1+B)+α1Ad1=0
这里注意到:
∇ f ( X 1 ) = ( A X 1 + B ) \nabla f(X^1)=(AX^1+B) f(X1)=(AX1+B)
两边同时乘以 d 0 d^0 d0:
( d 0 ) T ∇ f ( X 1 ) + α 1 ( d 0 ) T A d 1 = 0 (d^0)^T\nabla f(X^1)+\alpha^1(d^0)^TAd^1=0 (d0)Tf(X1)+α1(d0)TAd1=0
因为 d 0 和 ∇ f ( X 1 ) d^0和\nabla f(X^1) d0f(X1)正交,又因为 α 1 ≠ 0 \alpha^1\neq0 α1=0所以: ( d 0 ) T A d 1 = 0 (d^0)^TAd^1=0 (d0)TAd1=0

A的特例是Hessian矩阵

共轭向量几个特性

  • A = I , ( d 0 ) T I d 1 = ( d 0 ) T d 1 = 0 A=I,(d^0)^TId^1=(d^0)^Td^1=0 A=I(d0)TId1=(d0)Td1=0,所以 d 0 , d 1 正 交 d^0,d^1正交 d0d1
  • A ≠ I , d 1 经 过 矩 阵 A 的 变 换 , 设 [ ( d 1 ) ′ ] = A d 1 A\neq I,d^1经过矩阵A的变换,设[(d^1)']=Ad^1 A=Id1A[(d1)]=Ad1,与 d 0 d^0 d0正交。
    (因为 ( d 0 ) T A T A d 1 = ( A d 0 ) T A d 1 (d^0)^TA^TAd^1=(Ad^0)^TAd^1 (d0)TATAd1=(Ad0)TAd1
  • 共轭向量线形无关

正交是共轭的特例,共轭是正交的推广!

(2)共轭方向的形成

以二维正定的二次函数为例,第 K K K轮迭代。连线 X 0 , X 2 X^0,X^2 X0,X2构成的向量即为共轭向量 d d d。即:
d = X 2 − X 0 d=X^2-X^0 d=X2X0
证明: d 与 d 2 d与d^2 dd2共轭
f ( X ) = 1 2 X T A X + B T X + C f(X)=\frac{1}{2}X^TAX+B^TX+C f(X)=21XTAX+BTX+C ∇ f ( X ) = A X + B \nabla f(X)=AX+B f(X)=AX+B

X 2 点 X^2点 X2 ∇ f ( X 2 ) = A X 2 + B \nabla f(X^2)=AX^2+B f(X2)=AX2+B; X 0 点 X^0点 X0 ∇ f ( X 0 ) = A X 0 + B \nabla f(X^0)=AX^0+B f(X0)=AX0+B

左乘 d 2 d^2 d2:

{ ( d 2 ) T ∇ f ( X 0 ) = ( d 2 ) T A X 0 + ( d 2 ) T B = 0 ( d 2 ) T ∇ f ( X 2 ) = ( d 2 ) T A X 2 + ( d 2 ) T B = 0 \begin{cases} (d^2)^T\nabla f(X^0)=(d^2)^TAX^0+(d^2)^TB=0\\ (d^2)^T\nabla f(X^2)=(d^2)^TAX^2+(d^2)^TB=0 \end{cases} {(d2)Tf(X0)=(d2)TAX0+(d2)TB=0(d2)Tf(X2)=(d2)TAX2+(d2)TB=0

因为: d 2 与 f ( X 2 ) 正 交 d^2与f(X^2)正交 d2f(X2)

两个式子相减:
( d 2 ) T A ( X 2 − X 0 ) = ( d 2 ) T A d = 0 (d^2)^TA(X^2-X^0)=(d^2)^TAd = 0 (d2)TA(X2X0)=(d2)TAd=0
得证。

在这里插入图片描述

(3)线形共轭梯度法——求解二次函数

思想: 将共轭性和梯度下降法相结合,利已知点处的梯度构造一组共轭方向。并沿着这组方向进行搜索,求出目标函数的极小值。

目标函数 m i n f ( X ) = 1 2 X T A X + B X + C min f(X)=\frac{1}{2}X^TAX+BX+C minf(X)=21XTAX+BX+C

步骤:

  • 任意给定一个初始点 X 1 X^1 X1,计算该点的梯度 g 1 = ∇ f ( X 1 ) g_1=\nabla f(X^1) g1=f(X1),若 ∣ ∣ g 1 ∣ ∣ = 0 , 则 停 止 计 算 ; 否 则 , 令 d 1 = − ∇ f ( X 1 ) = − g 1 ||g_1||=0,则停止计算;否则,令d^1=-\nabla f(X^1)=-g_1 g1=0d1=f(X1)=g1。沿 d 1 d^1 d1方向走 α 1 \alpha_1 α1到达 X 2 X^2 X2,计算该点梯度 g 2 = ∇ f ( X 2 ) g_2=\nabla f(X^2) g2=f(X2),如果 ∣ ∣ g 2 ∣ ∣ ≠ 0 ||g_2||\neq0 g2=0,则利用 − g 2 -g_2 g2 d 1 d^1 d1构造第2个搜索方向 d 2 d^2 d2,再沿着 d 2 d^2 d2走, 以此类推…

推广到一般情况:

推广到 X K X^K XK:已知方向 d K d^K dK,则从 X k X^k Xk出发,沿 d k d^k dk搜索,得到 X k + 1 = X k + α K d k X^{k+1}=X^k+\alpha_Kd^k Xk+1=Xk+αKdk

  • 其中步长 α K \alpha_K αK满足: α k = a r g m i n f ( X k + α k d k ) \alpha_k=argminf(X^k+\alpha_kd^k) αk=argminf(Xk+αkdk) α k = − ∇ f ( X k ) T d k ( d k ) T A d k \alpha_k=-\frac{\nabla f(X^k)^Td^k}{(d^k)^TAd^k} αk=(dk)TAdkf(Xk)Tdk.

然后计算 f ( X f(X f(X)在 X k + 1 X^{k+1} Xk+1处的梯度 ∇ f ( X k + 1 ) \nabla f(X^{k+1}) f(Xk+1),若 ∣ ∣ ∇ f ( X k + 1 ) ∣ ∣ = 0 ||\nabla f(X^{k+1})||=0 f(Xk+1)=0,则停止计算;否则,用 − ∇ f ( X k + 1 ) -\nabla f(X^{k+1}) f(Xk+1) d k d^k dk构造下一个搜索方向 d k + 1 d^{k+1} dk+1,并使 d k + 1 d^{k+1} dk+1 d k d^k dk关于 A A A共轭,按此设想,令: d k + 1 = − ∇ f ( X k + 1 ) + β k d k d^{k+1}=-\nabla f(X^{k+1})+\beta_kd^k dk+1=f(Xk+1)+βkdk
上式两端左乘 ( d K ) T A (d^K)^TA (dK)TA,得:
( d K ) T A d k + 1 = − ( d K ) T A ∇ f ( X k + 1 ) + β k ( d K ) T A d k (d^K)^TAd^{k+1}=-(d^K)^TA\nabla f(X^{k+1})+\beta_k(d^K)^TAd^k (dK)TAdk+1=(dK)TAf(Xk+1)+βk(dK)TAdk
使其等于0,得:
β k = ∇ f ( X k + 1 ) A d k ( d k ) T A d k \beta_k=\frac{\nabla f(X^{k+1})Ad^k}{(d^k)^TAd^k} βk=(dk)TAdkf(Xk+1)Adk
再从 X k + 1 X^{k+1} Xk+1出发,沿方向 d k + 1 d^{k+1} dk+1搜索。

共轭方向法是一类方法,共轭梯度法就是其中一个方法。


公式简化:
目的:让表达式与梯度之间构建起联系
(1) 共轭梯度法的步长公式:
α k = − ∇ f ( X k ) T d k ( d k ) T A d k \alpha_k=-\frac{\nabla f(X^k)^Td^k}{(d^k)^TAd^k} αk=(dk)TAdkf(Xk)Tdk
因为: d k = − ∇ f ( X k ) + β k − 1 d k − 1 d^k=-\nabla f(X^k)+\beta_{k-1}d^{k-1} dk=f(Xk)+βk1dk1
所以分子变成:
− ∇ f ( X k ) T ( ∇ f ( X k ) + β k − 1 d k − 1 ) -\nabla f(X^k)^T(\nabla f(X^k)+\beta_{k-1}d^{k-1}) f(Xk)T(f(Xk)+βk1dk1)

即:
− ∇ f ( X k ) T ∇ f ( X k ) + β k − 1 ∇ f ( X k ) T d k − 1 -\nabla f(X^k)^T\nabla f(X^k)+\beta_{k-1}\nabla f(X^k)^Td^{k-1} f(Xk)Tf(Xk)+βk1f(Xk)Tdk1

因为: ∇ f ( X k ) d k − 1 = 0 \nabla f(X^k)d^{k-1}=0 f(Xk)dk1=0

所以,可简化为:
α k = − ∇ f ( X k ) T ∇ f ( X k ) ( d k ) T A d k \alpha_k=-\frac{\nabla f(X^k)^T\nabla f(X^k)}{(d^k)^TAd^k} αk=(dk)TAdkf(Xk)Tf(Xk)

(2)共轭梯度法步长公式中的系数

β k = ∇ f ( X k + 1 ) A d k ( d k ) T A d k \beta_k=\frac{\nabla f(X^{k+1})Ad^k}{(d^k)^TAd^k} βk=(dk)TAdkf(Xk+1)Adk

分子 ∇ f ( X k + 1 ) A d k = ∇ f ( X k + 1 ) ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) 1 α k \nabla f(X^{k+1})Ad^k=\nabla f(X^{k+1})(\nabla f(X^{k+1})-\nabla f(X^k))\frac{1}{\alpha_k} f(Xk+1)Adk=f(Xk+1)(f(Xk+1)f(Xk))αk1

所以:

β k = ∇ f ( X k + 1 ) ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) 1 α k ( d k ) T A d k \beta_k=\frac{\nabla f(X^{k+1})(\nabla f(X^{k+1})-\nabla f(X^k))\frac{1}{\alpha_k}}{(d^k)^TAd^k} βk=(dk)TAdkf(Xk+1)(f(Xk+1)f(Xk))αk1

β k = 1 α k ∇ f ( X k + 1 ) ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) 1 α k ( d k ) T A d k \beta_k=\frac{1}{\alpha_k}\frac{\nabla f(X^{k+1})(\nabla f(X^{k+1})-\nabla f(X^k))\frac{1}{\alpha_k}}{(d^k)^TAd^k} βk=αk1(dk)TAdkf(Xk+1)(f(Xk+1)f(Xk))αk1

β k = ∇ f ( X k + 1 ) T ∇ f ( X k + 1 ) T ∇ f ( X k ) T ∇ f ( X k ) \beta_k=\frac{\nabla f(X^{k+1})^T\nabla f(X^{k+1})^T}{\nabla f(X^k)^T\nabla f(X^k)} βk=f(Xk)Tf(Xk)f(Xk+1)Tf(Xk+1)T

简化是为了推广到非线性共轭梯度法。没有出现二次目标函数的A,方便计算


(4)非线性共轭梯度法——求解一般性函数

FR、PRP方法
步骤:

  • step0: 给定初始点 X 0 X^0 X0,记 d 0 = − ∇ f ( x 0 ) , ϵ > 0 , k = 0 d^0=-\nabla f(x^0),\epsilon>0,k=0 d0=f(x0)ϵ>0,k=0

  • step1: 判断 ∣ ∣ ∇ f ( X k ) ∣ ∣ ≤ ϵ ||\nabla f(X^k)||\leq\epsilon f(Xk)ϵ是否成立;是,则终止了;

  • step2: 利用线形搜索计算步长 α k \alpha_k αk

  • step3: 令 X k + 1 = X k + α k d k X^{k+1}=X^k+\alpha_kd^k Xk+1=Xk+αkdk,并计算方向:
    d k + 1 = − ∇ f ( X k + 1 + β k d k ) d^{k+1}=-\nabla f(X^{k+1}+\beta_kd^k) dk+1=f(Xk+1+βkdk)
    其中: β k = − ∇ f ( X k + 1 ) T ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) ∇ f ( X k ) T ∇ f ( X k ) \beta_k=-\frac{\nabla f(X^{k+1})^T(\nabla f(X^{k+1})-\nabla f(X^k))}{\nabla f(X^k)^T\nabla f(X^k)} βk=f(Xk)Tf(Xk)f(Xk+1)T(f(Xk+1)f(Xk)) (PRP法)

    或者: β k = − ∇ f ( X k + 1 ) T ∇ f ( X k + 1 ) ∇ f ( X k ) T ∇ f ( X k ) \beta_k=-\frac{\nabla f(X^{k+1})^T\nabla f(X^{k+1})}{\nabla f(X^k)^T\nabla f(X^k)} βk=f(Xk)Tf(Xk)f(Xk+1)Tf(Xk+1) (FR法)

    K = K + 1 K=K+1 K=K+1,转向step 1

注意:

  • 实践中,为了保证每次产生的方向为下降方向,可能会对 β k \beta_k βk进行调整
  • 具有二次终止性
  • 实现过程中常采用n步重启策略,可达到二阶收敛(有n个共轭方向后,重新取初始点)

优点:

  • 与最速下降法相比,速度快
  • 与牛顿法比,存储量小,适用于n大时

references

[1] 最优化理论与方法-第七讲-无约束优化问题(三)https://www.bilibili.com/video/BV1pk4y1R7WS/?spm_id_from=333.788.recommend_more_video.-1
[2] 陈宝林 最优化理论与算法(第2版)
[3] https://www.xuetangx.com/learn/ecust13051002148/ecust13051002148/5883504/video/9207474

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值