最速下降法
无约束极值问题的一般形式为
min
f
(
X
)
,
X
∈
E
(
n
)
\min f(X),X\in E^{(n)}
minf(X),X∈E(n)
函数
f
(
X
)
f(X)
f(X)是一阶或者二阶可微的。
定义
最速下降法又称梯度法,是求解无约束极值问题其他解析法的基础。
如果在
X
0
∈
E
(
n
)
X^0\in E^{(n)}
X0∈E(n) 处,
∇
f
(
X
0
)
≠
0
\nabla f(X^0)\neq0
∇f(X0)=0 ,所有使
∇
f
(
X
0
)
T
P
<
0
\nabla f(X^0)^TP<0
∇f(X0)TP<0
成立的非0向量
P
∈
E
n
P\in E^n
P∈En ,都是
f
(
X
)
f(X)
f(X) 在
X
0
X^0
X0 处的下降方向,这时对于充分小的
λ
>
0
\lambda>0
λ>0 ,必有
f
(
X
0
+
λ
P
)
<
f
(
X
0
)
f(X^0+\lambda P)<f(X^0)
f(X0+λP)<f(X0) 若记
X
1
=
X
0
+
λ
P
X^1=X^0+\lambda P
X1=X0+λP ,那么上式可写为
f
(
X
1
)
<
f
(
X
0
)
f(X^1)<f(X^0)
f(X1)<f(X0) 。
这表明,只要选取适当的方向
P
P
P和
λ
\lambda
λ ,使之满足上式,便可保证函数值
f
(
X
0
)
f(X^0)
f(X0)有所下降,其中
λ
\lambda
λ 称之为步长。现在的问题是应该如何选取方向
P
0
P^0
P0 和
λ
0
\lambda_0
λ0 ,使得
λ
0
∇
f
(
X
0
)
T
P
0
\lambda_0\nabla f(X^0)^TP^0
λ0∇f(X0)TP0 尽可能地小。从而使
f
(
X
0
+
λ
0
P
0
)
=
f
(
X
0
)
+
λ
0
∇
f
(
X
0
)
T
P
0
+
O
(
λ
0
)
f(X^0+\lambda_0P^0)=f(X^0)+\lambda_0\nabla f(X^0)^TP^0+O(\lambda_0)
f(X0+λ0P0)=f(X0)+λ0∇f(X0)TP0+O(λ0) 可能地小。首先。由向量代数知道
∇
f
(
X
0
)
T
P
0
=
∥
∇
f
(
X
0
)
∥
2
⋅
∥
P
0
∥
2
⋅
cos
θ
\nabla f(X^0)^TP^0=\Vert \nabla f(X^0)\Vert_2\cdot\Vert P^0\Vert_2\cdot \cos\theta
∇f(X0)TP0=∥∇f(X0)∥2⋅∥P0∥2⋅cosθ 其中
θ
\theta
θ是
∇
f
(
X
0
)
\nabla f(X^0)
∇f(X0) 与
P
0
P^0
P0 间的夹角。由此可以看出,当
θ
=
π
\theta=\pi
θ=π ,即
P
0
=
−
∇
f
(
X
0
)
P^0=-\nabla f(X^0)
P0=−∇f(X0) 时,
∇
f
(
x
0
)
P
0
\nabla f(x^0)P^0
∇f(x0)P0 取最小值,也就是说,在
X
0
X^0
X0 处,沿着负梯度方向,是
f
(
X
)
f(X)
f(X) 下降最快的方向。所以当取
P
0
=
−
∇
f
(
X
0
)
P^0=-\nabla f(X^0)
P0=−∇f(X0) 时,算法称为最速下降法或者梯度法。
步长的确定方法
- 定长法
每次迭代都取 λ k \lambda_k λk 为相同的值 λ \lambda λ .不过这里的搜索方向 P k P^k Pk 都是单位向量,即 P K = ∇ f ( X k ) ∥ ∇ f ( X k ) ∥ 2 P^K=\frac{\nabla f(X^k)}{\Vert\nabla f(X^k)\Vert_2} PK=∥∇f(Xk)∥2∇f(Xk) - 最优步长法
在迭代过程中,每次 λ k \lambda_k λk 是一个与 X k X^k Xk 有关的变量,即由 min f ( X k − λ ∇ f ( X k ) ) , λ ≥ 0 \min f(X^k-\lambda\nabla f(X^k)),\lambda\geq0 minf(Xk−λ∇f(Xk)),λ≥0 来确定 λ k \lambda_k λk ,这样的 λ k \lambda_k λk 成为最优步长。
计算步骤:
首先给定初始近似点 x 0 x^0 x0和精度 ϵ > 0 \epsilon>0 ϵ>0 ,令 k = 0 k=0 k=0 .
- 计算 ∇ f ( X K ) \nabla f(X^K) ∇f(XK) ,若 ∥ ∇ f ( X 0 ) ∥ 2 < ϵ \Vert\nabla f(X^0)\Vert^2<\epsilon ∥∇f(X0)∥2<ϵ ,则称 X 0 X^0 X0 即为所求近似极小点,结束;否则转入下步。
- 求 min f ( X 0 − λ ∇ f ( X 0 ) ) , λ ≥ 0 \min f(X^0-\lambda\nabla f(X^0)),\lambda\geq0 minf(X0−λ∇f(X0)),λ≥0 得 λ 0 \lambda_0 λ0 ,并计算 X 0 − λ 0 ∇ f ( X 0 ) X^0-\lambda_0\nabla f(X^0) X0−λ0∇f(X0) , K ⇒ 1 K\Rightarrow1 K⇒1 .
- 一般地,若求得 X k X^k Xk ,则计算 ∇ f ( X k ) \nabla f(X^k) ∇f(Xk) ,若 ∥ ∇ f ( X k ) ∥ 2 ≤ ϵ \Vert\nabla f(X^k)\Vert^2\leq\epsilon ∥∇f(Xk)∥2≤ϵ ,则 X k X^k Xk 为所求近似极小点,否则转入下步。
- 求
min
f
(
X
k
−
λ
∇
f
(
X
k
)
)
\min f(X^k-\lambda\nabla f(X^k))
minf(Xk−λ∇f(Xk)) ,得
λ
k
\lambda_k
λk 并计算
X k + 1 = X k − λ k ∇ f ( X k ) , k ⇒ k + 1 X^{k+1}=X^k-\lambda_k\nabla f(X^k),k\Rightarrow k+1 Xk+1=Xk−λk∇f(Xk),k⇒k+1
转第3步继续迭代,直至满足精度要求为止。
参考文献
运筹学高级教程 沈荣芳 第二版