[机器学习必知必会]梯度下降法

2019-08-25  本文已影响0人  TOMOCAT

前言

梯度下降法gradient descent是求解无约束最优化问题的一种最常用的方法,它是一种迭代算法,每一步需要求解目标函数的梯度向量。

问题抽象

f(x)R^n上具有一阶连续偏导数的函数,要求解的无约束问题是:\min f(x), x\in R^n, 其中x^*表示目标函数f(x)的极小值点

关键概念

直观理解

以下图为例,开始时我们处于黑色圆点的初始值(记为x^{(0)}),我们需要尽快找到函数的最小值点,最快的方法就是沿着坡度最陡的方向往下走

图源:https://www.nxpic.org/article/id-330329

算法细节

由于f(x)具有一阶连续导函数,若第k次迭代值为x^{(k)},则可将f(x)x^{(k)}附近进行一阶泰勒展开:
f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})
其中g_k=g(x^{(k)})=\triangledown f(x^{(k)})x^{(k)}的梯度。
接着我们求出第k+1次的迭代值x^{(k+1)}:
x^{(k+1)}\leftarrow x^{(k)}+\lambda_kp_k
其中p_k是搜索方向,取负梯度方向p_k=-\triangledown f(x^{(k)})\lambda_k是步长,需满足:
f(x^{(k)}+\lambda_kp_k)=\min_{\lambda\geq0}f(x^{(k)}+\lambda p_k)

算法实现

  1. 取初始值x^{(0)}\in R^n,置k0
  2. 计算f(x^{(k)})
  3. 计算梯度g_k=g(x^{(k)}),当||g_k||<\epsilon时停止迭代,令x^*=x^{(k)};否则,令p_k=-g(x^{(k)}),求\lambda_k,使f(x^{(k)}+\lambda_kp_k)=\min_{\lambda \geq0}f(x^{(k)}+\lambda p_k)
  4. x^{(k+1)}←x^{(k)}+\lambda_k p_k,计算f(x^{(k+1)}),当|f(x^{(k+1)})-f(x^{(k)})|<\epsilon|x^{x(k+1)-x^{(k)}}|<\epsilon时停止迭代,令x^*=x^{(k+1)}
  5. 否则,令k=k+1,回到步骤3

算法调优

注意事项

Reference

[1] 图源:https://www.nxpic.org/article/id-330329
[2] 统计学习方法

上一篇 下一篇

猜你喜欢

热点阅读