ML:梯度下降法/最速下降法

本文深入探讨了梯度下降法的基本原理与应用,这是一种广泛应用于无约束最优化问题的迭代算法,通过沿负梯度方向更新变量来最小化目标函数。

http://www.cnblogs.com/gongxijun/p/5890548.html
https://blog.youkuaiyun.com/u012795120/article/details/83862284

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

f ( x ) f(x) f(x) R n R^n Rn具有一阶连续偏导数的函数。要求解的无约束最优化问题是
m i n x ∈ R n f ( x ) \underset{x\in R^{n}}{min} \quad f(x) xRnminf(x)
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 ) ) ) f(x)=f(x^{(k)}+g_k^T(x-x^{(k)})) f(x)=f(x(k)+gkT(xx(k)))
这里, g k = g ( x ( k ) ) = ▽ f ( x ( k ) ) g_k=g(x^{(k)})=\bigtriangledown 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} xk+1
x k + 1 ← x k + λ k p k x^{k+1} \leftarrow x^{k}+\lambda_{k}p_{k} xk+1xk+λkpk

其中, p k p_k pk是搜索方向,取负梯度方向 p k = − ▽ f ( x ( k ) ) p_k=-\bigtriangledown f(x^{(k)}) pk=f(x(k)) λ k \lambda_k λk是步长,由一维搜索确定,即 λ k \lambda_k λk使得
f ( x ( k ) + λ k p k ) = m i n λ ⩾ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\underset{\lambda \geqslant 0}{min} f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)

梯度下降法算法如下:

输入:目标函数 f ( x ) f(x) f(x),梯度函数 g ( x ) = ▽ f ( x ) g(x)=\bigtriangledown f(x) g(x)=f(x),计算精度 ε \varepsilon ε

输出: f ( x ) f(x) 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 ∣ ∣ &lt; ε ||g_k||&lt;\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 ) = m i n λ ⩾ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\underset{\lambda\geqslant 0}{min}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_kp_k x(k+1)=x(k)+λkpk,计算 f ( x k + 1 ) f(x^{k+1}) f(xk+1)
∣ ∣ f ( x ( k + 1 ) ) − f ( x ( k ) ) ∣ ∣ &lt; ε ||f(x^{(k+1)})-f(x^{(k)})||&lt;\varepsilon f(x(k+1))f(x(k))<ε ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ &lt; ε ||x^{(k+1)}-x^{(k)}||&lt;\varepsilon x(k+1)x(k)<ε时,表示满足计算精度 ε \varepsilon ε,则停止迭代,令 x ∗ = x k + 1 x^*=x^{k+1} x=xk+1
(5)否则,置 k = k + 1 k=k+1 k=k+1,转(3).

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值