梯度下降法 gradient descent

梯度下降法

也称为最速下降法(steepest descent),用来求解无约束的最优化问题,有约束的最优化问题使用拉格朗日乘子法(lagrangian multiplier method);梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。

目标函数f(x),已知f(x)可导且有极小值,求解无约束条件下f(x)的极小值点 x ,及此时f(x)的极小值。
梯度下降法是一种迭代算法,首先选取初值 x0 ,朝着使f(x)减小的方向不断迭代更新 x ,直到f(x)收敛到极小值。这里的问题就变成了:如何迭代 x 才使得f(x)不断逼近极小值,并使得f(x)下降得最快?

由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新 x 的值,从而达到以最快速度减少函数值的目的。

f(x)关于 x 的导数为 f,(x)=df(x)dx ,若 x 的第 k 次迭代值为 xk ,在 xk 处的梯度为 f(xk)=f,(xk) ,则 x 的第 k+1 次迭代值 xk+1 为:

xk+1xk+λkPk

其中 λk 为步长或者学习率, Pk 是在 xk 处的负梯度,即 f(xk) 。步长 λk 由一维搜索确定,即 λk 使得

f(xk+λkPk)=minλ0f(xk+λPk)

梯度下降法的步骤:

  1. 目标函数 f(x) f(x) 的梯度为 g(x)=f(x) ,阈值 ε
  2. k=0 ,取自变量初始值 x0Rn
  3. 计算 f(xk)
  4. 计算 xk 处的梯度 f(xk) ,若梯度小于阈值,即 f(xk)ε ,则停止迭代,此时的 xk 即为所求的极小值点,否则根据迭代规则求 xk+1xk+λkPk ,其中 Pk=f(x) ,接下来求 λk
  5. f(xk+λkPk)=minλ0f(xk+λPk)
  6. 已求得 xk+1 ,计算 f(xk+1) ,当在 k k+1 处的函数值变化或者自变量的变化小于阈值,即当 f(xk+1)f(xk)ε 或者 xk+1xkε 时,停止迭代
  7. 否则,令 k=k+1 ,转到步骤3继续迭代

梯度下降法的局限性

  1. 用梯度下降法得到的最优解往往是局部最优解,可能会陷入目标函数的局部极小点,不能保证收敛到全局最优点
  2. 若步长选择太大,收敛速度可能一开始会较快,但可能会容易导致算法出现振荡而不能收敛或者收敛很慢;若步长太小,则算法收敛太慢

你可能感兴趣的:(优化,梯度下降,机器学习,统计,机器学习)