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