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