梯度下降法

简介:梯度下降法(gradient descent)或最速下降法(steepest descent)是求解无约束最优化问题的一种最常用的方法,具有实现简单的优点。梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。
假设 f ( x ) f(x) f(x) R n R^n Rn上具有一阶连续偏导数的函数。要求解的无约束最优化问题是 m i n x ∈ R n f ( x ) (A.1) \underset{x\in{R^n}}{min}f(x)\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的值,进行目标函数的极小化,直到收敛。 由 于 负 梯 度 方 向 是 使 函 数 值 下 降 最 快 的 方 向 , \color{red}由于负梯度方向是使函数值下降最快的方向, 使,
在 迭 代 的 每 一 步 , 以 负 梯 度 方 向 更 新 x 的 值 , 从 而 达 \color{red}在迭代的每一步,以负梯度方向更新x的值,从而达 x
到 减 少 函 数 值 的 目 的 。 \color{red}到减少函数值的目的。
由于 f ( x ) f(x) f(x)具有一阶偏导数,若第 k k k次迭代值为 x k x^{k} xk,则可将 f ( x ) f(x) f(x) x k x^{k} xk附近进行一阶泰勒展开: f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) (A.2) f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})\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)})=\nabla 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_kp_k\tag{A.3} xk+1x(k)+λkpk(A.3)
其中, p k p_k pk是搜索方向,取负梯度方向 p k = − ∇ f ( x ( k ) ) p_k=-\nabla 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 ) (A.4) f(x^{(k)}+\lambda_kp_k)=\underset{\lambda\geq 0}{min}f(x^{(k)}+\lambda p_k)\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)=\nabla f(x) g(x)=f(x),计算精度 ϵ \epsilon ϵ
输出: 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 ∥ < ϵ \lVert g_k\lVert<\epsilon 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\geq 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(x(k+1))
∥ f ( x ( k + 1 ) ) − f ( x ( k ) ) ∥ < ϵ \lVert f(x^{(k+1)})-f(x^{(k)})\lVert<\epsilon f(x(k+1))f(x(k))<ϵ ∥ x ( k + 1 ) − x ( k ) ∥ < ϵ \lVert x^{(k+1)}-x^{(k)}\lVert<\epsilon x(k+1)x(k)<ϵ时,停止迭代,令 x ∗ = x ( x + 1 ) x^*=x^{(x+1)} x=x(x+1)
(5)否则,置 k = k + 1 k=k+1 k=k+1,转(3)。
当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。梯度下降法的收敛速度也未必是很快的。

举例: J ( θ ) = θ 1 2 + θ 2 2 J(\theta)=\theta_1^2+\theta_2^2 J(θ)=θ12+θ22
θ 0 = ( 1 , 3 ) \theta^0=(1,3) θ0=(1,3),学习率 α = 0.1 \alpha=0.1 α=0.1 ∇ J ( θ ) = ( 2 θ 1 , 2 θ 2 ) \nabla J(\theta)=(2\theta_1,2\theta_2) J(θ)=(2θ1,2θ2)
进行多次迭代:
θ 0 = ( 1 , 3 ) \theta^0=(1,3) θ0=(1,3)
θ 1 = θ 0 − α ∇ J ( θ 0 ) \theta^1=\theta^0-\alpha \nabla J(\theta^0) θ1=θ0αJ(θ0)
= ( 1 , 3 ) − 0.1 ( 2 , 6 ) =(1,3)-0.1(2,6) =(1,3)0.1(2,6)
= ( 0.8 , 2.4 ) =(0.8,2.4) =(0.8,2.4)

θ 2 = θ 1 − α ∇ J ( θ 1 ) \theta^2=\theta^1-\alpha \nabla J(\theta^1) θ2=θ1αJ(θ1)
= ( 0.8 , 2.4 ) − 0.1 ( 1.6 , 4.8 ) =(0.8,2.4)-0.1(1.6,4.8) =(0.8,2.4)0.1(1.6,4.8)
= ( 0.64 , 1.92 ) =(0.64,1.92) =(0.64,1.92)
. . . . . . ...... ......

摘录自《统计学习方法》

d y d x \frac{\mathrm{d} y }{\mathrm{d} x} dxdy

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值