梯度下降法

梯度下降法Gradient Descent是求解无约数最优化问题的一种最常见的方法。

假设 f ( x ) f(x) f(x) R n R^n Rn上具有一阶连续偏导数的函数,要求解的无约束最优化问题是: (1) m i n x ∈ R n f ( x ) min_{x\in R^n}f(x)\tag{1} minxRnf(x)(1)

x ∗ x^* x表示目标函数 f ( x ) f(x) f(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)附近进行一阶泰勒展开: (2) f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) f(x)=f(x^{(k)})+g^T_k(x-x^{(k)})\tag{2} f(x)=f(x(k))+gkT(xx(k))(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): (3) x ( k + 1 ) = x ( k ) + λ p k x^{(k+1)}=x^{(k)}+\lambda p_k\tag{3} x(k+1)=x(k)+λpk(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使得 (4) f ( x ( k ) + λ k p k ) = m i n λ > = 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=min_{\lambda>=0} f(x^{(k)}+\lambda p_k)\tag{4} f(x(k)+λkpk)=minλ>=0f(x(k)+λpk)(4)

梯度下降法算法流程

输入:目标函数 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 ( x ) = ∇ f ( x ) g(x)=\nabla f(x) g(x)=f(x),当 ∣ ∣ g k ∣ ∣ &lt; ϵ ||g_k||&lt;\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 λ &gt; = 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=min_{\lambda&gt;=0} f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=minλ>=0f(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 ) ) ∣ ∣ &lt; ϵ ||f(x^{(k+1)})-f(x^{(k)})||&lt;\epsilon f(x(k+1))f(x(k))<ϵ ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ &lt; ϵ ||x^{(k+1)}-x^{(k)}||&lt;\epsilon 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、付费专栏及课程。

余额充值