求解的问题: 无约束最优化问题.
基本方式: 迭代.
设 f(x) f ( x ) 在 Rn R n 上有一阶连续偏导数, 则要求解的最优化问题可以表示为: minx∈Rnf(x) min x ∈ R n f ( x )
(1) 取初值 x(0)∈Rn x ( 0 ) ∈ R n , 置k=0
(2) 算出 f(x(k)) f ( x ( k ) )
(3) 算出 f(x) f ( x ) 在 x(k) x ( k ) 这个点处的梯度 gk g k , 如果 gk g k 小于某个之前给定的阈值, 则停止迭代, 令 f(x) f ( x ) 的极小点 x∗=x(k) x ∗ = x ( k ) , 否则令 pk=−gk p k = − g k , 求迭代步长 λk λ k 使得 f(x(k)+λkpk)=minλ≥0f(x(k)+λpk) f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k ) .
(4) 更新x的值:
x(k+1)=x(k)+λkpk
x
(
k
+
1
)
=
x
(
k
)
+
λ
k
p
k
, 计算
f(x(k+1))
f
(
x
(
k
+
1
)
)
.
如果
||f(x(k+1))−f(x(k))||
|
|
f
(
x
(
k
+
1
)
)
−
f
(
x
(
k
)
)
|
|
或
||x(k+1)−x(k)||
|
|
x
(
k
+
1
)
−
x
(
k
)
|
|
小于之前给定的阈值, 则停止迭代,
x∗=x(k)
x
∗
=
x
(
k
)
.
(5) 否则, k=k+1, 返回(3)
备注: (1) 只有f(x)是凸函数时, 用梯度下降法得出的结果才是全局最优解. (2) 一般情况下, 梯度下降法的收敛速度未必是最快的.