梯度下降法
也称为最速下降法(steepest descent),用来求解无约束的最优化问题,有约束的最优化问题使用拉格朗日乘子法(lagrangian multiplier method);梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。
目标函数f(x),已知f(x)可导且有极小值,求解无约束条件下f(x)的极小值点
x∗
,及此时f(x)的极小值。
梯度下降法是一种迭代算法,首先选取初值
x0
,朝着使f(x)减小的方向不断迭代更新
x
,直到f(x)收敛到极小值。这里的问题就变成了:如何迭代
由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新 x 的值,从而达到以最快速度减少函数值的目的。
f(x)关于
xk+1←xk+λkPk
其中 λk 为步长或者学习率, Pk 是在 xk 处的负梯度,即 −∇f(xk) 。步长 λk 由一维搜索确定,即 λk 使得
f(xk+λkPk)=minλ≥0f(xk+λPk)
梯度下降法的步骤:
- 目标函数 f(x) , f(x) 的梯度为 g(x)=∇f(x) ,阈值 ε
- 置 k=0 ,取自变量初始值 x0∈Rn
- 计算 f(xk)
- 计算 xk 处的梯度 ∇f(xk) ,若梯度小于阈值,即 ∣∣∇f(xk)∣∣≺ε ,则停止迭代,此时的 xk 即为所求的极小值点,否则根据迭代规则求 xk+1←xk+λkPk ,其中 Pk=−∇f(x) ,接下来求 λk
- f(xk+λkPk)=minλ≥0f(xk+λPk)
- 已求得
xk+1
,计算
f(xk+1)
,当在
k
和
k+1 处的函数值变化或者自变量的变化小于阈值,即当 ∣∣f(xk+1)−f(xk)∣∣≺ε 或者 ∣∣xk+1−xk∣∣≺ε 时,停止迭代 - 否则,令 k=k+1 ,转到步骤3继续迭代
梯度下降法的局限性
- 用梯度下降法得到的最优解往往是局部最优解,可能会陷入目标函数的局部极小点,不能保证收敛到全局最优点
- 若步长选择太大,收敛速度可能一开始会较快,但可能会容易导致算法出现振荡而不能收敛或者收敛很慢;若步长太小,则算法收敛太慢