一、参考
《数值最优化算法与理论》
二、无约束问题解的最优性条件
设
f
:
R
2
→
R
f : R^2 \to R
f:R2→R连续可微。考虑如下无约束最优化问题:
m
i
n
f
(
x
)
,
(
x
∈
R
n
)
min f(x), \quad (x \in R^n)
minf(x),(x∈Rn)
1. 下降方向
设
x
,
d
∈
R
n
x,d \in R^n
x,d∈Rn。若存在数
α
‾
>
0
\overline{\alpha } > 0
α>0, 使得:
f
(
x
+
α
d
)
<
f
(
x
)
,
(
∀
α
∈
(
0
,
α
‾
)
)
f(x+\alpha d) < f(x), \quad (\forall \alpha \in (0, \overline{\alpha }))
f(x+αd)<f(x),(∀α∈(0,α))
则称d是函数
f
f
f在点
x
x
x处的一个下降方向
。
下降方向从几何上可解释为:当从点
x
x
x出发,沿方向
d
d
d移动时,函数
f
f
f的值变化呈单调递减的趋势。若令:
ϕ
(
α
)
=
f
(
x
+
α
d
)
\phi (\alpha )= f(x+\alpha d)
ϕ(α)=f(x+αd)
则方向
d
d
d是
f
f
f在
x
x
x处的下降方向等价于一元函数
ϕ
\phi
ϕ 在原点处单调递减。
定理
:设
f
f
f连续可微且
∇
f
(
x
)
≠
0
\nabla f(x) \neq 0
∇f(x)=0 , 若向量
d
d
d满足
∇
f
(
x
)
T
d
<
0
\nabla f(x)^Td <0
∇f(x)Td<0, 则它是
f
f
f在
x
x
x处的一个下降方向。
证
: 利用Tayor展开,不难得到:当
α
>
0
\alpha > 0
α>0充分小时:
f
(
x
+
α
d
)
=
f
(
x
)
+
α
∇
f
(
x
)
T
d
+
o
(
α
)
<
f
(
x
)
f(x+\alpha d)=f(x)+\alpha \nabla f(x)^Td+o(\alpha) < f(x)
f(x+αd)=f(x)+α∇f(x)Td+o(α)<f(x)
即
d
d
d 是
f
f
f 在
x
x
x 处的一个下降方向。
2. 无约束问题解的一阶必要条件
设
f
:
R
n
→
R
f:R^n \to R
f:Rn→R 连续可微,
x
∗
x^*
x∗是无约束问题的一个局部最优解,则
x
∗
x^*
x∗满足:
∇
f
(
x
∗
)
=
0
\nabla f(x^*)=0
∇f(x∗)=0
证明
:任给
p
∈
R
n
p \in R^n
p∈Rn, 由局部最优解的定义,对任意充分小的数
t
>
0
t>0
t>0,有:
f
(
x
∗
)
≤
f
(
x
∗
+
t
p
)
=
f
(
x
∗
)
+
t
∇
f
(
x
∗
)
T
p
+
o
(
t
)
f(x^*)\leq f(x^*+tp) = f(x^*)+t\nabla f(x^*)^Tp+o(t)
f(x∗)≤f(x∗+tp)=f(x∗)+t∇f(x∗)Tp+o(t)
不等式两端同时减去
f
(
x
∗
)
f(x^*)
f(x∗)后除
t
t
t,得:
0
≤
∇
f
(
x
∗
)
T
p
+
o
(
t
)
t
0 \leq \nabla f(x^*)^Tp+ \frac {o(t)} {t}
0≤∇f(x∗)Tp+to(t)
并令
t
→
0
+
t \to 0^+
t→0+ 可得
∇
f
(
x
∗
)
T
p
≥
0
,
∀
p
∈
R
n
\nabla f(x^*)^Tp \geq 0 , \forall p \in R^n
∇f(x∗)Tp≥0,∀p∈Rn。特别令
p
=
−
∇
f
(
x
∗
)
p=-\nabla f(x^*)
p=−∇f(x∗)得:
−
∣
∣
∇
f
(
x
∗
)
∣
∣
2
=
−
∇
f
(
x
∗
)
T
∇
f
(
x
∗
)
≥
0
-||\nabla f(x^*)||^2=-\nabla f(x^*)^T \nabla f(x^*) \geq 0
−∣∣∇f(x∗)∣∣2=−∇f(x∗)T∇f(x∗)≥0
注:这里用到的向量范数为Euclid范数,即对 a ∈ R n , ∣ ∣ a ∣ ∣ = ( a T a ) 1 / 2 a \in R^n , ||a||=(a^Ta)^{1/2} a∈Rn,∣∣a∣∣=(aTa)1/2 。
从而, ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇f(x∗)=0 。
3. 无约束问题解的二阶必要条件
设
f
:
R
n
→
R
f:R^n \to R
f:Rn→R二次连续可微,
x
∗
x^*
x∗是无约束问题的一个局部最优解,则
x
∗
x^*
x∗满足:
{
∇
f
(
x
∗
)
=
0
∇
2
f
(
x
∗
)
半
正
定
\begin{cases} \nabla f(x^*)=0 \\\\ \nabla ^2f(x^*)半正定 \end{cases}
⎩⎪⎨⎪⎧∇f(x∗)=0∇2f(x∗)半正定
4. 无约束问题解的二阶充分条件
设
f
:
R
n
→
R
f:R^n \to R
f:Rn→R二次连续可微,若
x
∗
x^*
x∗满足:
{
∇
f
(
x
∗
)
=
0
∇
2
f
(
x
∗
)
正
定
\begin{cases} \nabla f(x^*)=0 \\\\ \nabla ^2f(x^*)正定 \end{cases}
⎩⎪⎨⎪⎧∇f(x∗)=0∇2f(x∗)正定
则
x
∗
x^*
x∗是无约束问题的一个严格局部最优解。
三、下降算法的一般步骤
1.求解无约束问题的下降算法的基本思想
从某个初始点 x ( 0 ) x^{(0)} x(0)出发,按照使目标函数值下降的原则构造点列 { x ( k ) } \{x^{(k)}\} {x(k)}, 即点列 { x ( k ) } \{x^{(k)}\} {x(k)}满足条件 f ( x ( k + 1 ) ) < f ( x ( k ) ) , ( ∀ k = 0 , 1 , ⋅ ⋅ ⋅ ) f(x^{(k+1)}) < f(x^{(k)}), (\forall k = 0,1,···) f(x(k+1))<f(x(k)),(∀k=0,1,⋅⋅⋅) 。算法的最终目标是使得点列 { x ( k ) } \{x^{(k)}\} {x(k)}中的某个点或某个极限点是无约束最优化问题的解或稳定点。
设
d
(
k
)
d^{(k)}
d(k)是
f
f
f在
x
(
k
)
x^{(k)}
x(k)处的一个下降方向且满足:
∇
f
(
x
(
k
)
)
T
d
(
k
)
<
0
\nabla f(x^{(k)})^T d^{(k)} < 0
∇f(x(k))Td(k)<0
从而,当
α
>
0
\alpha >0
α>0充分小时,
f
(
x
(
k
)
+
α
d
(
k
)
)
<
f
(
x
(
k
)
)
f(x^{(k)}+\alpha d^{(k)}) < f(x^{(k)})
f(x(k)+αd(k))<f(x(k))。因此,可取
x
(
k
+
1
)
=
x
(
k
)
+
α
k
d
(
k
)
x^{(k+1)}=x^{(k)}+ \alpha _k d^{(k)}
x(k+1)=x(k)+αkd(k), 其中,
α
>
0
\alpha >0
α>0使得
f
(
x
(
k
)
+
α
k
d
(
k
)
)
<
f
(
x
(
k
)
)
f(x^{(k)}+\alpha _k d^{(k)}) < f(x^{(k)})
f(x(k)+αkd(k))<f(x(k))。在此基础上,我们给出求解无约束问题下降算法的步骤如下。
2. 求解无约束问题的下降算法的步骤
- 给定初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)∈Rn,精度 ϵ > 0 \epsilon >0 ϵ>0。令 k = 0 k=0 k=0。
- 若 ∣ ∣ ∇ f ( x ( k ) ∣ ∣ < ϵ ||\nabla f(x^{(k)}|| < \epsilon ∣∣∇f(x(k)∣∣<ϵ,则终止算法,得解 x ( k ) x^{(k)} x(k)。否则,则转3.
- 确定下降方向
d
(
k
)
d^{(k)}
d(k),使得:
∇ f ( x ( k ) ) T d ( k ) < 0 \nabla f(x^{(k)})^T d^{(k)} < 0 ∇f(x(k))Td(k)<0 - 确定步长
α
k
>
0
\alpha _k >0
αk>0,使得:
f ( x ( k ) + α k d ( k ) ) < f ( x ( k ) ) f(x^{(k)}+\alpha _k d^{(k)}) < f(x^{(k)}) f(x(k)+αkd(k))<f(x(k)) - 令 x ( k + 1 ) = x ( k ) + α k d ( k ) , k = k + 1 x^{(k+1)} = x^{(k)} + \alpha_k d^{(k)}, k=k+1 x(k+1)=x(k)+αkd(k),k=k+1。转2.
四、线性搜索
线性搜索有两种:精确线性搜索 和 非精确线性搜索。
1. 精确线性搜索—黄金分割法(0.618法)
对于一般非线性函数极小化问题,难以得到精确线性搜索步长的解析表达式。此时可采用数值方法确定步长。
黄金分割法是确定精确线性搜素步长的一种算法。该算法适用于求一元单峰函数的极小值点问题。
黄金分割法的基本思想是构造闭区间序列
{
[
a
k
,
b
k
]
}
\{[ a_k, b_k]\}
{[ak,bk]},满足
α
ˉ
∈
[
a
k
+
1
,
b
k
+
1
]
⊂
[
a
k
,
b
k
]
\bar {\alpha } \in [a_{k+1},b_{k+1}] \subset [a_k, b_k]
αˉ∈[ak+1,bk+1]⊂[ak,bk],且区间的长度
b
k
−
a
k
b_k - a_k
bk−ak 按比例缩小,即
b
k
+
1
−
a
k
+
1
=
λ
(
b
k
−
a
k
)
,
λ
∈
(
0
,
1
)
b_{k+1} - a_{k+1} = \lambda (b_k - a_k), \lambda \in (0,1)
bk+1−ak+1=λ(bk−ak),λ∈(0,1)。从而,
b
k
−
a
k
→
0
b_k - a_k \to 0
bk−ak→0。由此可得
a
k
→
α
ˉ
,
b
k
→
α
ˉ
a_k \to \bar {\alpha }, b_k \to \bar {\alpha }
ak→αˉ,bk→αˉ。该算法的实现过程如下:
在区间
[
a
k
,
b
k
]
[ a_k, b_k]
[ak,bk]上对称取两点
u
k
<
v
k
u_k < v_k
uk<vk,即有:
v
k
−
a
k
b
k
−
a
k
=
b
k
−
u
k
b
k
−
a
k
=
λ
\frac {v_k - a_k} {b_k - a_k} = \frac {b_k - u_k} {b_k - a_k} = \lambda
bk−akvk−ak=bk−akbk−uk=λ
或等价地
u
k
=
b
k
−
λ
(
b
k
−
a
k
)
,
v
k
=
a
k
+
λ
(
b
k
−
a
k
)
u_k = b_k - \lambda (b_k - a_k), \quad v_k = a_k+ \lambda (b_k - a_k)
uk=bk−λ(bk−ak),vk=ak+λ(bk−ak)
比较函数值
ϕ
(
u
k
)
\phi (u_k)
ϕ(uk)与
ϕ
(
v
k
)
\phi (v_k)
ϕ(vk)的大小,有下列三种情况:
- ϕ ( u k ) < ϕ ( v k ) \phi (u_k) < \phi (v_k) ϕ(uk)<ϕ(vk)。此时必有 α ˉ ∈ [ a k , v k ] \bar {\alpha} \in [a_k,v_k] αˉ∈[ak,vk]。故令 [ a k + 1 , b k + 1 ] = [ a k , v k ] 。 [a_{k+1},b_{k+1}] = [a_k,v_k]。 [ak+1,bk+1]=[ak,vk]。
- ϕ ( u k ) > ϕ ( v k ) \phi (u_k) > \phi (v_k) ϕ(uk)>ϕ(vk)。此时必有 α ˉ ∈ [ u k , b k ] \bar {\alpha} \in [u_k,b_k] αˉ∈[uk,bk]。故令 [ a k + 1 , b k + 1 ] = [ u k , b k ] 。 [a_{k+1},b_{k+1}] = [u_k,b_k]。 [ak+1,bk+1]=[uk,bk]。
- ϕ ( u k ) = ϕ ( v k ) \phi (u_k) = \phi (v_k) ϕ(uk)=ϕ(vk)。此时必有 α ˉ ∈ [ u k , v k ] \bar {\alpha} \in [u_k,v_k] αˉ∈[uk,vk]。故令 [ a k + 1 , b k + 1 ] = [ u k , v k ] 。 [a_{k+1},b_{k+1}] = [u_k,v_k]。 [ak+1,bk+1]=[uk,vk]。
2. 非精确线性搜索
精确线性搜索要求步长 α k \alpha _k αk取到一元函数 ϕ ( α ) = f ( x ( k ) + α d ( k ) ) \phi (\alpha )= f(x^{(k)}+\alpha d^{(k)}) ϕ(α)=f(x(k)+αd(k))的最小值点。计算量较大。非精确线性搜索只要求步长 α k \alpha _k αk使得函数 ϕ \phi ϕ在点 α k \alpha _k αk处的值 ϕ ( α k ) \phi (\alpha _k) ϕ(αk) (即 f ( x ( k ) + α k d ( k ) ) f(x^{(k)} + \alpha _k d^{(k)}) f(x(k)+αkd(k)))较 ϕ ( 0 ) \phi (0) ϕ(0)(即 f ( x ( k ) ) f(x^{(k)}) f(x(k)))有一定量的下降量。因此在计算容易实现。下面介绍一种常用的非精确线性搜索。
Armijo型线性搜索
:给定
σ
1
∈
(
0
,
1
/
2
)
\sigma _1 \in (0, 1/2)
σ1∈(0,1/2),取
α
k
>
0
\alpha _k >0
αk>0使得:
f
(
x
(
k
)
+
α
k
d
(
k
)
)
≤
f
(
x
(
k
)
)
+
σ
1
α
k
∇
f
(
x
(
k
)
)
T
d
(
k
)
f(x^{(k)}+\alpha _kd^{(k)}) \leq f(x^{(k)}) + \sigma _1 \alpha _k \nabla f(x^{(k)})^Td^{(k)}
f(x(k)+αkd(k))≤f(x(k))+σ1αk∇f(x(k))Td(k)
利用函数
ϕ
(
α
)
=
f
(
x
(
k
)
+
α
d
(
k
)
)
\phi (\alpha )= f(x^{(k)}+\alpha d^{(k)})
ϕ(α)=f(x(k)+αd(k)),上式可等价地写为:
ϕ
(
α
k
)
≤
ϕ
(
0
)
+
σ
1
α
k
ϕ
′
(
0
)
\phi (\alpha _k) \leq \phi (0) + \sigma _1 \alpha _k \phi '(0)
ϕ(αk)≤ϕ(0)+σ1αkϕ′(0)
由于
d
(
k
)
d^{(k)}
d(k)是
f
f
f在
x
(
k
)
x^{(k)}
x(k)处的下降方向且满足
ϕ
′
(
0
)
=
∇
f
(
x
(
k
)
)
T
d
(
k
)
<
0
\phi '(0) = \nabla f(x^{(k)})^Td^{(k)} < 0
ϕ′(0)=∇f(x(k))Td(k)<0,容易证明:上面的不等式对充分小的正数
α
k
\alpha _k
αk均成立。而在计算上,希望步长
α
k
\alpha _k
αk尽可能大。通常,可通过如下方式获得。给定
β
>
0
,
ρ
∈
(
0
,
1
)
\beta >0, \rho \in (0,1)
β>0,ρ∈(0,1)。取步长
α
k
\alpha _k
αk为集合
{
β
ρ
i
,
i
=
0
,
1
,
⋅
⋅
⋅
}
\{ \beta \rho ^i , i = 0, 1, ··· \}
{βρi,i=0,1,⋅⋅⋅}中使得上面的不等式成立的最大者。该算法实现过程如下:
- 若 α k = 1 \alpha _k = 1 αk=1满足上面的不等式,则取 α k = 1 \alpha _k = 1 αk=1。否则转下一步。
- 给定常数 β > 0 , ρ ∈ ( 0 , 1 ) \beta > 0, \rho \in (0,1) β>0,ρ∈(0,1)。令 α k = β \alpha _k = \beta αk=β。
- 若 α k = 1 \alpha _k = 1 αk=1满足上面的不等式,则终止计算,得步长 α k \alpha _k αk。否则,转步3。
- 令 α k = ρ α k \alpha _k= \rho \alpha _k αk=ραk。转步2。