梯度下降法和牛顿法介绍
梯度下降法和牛顿法都是求解无约束最优化问题的常用方法。
假设f(x)f(x)为RnRn上具有一阶连续偏导数的函数,要求解的无约束最优化问题为
x∗x∗ 表示目标函数的极小点。下面分别介绍梯度下降法和牛顿法。
梯度下降法
梯度下降法是一种迭代算法。选取适当的初值x(0)x(0),不断迭代,更新xx的值,进行目标函数的极小化,直到收敛。因为负梯度方向是使函数值下降最快的方向,在迭代的每一步,以扶梯度方向更新 的值,从而达到减少函数值的目的。
由于f(x)f(x)具有一阶连续偏导数,若第k次迭代值为x(k)x(k),则可将f(x)f(x)在x(k)x(k)附近进行一阶泰勒展开:
这里, gk=g(x(k))=∇f(x(k))gk=g(x(k))=∇f(x(k)) 为 f(x)f(x) 在 x(k)x(k) 处的梯度。
求出第k+1次迭代值x(k+1)x(k+1):
其中, pkpk 是搜索方向,取负梯度方向 pk=−∇f(x(k))pk=−∇f(x(k)) , λkλk 是步长,由一维搜索确定,即 λkλk 使得
牛顿法
牛顿法收敛速度快,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂,可通过拟牛顿法简化计算过程。
假设f(x)f(x)具有二阶连续偏导数,若第k次迭代值为x(k)x(k),则可在x(k)x(k)附近进行二阶泰勒展开:
这里, gk=g(x(k))=∇f(x(k))gk=g(x(k))=∇f(x(k)) 为 f(x)f(x) 在 x(k)x(k) 处的梯度, H(x(k))H(x(k)) 是