统计学习方法--梯度下降法

与公众号同步更新,详细内容及相关ipynb文件在公众号中,公众号:AI入门小白

梯度下降法(gradient descent) 或最速下降法(steepest descent) 是求解无约束最优化问题的一种最常用的方法,具有实现简单的优点。梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。

假设 f ( x ) f(x) f(x) R n R^n Rn上具有一阶连续偏导数的函数。要求解的无约束最优化问题是
min ⁡ x ∈ R n f ( x ) (A.1) \min_{x \in R^n} f(x) \quad \tag{A.1} xRnminf(x)(A.1)
x ∗ x^* x表示目标函数 f ( x ) f(x) f(x)的极小点。

梯度下降法是一种选代算法。选取适当的初值 x ( 0 ) x^{(0)} x(0),不断迭代,更新 x x x的值,进行目标函数的极小化, 直到收敛。由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新 x x x的值,从而达到减少函数值的目的。

由于 f ( x ) f(x) f(x)具有一阶连续偏导数,若第 k k k次迭代值为 x ( k ) x^{(k)} x(k),则可将 f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)附近进行一阶泰勒展开:
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) (A.2) f(x) = f(x^{(k)}) + g_k^T (x - x^{(k)}) \quad \tag{A.2} f(x)=f(x(k))+gkT(xx(k))(A.2)
这里, g k = g ( x ( k ) ) = ▽ f ( x ( k ) ) g_k = g(x^{(k)}) = \triangledown f(x^{(k)}) gk=g(x(k))=f(x(k)) f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)的梯度。

求出第 k + 1 k + 1 k+1次迭代值 x ( k + 1 ) x^{(k+1)} x(k+1)
x ( k + 1 ) ← x ( k ) + λ k p k (A.3) x^{(k+1)} \leftarrow x^{(k)} + \lambda_k p_k \quad \tag{A.3} x(k+1)x(k)+λkpk(A.3)
其中, p k p_k pk是搜索方向,取负梯度方向 p k = − ▽ f ( x ( k ) ) , λ k p_k = -\triangledown f(x^{(k)}), \lambda_k pk=f(x(k)),λk是步长,由一维搜索确定,即 λ k \lambda_k λk使得
f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) (A.4) f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k) \quad \tag{A.4} f(x(k)+λkpk)=λ0minf(x(k)+λpk)(A.4)
算法A.1(梯度下降法)

输入:目标函数 f ( x ) f(x) f(x),梯度函数 g ( x ) = ▽ f ( x ) g(x) = \triangledown f(x) g(x)=f(x),计算精度 ε \varepsilon ε
输出:f(x)的极小点 x ∗ x^* x

(1)取初始值 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)Rn,置 k = 0 k = 0 k=0
(2)计算 f ( x ( k ) ) f(x^{(k)}) f(x(k))
(3)计算梯度 g k = g ( x ( k ) ) g_k = g(x^{(k)}) gk=g(x(k)),当 ∥ g k ∥ < ε \lVert g_k\rVert < \varepsilon gk<ε时,停止迭代,令 x ∗ = x ( k ) x^* = x^{(k)} x=x(k);否则,令 p k = − g ( x ( k ) ) p_k = -g(x^{(k)}) pk=g(x(k)),求 λ k \lambda_k λk,使
f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
(4)置 x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)} = x^{(k)} + \lambda_k p_k x(k+1)=x(k)+λkpk,计算 f ( x ( k + 1 ) ) f(x^{(k+1)}) f(x(k+1))
∥ f ( x ( k + 1 ) ) − f ( x ( k ) ) ∥ < ε \lVert f(x^{(k+1)})-f(x^{(k)}) \rVert < \varepsilon f(x(k+1))f(x(k))<ε ∥ x ( k + 1 ) − x ( k ) ∥ < ε \lVert x^{(k+1)} - x^{(k)} \rVert < \varepsilon x(k+1)x(k)<ε时,停止迭代,令 x ∗ = x ( k + 1 ) x^* = x^{(k+1)} x=x(k+1)
(5)否则,置 k = k + 1 k=k+1 k=k+1,转(3)。

当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。梯度下降法的收敛速度也未必是很快的。

数据来源:统计学习方法(第二版)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值