最优化方法与理论系统学习笔记
本系列所有文章来自东北大学张京老师的最优化方法与理论课程学习笔记,系列如下:
线性规划 (一) 线性规划的基本形式及各种概念
线性规划 (二) 单纯形法
无约束最优化(一) 最速下降法、Newton法、修正Newton法
无约束最优化(二) 共轭方向法与共轭梯度法
无约束最优化(三) 拟Newton法
无约束最优化(四) 步长加速法
无约束最优化(五) 最小二乘法问题的解法
约束最优化方法 (一) 最优性条件
约束最优化方法 (二) Zoutendijk容许方向法
约束最优化方法 (三) 外部罚函数法
约束最优化方法 (四) 乘子法
基本思想
之前文章最速下降法、Newton法、修正Newton法介绍的最速下降法存在锯齿现象,Newton法需要计算目标函数的二阶导数。接下来介绍的共轭方向法是介于最速下降法和Newton法之间的一种方法,它克服了最速下降法的锯齿现象,从而提高了收敛速度;它的迭代公式也比较简单,不必计算目标函数的二阶导数,与Newton法相比,减少了计算量和存储量。它是比较实用而有效的最优化方法。
我们先将其在正定二次函数 f ( x ) = 1 2 x T Q x + b T x + c f(x)=\frac{1}{2} x^{T} Q x+b^{T} x+c f(x)=21xTQx+bTx+c上研究,然后再把算法用到更一般的目标函数上。首先考虑二维的情形。
任选初始点 x 0 x_{0} x0,沿它的某个下降方向,例如向量 p 0 p_{0} p0的方向,作直线搜索,如上图所示。由下面这个定理:
定理:设目标函数 f ( x ) f(x) f(x)具有一阶连续偏导数,若 z = l s ( x , p ) z=ls(x,p) z=ls(x,p),则 ∇ f ( z ) T p = 0 \nabla f(z)^{T}p=0 ∇f(z)Tp=0。
知 ∇ f ( x 1 ) T p 0 = 0 \nabla f(x_{1})^{T}p_{0}=0 ∇f(x1)Tp0=0。如果按照最速下降法选择的就是负梯度方向为搜索方向(也就是 − g 1 -g_{1} −g1方向),那么将要发生锯齿现象。于是一个设想是,干脆选择下一个迭代的搜索方向 p 1 p_{1} p1就从 x 1 x_{1} x1直指极小点 x ∗ x^{*} x∗,也就是找到上图所示的 p 1 p_{1} p1方向。
因为
p
1
p_{1}
p1从
x
1
x_{1}
x1直指极小点
x
∗
x^{*}
x∗,所以
x
∗
x^{*}
x∗可以表示为:
x
∗
=
x
1
+
t
1
p
1
x^{*}=x_{1}+t_{1}p_{1}
x∗=x1+t1p1
其中
t
1
t_{1}
t1是最优步长因子。显然,当
x
∗
≠
x
1
x^{*} \neq x_{1}
x∗=x1时,
t
1
≠
0
t_{1} \neq 0
t1=0。到这里,我们还有一个已知条件没用,就是目标函数为二次正定,所以我们对目标函数求导,得到:
∇
f
(
x
)
=
Q
x
+
b
\nabla f(x)=Qx+b
∇f(x)=Qx+b
因为
x
∗
x^{*}
x∗是极小点,所以有:
∇
f
(
x
∗
)
=
Q
x
∗
+
b
=
0
\nabla f(x^{*})=Qx^{*}+b=0
∇f(x∗)=Qx∗+b=0
将
x
∗
=
x
1
+
t
1
p
1
x^{*}=x_{1}+t_{1}p_{1}
x∗=x1+t1p1带入上述方程式,有:
∇
f
(
x
1
)
+
t
1
Q
p
1
=
0
\nabla f(x_{1}) + t_{1}Qp_{1}=0
∇f(x1)+t1Qp1=0
上式两边同时左乘
p
0
T
p_{0}^{T}
p0T,并注意到
p
0
T
∇
f
(
x
1
)
=
0
p_{0}^{T} \nabla f(x_{1})=0
p0T∇f(x1)=0和
t
≠
0
t \neq 0
t=0,得到
p
0
T
Q
p
1
=
0
p_{0}^{T}Qp_{1}=0
p0TQp1=0。这就是为使
p
1
p_{1}
p1直指极小点
x
∗
x^{*}
x∗,
p
1
p_{1}
p1所必须满足的条件。并且我们将两个向量
p
0
p_{0}
p0和
p
1
p_{1}
p1称为
Q
Q
Q共轭向量或称
p
0
p_{0}
p0和
p
1
p_{1}
p1是
Q
Q
Q共轭方向。
由上面共轭梯度法那张图可以设:
p
1
=
−
∇
f
(
x
1
)
+
α
0
p
0
p_{1}=-\nabla f(x_{1})+\alpha_{0}p_{0}
p1=−∇f(x1)+α0p0
上式两边同时左乘
p
0
T
Q
p_{0}^{T}Q
p0TQ,得:
−
p
0
T
Q
∇
f
(
x
1
)
+
α
0
p
0
T
Q
p
0
=
0
-p_{0}^{T} Q \nabla f\left(x_{1}\right)+\alpha_{0} p_{0}^{T} Q p_{0}=0
−p0TQ∇f(x1)+α0p0TQp0=0
由此解出:
α
0
=
p
0
T
Q
∇
f
(
x
1
)
p
0
T
Q
p
0
\alpha_{0} = \frac{p_{0}^{T} Q \nabla f\left(x_{1}\right)}{p_{0}^{T} Q p_{0}}
α0=p0TQp0p0TQ∇f(x1)
代回
p
1
=
−
∇
f
(
x
1
)
+
α
0
p
0
p_{1}=-\nabla f(x_{1})+\alpha_{0}p_{0}
p1=−∇f(x1)+α0p0得:
p
1
=
−
∇
f
(
x
1
)
+
p
0
T
Q
∇
f
(
x
1
)
p
0
T
Q
p
0
p
0
p_{1}=-\nabla f(x_{1})+\frac{p_{0}^{T} Q \nabla f\left(x_{1}\right)}{p_{0}^{T} Q p_{0}}p_{0}
p1=−∇f(x1)+p0TQp0p0TQ∇f(x1)p0
从而求到了
p
1
p_{1}
p1的方向。
归纳一下,对于正定二元二次函数,从任意初始点 x 0 x_{0} x0出发,沿任意下降方向 p 0 p_{0} p0做直线搜索得到 x 1 x_{1} x1再从 x 1 x_{1} x1出发,沿 p 0 p_{0} p0的共轭方向 p 1 p_{1} p1作直线搜索,所得到的 x 2 x_{2} x2必是极小点 x ∗ x^{*} x∗。到目前为止的共轭梯度法依旧是假设了目标函数是二次正定矩阵。
上面的结果可以推广到 n n n维空间中,即在 n n n维空间中,可以找出 n n n个互相共轭的方向,对于 n n n元正定二次函数从任意初始点出发,顺次沿着这 n n n个共轭方向最多作 n n n次直线搜索,就可以求到目标函数的极小点。
对于 n n n元正定二次目标函数,如果从任意初始点出发经过有限次迭代就能够求到极小点,那么称这种算法具有二次终止性。例如,Newton法对于二次函数只须经过一次迭代就可以求到极小点,因此是二次终止的;而最速下降法就不具有二次终止性。共轭方向法(如共轭梯度法、拟Newton法等)也是二次终止的。
一般说来,具有二次终止性的算法,在用于一般函数时,收敛速度是较快的。
共轭向量及其性质
定义:设 Q Q Q是 n × n n \times n n×n对称正定矩阵。若 n n n维向量空间中的非零向量 p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 p_{0},p_{1},···,p_{m-1} p0,p1,⋅⋅⋅,pm−1满足 p i T Q p j = 0 p_{i}^{T}Qp_{j}=0 piTQpj=0, i , j = 0 , 1 , ⋅ ⋅ ⋅ , m − 1 ( i ≠ j ) i,j=0,1,···,m-1(i \neq j) i,j=0,1,⋅⋅⋅,m−1(i=j)则称 p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 p_{0},p_{1},···,p_{m-1} p0,p1,⋅⋅⋅,pm−1是 Q Q Q共轭向量或称向量 p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 p_{0},p_{1},···,p_{m-1} p0,p1,⋅⋅⋅,pm−1是 Q Q Q共轭的(简称共轭)。
当 Q = E Q=E Q=E(单位矩阵)时 p i T Q p j = 0 p_{i}^{T}Qp_{j}=0 piTQpj=0变为 p i T p j = 0 p_{i}^{T}p_{j}=0 piTpj=0, i , j = 0 , 1 , ⋅ ⋅ ⋅ , m − 1 ( i ≠ j ) i,j=0,1,···,m-1(i \neq j) i,j=0,1,⋅⋅⋅,m−1(i=j)。即向量 i , j = 0 , 1 , ⋅ ⋅ ⋅ , m − 1 ( i ≠ j ) i,j=0,1,···,m-1(i \neq j) i,j=0,1,⋅⋅⋅,m−1(i=j)互相正交。由此看到,“正交”是“共轭”的一种特殊情形,或说,“共轭”是“正交”的推广。
下面介绍几个定理:
定理:若非零向量 p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 p_{0},p_{1},···,p_{m-1} p0,p1,⋅⋅⋅,pm−1是 Q Q Q共轭的,则线性无关。
推论:在 n n n维向量空间中, R n R^{n} Rn非零的共轭向量的个数不超过 n n n。
定义 设
p
0
,
p
1
,
⋅
⋅
⋅
,
p
m
−
1
p_{0},p_{1},···,p_{m-1}
p0,p1,⋅⋅⋅,pm−1是
R
R
R中的线性无关向量,
x
0
∈
R
x_{0} \in R
x0∈R。那么形式为:
z
=
x
0
+
∑
i
=
0
m
−
1
α
i
p
i
,
∀
α
1
,
α
2
,
⋯
,
α
m
−
1
∈
R
z=x_{0}+\sum_{i=0}^{m-1} \alpha_{i} p_{i}, \forall \alpha_{1}, \alpha_{2}, \cdots, \alpha_{m-1} \in R
z=x0+i=0∑m−1αipi,∀α1,α2,⋯,αm−1∈R
的向量构成的集合,记为
L
[
x
0
;
p
0
,
p
1
,
⋅
⋅
⋅
,
p
m
−
1
]
L \left [ x_{0};p_{0},p_{1},···,p_{m-1} \right ]
L[x0;p0,p1,⋅⋅⋅,pm−1]。称为由点
x
0
x_{0}
x0和向量
p
0
,
p
1
,
⋅
⋅
⋅
,
p
m
−
1
p_{0},p_{1},···,p_{m-1}
p0,p1,⋅⋅⋅,pm−1所生成的线性流形。
共轭方向法
共轭方向法的理论基础是下面的定理。
定理 假设
(1) Q为 n × n n \times n n×n对称正定矩阵;
(2) 非零向量 p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 p_{0},p_{1},···,p_{m-1} p0,p1,⋅⋅⋅,pm−1是 Q Q Q共轭向量;
(3) 对二次目标函数
f
(
x
)
=
1
2
x
T
Q
x
+
b
T
x
+
c
f(x)=\frac{1}{2} x^{T} Q x+b^{T} x+c
f(x)=21xTQx+bTx+c顺次进行
m
m
m次直线搜索:
x
i
1
=
l
s
(
x
i
,
p
i
)
,
i
=
0
,
1
,
⋅
⋅
⋅
,
m
−
1
x_{i_1} = ls(x_{i},p_{i}) , i=0,1,···,m-1
xi1=ls(xi,pi),i=0,1,⋅⋅⋅,m−1
其中
x
0
∈
R
x_{0} \in R
x0∈R是任意选定的初始点,则有:
i) p j T ∇ f ( x m ) = 0 p_{j}^{T} \nabla f(x_{m})=0 pjT∇f(xm)=0, 0 ⩽ j ⩽ m 0 \leqslant j \leqslant m 0⩽j⩽m;
ii) x m x_{m} xm是二次函数 f ( x ) = 1 2 x T Q x + b T x + c f(x)=\frac{1}{2} x^{T} Q x+b^{T} x+c f(x)=21xTQx+bTx+c在线性流形 L [ x 0 ; p 0 , p 1 , ⋅ ⋅ ⋅ , p m − 1 ] L \left [ x_{0};p_{0},p_{1},···,p_{m-1} \right ] L[x0;p0,p1,⋅⋅⋅,pm−1]上的极小点。
这个定理看来较繁,但可借用直观的几何图形来帮助理解。 n = 3 n=3 n=3, m = 2 m=2 m=2的情形为例,如图示。
p 0 p_{0} p0和 p 1 p_{1} p1是Q共轭向量,张成了二维空间 R 2 R^{2} R2,这是过坐标原点的一个平面。 现在,过点 x 0 x_{0} x0沿 p 0 p_{0} p0方向作直线搜索得到 x 1 x_{1} x1,再过点 x 1 x_{1} x1沿 p 1 p_{1} p1方向作直线搜索得到 x 2 x_{2} x2过点 x 0 x_{0} x0由向量 p 0 p_{0} p0和 p 1 p_{1} p1张成的平面就是线性流形 L [ x 0 ; p 0 , p 1 ] L \left [ x_{0};p_{0},p_{1} \right ] L[x0;p0,p1]。它是 R 2 R^{2} R2的平行平面。
定理的论断是,最后一个迭代点 x 2 x_{2} x2处的梯度 ∇ f ( x 2 ) \nabla f(x_{2}) ∇f(x2)必与 p 0 p_{0} p0和 p 1 p_{1} p1垂直。并且 x 2 x_{2} x2是三元二次目标函数 f ( x ) f(x) f(x)在线性流形 L [ x 0 ; p 0 , p 1 ] L \left [ x_{0};p_{0},p_{1} \right ] L[x0;p0,p1](即过 x 0 x_{0} x0由 p 0 p_{0} p0和 p 1 p_{1} p1张成的平面)上的极小点。
共轭方向法算法的大体流程就是:选定初始点 x 0 x_{0} x0和下降方向向量 p 0 p_{0} p0,做直线搜索 x k + 1 = l s ( x k , p k ) x_{k+1}=ls(x_{k},p_{k}) xk+1=ls(xk,pk)。提供的梯度方向 p k + 1 p_{k+1} pk+1使得 p j T Q p k + 1 = 0 p_{j}^{T}Qp_{k+1}=0 pjTQpk+1=0, j = 0 , 1 , ⋅ ⋅ ⋅ , k j=0,1,···,k j=0,1,⋅⋅⋅,k。提供共轭方向的方法有多种。不同的提供方法将对应不同的共轭方法。每种方法也因产生共轭方向的特点而得名。
那么这里做直线搜索 x k + 1 = x k + t p k x_{k+1}=x_{k}+tp_{k} xk+1=xk+tpk中的 t t t是如何确定的呢?这里我们先回顾一下在最速下降法中是如何计算这个 t t t的。最速下降法:
依据定理 设目标函数
f
(
x
)
f(x)
f(x)具有一阶连续偏导数,若
z
=
l
s
(
x
,
p
)
z=ls(x,p)
z=ls(x,p),则
∇
f
(
z
)
T
p
=
0
\nabla f(z)^{T}p=0
∇f(z)Tp=0。,我们可以得到
g
k
+
1
⋅
g
k
=
0
g_{k+1}·g_{k}=0
gk+1⋅gk=0。由此有:
g
k
+
1
⋅
g
k
=
[
Q
(
x
k
−
t
k
g
k
)
+
b
]
T
g
(
k
)
=
0
=
[
Q
x
k
+
b
−
t
k
Q
g
k
]
T
g
(
k
)
=
0
=
[
g
k
−
t
k
Q
g
k
]
T
g
(
k
)
=
0
\begin{aligned} g_{k+1}·g_{k} & = [Q(x_{k}-t_{k}g_{k})+b]^{T}g(k)=0 \\ & = [Qx_{k}+b - t_{k}Qg_{k}]^{T}g(k)=0 \\ & = [g_{k}-t_{k}Qg_{k}]^{T}g(k)=0 \end{aligned}
gk+1⋅gk=[Q(xk−tkgk)+b]Tg(k)=0=[Qxk+b−tkQgk]Tg(k)=0=[gk−tkQgk]Tg(k)=0
由此,可求解出
t
k
t_{k}
tk:
t
k
=
g
k
T
g
k
g
k
T
Q
g
k
t_{k}=\frac{g_{k}^{T}g_{k}}{g_{k}^{T}Qg_{k}}
tk=gkTQgkgkTgk
这里还可以采用另外一种种方式计算
t
k
t_{k}
tk,下面对另外一种方式进行公式推导:
由
x
k
+
1
=
x
k
+
t
p
k
x_{k+1}=x_{k}+tp_{k}
xk+1=xk+tpk,用
Q
Q
Q左乘上式两边,然后再同时加上
b
b
b,利用
∇
f
(
x
)
=
Q
x
+
b
\nabla f(x)=Qx+b
∇f(x)=Qx+b能够得到:
∇
f
(
x
k
+
1
)
=
∇
f
(
x
k
)
+
t
Q
p
k
\nabla f(x_{k+1})=\nabla f(x_{k}) + t Q p_{k}
∇f(xk+1)=∇f(xk)+tQpk
左乘
p
k
p_{k}
pk有
p
k
T
∇
f
(
x
k
+
t
p
k
)
=
p
k
T
∇
f
(
x
k
)
+
t
p
k
T
Q
p
k
=
0
p_{k}^{T} \nabla f(x_{k}+tp_{k})=p_{k}^{T} \nabla f(x_{k}) + t p_{k}^{T} Q p_{k} = 0
pkT∇f(xk+tpk)=pkT∇f(xk)+tpkTQpk=0
由此解出:
t
=
−
p
k
T
∇
f
(
x
k
)
p
k
T
Q
p
k
t=- \frac{p_{k}^{T} \nabla f(x_{k})}{p_{k}^{T} Q p_{k}}
t=−pkTQpkpkT∇f(xk)
在最速下降法中
x
k
+
1
=
x
k
−
t
k
g
k
x_{k+1}=x_{k} - t_{k}g_{k}
xk+1=xk−tkgk,在共轭方向法中
x
k
+
1
=
x
k
+
t
k
g
k
x_{k+1}=x_{k} + t_{k}g_{k}
xk+1=xk+tkgk。
共轭梯度法
在共轭方向法中,如果初始共轭向量 p 0 p_{0} p0恰好取为初始点 x 0 x_{0} x0处的负梯度 − g 0 - g_{0} −g0,而其余共轭向量 p k p_{k} pk ( k = 1 , 2 , ⋅ ⋅ ⋅ , n − 1 ) (k=1,2,···,n-1) (k=1,2,⋅⋅⋅,n−1)由第 k k k个迭代点 x k x_{k} xk处的负梯度 − g k - g_{k} −gk与已经得到的共轭向量 p k − 1 p_{k-1} pk−1的线性组合来确定,那么这个共轭方向法就称为共轭梯度法。
针对目标函数是正定二次函数来讨论:
(1) 第一个迭代点的获得:
选定初始点
x
0
x_{0}
x0,设
x
0
≠
x
∗
x_{0} \neq x^{*}
x0=x∗(否则迭代终止),因此
∇
f
(
x
0
)
≠
0
\nabla f(x_{0}) \neq 0
∇f(x0)=0。(以下用
g
k
g_{k}
gk表示
∇
f
(
x
k
)
\nabla f(x_{k})
∇f(xk))从
x
0
x_{0}
x0出发沿
p
0
p_{0}
p0方向做直线搜索,得到第1个迭代点
x
1
=
x
0
+
t
0
p
0
x_{1}=x_{0}+t_{0}p_{0}
x1=x0+t0p0,其中
t
0
t_{0}
t0可由下式确定:
t
0
=
−
p
0
T
g
0
p
0
T
Q
p
0
=
g
0
T
g
0
p
0
T
Q
p
0
t_{0}=- \frac{p_{0}^{T} g_{0}}{p_{0}^{T} Q p_{0}} = \frac{g_{0}^{T}g_{0}}{p_{0}^{T}Qp_{0}}
t0=−p0TQp0p0Tg0=p0TQp0g0Tg0
显然
t
0
≠
0
t_{0} \neq 0
t0=0
(2) 第二个迭代点的获得:
设
x
1
≠
x
∗
x_{1} \neq x^{*}
x1=x∗,因此
g
1
≠
0
g_{1} \neq 0
g1=0。由
p
0
T
g
1
=
0
p_{0}^{T}g_{1}=0
p0Tg1=0知
p
0
p_{0}
p0与
g
1
g_{1}
g1线性无关。取
p
1
=
−
g
1
+
α
0
p
0
p_{1}=-g_{1} + \alpha _{0} p_{0}
p1=−g1+α0p0其中
α
0
\alpha_{0}
α0是使
p
1
p_{1}
p1与
p
0
p_{0}
p0共轭的待定系数,令:
p
1
T
Q
p
0
=
−
g
1
T
Q
p
0
+
α
0
p
0
T
Q
p
0
=
0
p_{1}^{T}Qp_{0}=-g_{1}^{T}Qp_{0} + \alpha_{0} p_{0}^{T}Qp_{0} = 0
p1TQp0=−g1TQp0+α0p0TQp0=0
由此解出
α
0
=
g
1
T
Q
p
0
p
0
T
Q
p
0
\alpha _{0} = \frac{g_{1}^{T}Qp_{0}}{p_{0}^{T}Qp_{0}}
α0=p0TQp0g1TQp0
并代回确定
p
1
p_{1}
p1,并获得第2个迭代点。
x
2
=
x
1
+
t
1
p
1
x_{2}=x_{1}+t_{1}p_{1}
x2=x1+t1p1
由公式
t
=
−
p
k
T
∇
f
(
x
k
)
p
k
T
Q
p
k
t=- \frac{p_{k}^{T} \nabla f(x_{k})}{p_{k}^{T} Q p_{k}}
t=−pkTQpkpkT∇f(xk)可以求得
t
1
t_{1}
t1,带入公式
p
1
=
−
g
1
+
α
0
p
0
p_{1}=-g_{1} + \alpha _{0} p_{0}
p1=−g1+α0p0可进一步优化得到:
t
1
=
−
p
1
T
g
1
p
1
T
Q
p
1
=
g
1
T
g
1
p
1
T
Q
p
1
≠
0
t_{1} = - \frac{p_{1}^{T} g_{1}}{p_{1}^{T} Q p_{1}} = \frac{g_{1}^{T} g_{1}}{p_{1}^{T} Q p_{1}} \neq 0
t1=−p1TQp1p1Tg1=p1TQp1g1Tg1=0
(3) 第三个迭代点的获得:
设
x
2
≠
x
∗
x_{2} \neq x^{*}
x2=x∗,因此
g
2
≠
0
g_{2} \neq 0
g2=0。由
p
1
T
g
2
=
0
p_{1}^{T}g_{2}=0
p1Tg2=0知
p
1
p_{1}
p1与
g
2
g_{2}
g2线性无关。取
p
2
=
−
g
2
+
α
1
p
1
p_{2}=-g_{2} + \alpha _{1} p_{1}
p2=−g2+α1p1其中
α
1
\alpha_{1}
α1是使
p
2
p_{2}
p2与
p
1
p_{1}
p1共轭的待定系数,令:
p
2
T
Q
p
1
=
−
g
2
T
Q
p
1
+
α
1
p
1
T
Q
p
1
=
0
p_{2}^{T}Qp_{1}=-g_{2}^{T}Qp_{1} + \alpha_{1} p_{1}^{T}Qp_{1} = 0
p2TQp1=−g2TQp1+α1p1TQp1=0
由此解出
α
1
=
g
2
T
Q
p
1
p
1
T
Q
p
1
\alpha _{1} = \frac{g_{2}^{T}Qp_{1}}{p_{1}^{T}Qp_{1}}
α1=p1TQp1g2TQp1
并代回确定
p
2
p_{2}
p2 ,并获得第3个迭代点。
x
3
=
x
2
+
t
2
p
2
x_{3}=x_{2}+t_{2}p_{2}
x3=x2+t2p2
其中
t
2
=
−
p
2
T
g
2
p
2
T
Q
p
2
=
g
2
T
g
2
p
2
T
Q
p
2
≠
0
t_{2} = - \frac{p_{2}^{T} g_{2}}{p_{2}^{T} Q p_{2}} = \frac{g_{2}^{T} g_{2}}{p_{2}^{T} Q p_{2}} \neq 0
t2=−p2TQp2p2Tg2=p2TQp2g2Tg2=0
上述过程仅表明
p
0
p_{0}
p0与
p
1
p_{1}
p1,
p
1
p_{1}
p1与
p
2
p_{2}
p2共轭,现在问,
p
0
p_{0}
p0与
p
2
p_{2}
p2也共轭吗?
p
2
T
Q
p
0
=
(
−
g
2
+
α
1
p
1
)
T
Q
p
0
=
−
g
2
T
Q
p
0
+
α
1
p
1
T
Q
p
0
=
−
g
2
T
Q
p
0
[
L
∣
p
1
T
Q
p
0
=
0
]
=
−
g
2
T
(
g
1
−
g
0
)
/
t
0
(
H
g
1
+
1
=
g
i
+
t
i
Q
p
i
,
t
i
≠
0
)
=
−
(
g
2
T
g
1
−
g
2
T
g
0
)
/
t
0
\begin{aligned} p_{2}^{T} Q p_{0} &=\left(-g_{2}+\alpha_{1} p_{1}\right)^{T} Q p_{0} \\ &=-g_{2}^{T} Q p_{0}+\alpha_{1} p_{1}^{T} Q p_{0} \\ &=-g_{2}^{T} Q p_{0}\left[\mathbb{L} | p_{1}^{T} Q p_{0}=0\right] \\ &=-g_{2}^{T}\left(g_{1}-g_{0}\right) / t_{0}\left(\mathrm{Hg}_{1+1}=g_{i}+t_{i} Q p_{i}, t_{i} \neq 0\right) \\ &=-\left(g_{2}^{T} g_{1}-g_{2}^{T} g_{0}\right) / t_{0} \end{aligned}
p2TQp0=(−g2+α1p1)TQp0=−g2TQp0+α1p1TQp0=−g2TQp0[L∣p1TQp0=0]=−g2T(g1−g0)/t0(Hg1+1=gi+tiQpi,ti=0)=−(g2Tg1−g2Tg0)/t0
(4) 第
k
k
k个迭代点的获得:
由
p
k
−
1
T
g
k
=
0
p_{k-1}^{T}g_{k}=0
pk−1Tgk=0知
p
k
−
1
p_{k-1}
pk−1与
g
k
g_{k}
gk线性无关。取
p
k
=
−
g
k
+
α
k
−
1
p
k
−
1
p_{k}=-g_{k} + \alpha _{k-1} p_{k-1}
pk=−gk+αk−1pk−1其中
α
k
−
1
\alpha_{k-1}
αk−1是使
p
k
p_{k}
pk与
p
k
−
1
p_{k-1}
pk−1共轭的待定系数,令:
p
k
T
Q
p
k
−
1
=
−
g
k
T
Q
p
k
−
1
+
α
k
−
1
p
k
−
1
T
Q
p
k
−
1
=
0
p_{k}^{T}Qp_{k-1}=-g_{k}^{T}Qp_{k-1} + \alpha_{k-1} p_{k-1}^{T}Qp_{k-1} = 0
pkTQpk−1=−gkTQpk−1+αk−1pk−1TQpk−1=0
由此解出
α
k
−
1
=
g
k
T
Q
p
k
−
1
p
k
−
1
T
Q
p
k
−
1
\alpha _{k-1} = \frac{g_{k}^{T}Qp_{k-1}}{p_{k-1}^{T}Qp_{k-1}}
αk−1=pk−1TQpk−1gkTQpk−1
并代回确定
p
k
p_{k}
pk ,并获得第k+1个迭代点。
x
k
+
1
=
x
k
+
t
k
p
k
x_{k+1}=x_{k}+t_{k}p_{k}
xk+1=xk+tkpk
其中
t
k
=
−
p
k
T
g
k
p
k
T
Q
p
k
=
g
k
T
g
k
p
k
T
Q
p
k
≠
0
t_{k} = - \frac{p_{k}^{T} g_{k}}{p_{k}^{T} Q p_{k}} = \frac{g_{k}^{T} g_{k}}{p_{k}^{T} Q p_{k}} \neq 0
tk=−pkTQpkpkTgk=pkTQpkgkTgk=0
以上就是共轭梯度法得核心内容。
Fletcher-Reeves共轭梯度法
为使共轭梯度算法也适用于非二次函数,需要消去算法中的
Q
Q
Q对于正定二次函数,有
Q
p
k
=
1
t
k
(
g
k
+
1
−
g
k
)
Qp_{k}=\frac{1}{t_{k}}(g_{k+1}-g_{k})
Qpk=tk1(gk+1−gk)代入到
α
k
\alpha_{k}
αk中,得:
α
k
=
g
k
+
1
T
Q
p
k
p
k
T
Q
p
k
=
g
k
+
1
T
(
g
k
+
1
−
g
k
)
p
k
T
(
g
k
+
1
−
g
k
)
\alpha_{k}=\frac{g_{k+1}^{T} Q p_{k}}{p_{k}^{T} Q p_{k}}=\frac{g_{k+1}^{T}\left(g_{k+1}-g_{k}\right)}{p_{k}^{T}\left(g_{k+1}-g_{k}\right)}
αk=pkTQpkgk+1TQpk=pkT(gk+1−gk)gk+1T(gk+1−gk)
此式中已不再出现矩阵
Q
Q
Q,将
p
k
=
−
g
k
+
α
k
−
1
p
k
−
1
p_{k}=-g_{k} + \alpha _{k-1} p_{k-1}
pk=−gk+αk−1pk−1两端转置运算,并同时右乘
g
k
+
1
g_{k+1}
gk+1得:
p
k
T
g
k
+
1
=
−
g
k
T
g
k
+
1
+
α
k
−
1
p
k
−
1
T
g
k
+
1
p_{k}^{T}g_{k+1}=-g_{k}^{T}g_{k+1} + \alpha _{k-1} p_{k-1}^{T}g_{k+1}
pkTgk+1=−gkTgk+1+αk−1pk−1Tgk+1
将共轭方向法中的定理带入得到
p
k
−
1
T
g
k
+
1
=
0
p_{k-1}^{T}g_{k+1}=0
pk−1Tgk+1=0,由直线搜索的性质有
p
k
T
g
k
+
1
=
0
p_{k}^{T}g_{k+1}=0
pkTgk+1=0,带入上式有
g
k
+
1
T
g
k
=
0
g_{k+1}^{T}g_{k}=0
gk+1Tgk=0。此外:
p
k
T
g
k
=
−
g
k
T
g
k
+
α
k
−
1
p
k
−
1
T
g
k
=
−
g
k
T
g
k
p_{k}^{T}g_{k}=-g_{k}^{T}g_{k} + \alpha _{k-1} p_{k-1}^{T}g_{k}=-g_{k}^{T}g_{k}
pkTgk=−gkTgk+αk−1pk−1Tgk=−gkTgk
带入
α
k
\alpha_{k}
αk,得到:
α
k
=
g
k
+
1
T
g
k
+
1
g
k
T
g
k
=
∥
g
k
+
1
∥
2
∥
g
k
∥
2
\alpha_{k}=\frac{g_{k+1}^{T} g_{k+1}}{g_{k}^{T} g_{k}}=\frac{\left\|g_{k+1}\right\|^{2}}{\left\|g_{k}\right\|^{2}}
αk=gkTgkgk+1Tgk+1=∥gk∥2∥gk+1∥2
此式称为Fletcher-Reeves公式(1964年)。
我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!