最速下降法——负梯度方向使函数值下降的证明

梯度下降法(Gradient Descent)

定义

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

目标函数

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

迭代过程

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

泰勒展开

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

更新公式

求出第 k + 1 k+1 k+1次迭代值 x ( k + 1 ) {\bm x}^{(k+1)} x(k+1)
x ( k + 1 ) = x ( k ) + λ k p k {\bm x}^{(k+1)} = {\bm x}^{(k)} + \lambda_k {\bm p}_k x(k+1)=x(k)+λkpk
其中, p k {\bm p}_k pk是搜索方向,取负梯度方向 p k = − ∇ f ( x ( k ) ) {\bm p}_k = -\nabla f({\bm x}^{(k)}) pk=f(x(k)) λ k \lambda_k λk是步长,

最小化条件
f ( x ( k + 1 ) ) = f ( x ( k ) ) + g k T ( x ( k + 1 ) − x ( k ) ) = f ( x ( k ) ) + g k T ( x ( k + 1 ) − x ( k ) ) = f ( x ( k ) ) − λ k ∥ g k ∥ 2 \begin{aligned} f({\bm x}^{(k+1)}) &= f({\bm x}^{(k)}) + {\bm g}_k^{\rm T} ({\bm x}^{(k+1)} - {\bm x}^{(k)})\\ &= f({\bm x}^{(k)}) + {\bm g}_k^{\rm T} ({\bm x}^{(k+1)} - {\bm x}^{(k)})\\ &= f({\bm x}^{(k)}) - \lambda_k \|{\bm g}_k\|^2 \end{aligned} f(x(k+1))=f(x(k))+gkT(x(k+1)x(k))=f(x(k))+gkT(x(k+1)x(k))=f(x(k))λkgk2
由于 λ k ∥ g k ∥ 2 ⩾ 0 \lambda_k \|{\bm g}_k\|^2 \geqslant 0 λkgk20,因此 f ( x ( k + 1 ) ) ⩽ f ( x ( k ) ) f({\bm x}^{(k+1)}) \leqslant f({\bm x}^{(k)}) f(x(k+1))f(x(k))

精确一维搜索

由一维搜索确定,即 λ k \lambda_k λk使得:
f ( x ( k ) + λ k p k ) = min ⁡ λ ⩾ 0 f ( x ( k ) + λ p k ) f({\bm x}^{(k)} + \lambda_k {\bm p}_k) = \min_{\lambda \geqslant 0} f({\bm x}^{(k)} + \lambda {\bm p}_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)

梯度下降法(Gradient Descent)

(1) 取初始值 x ( 0 ) ∈ R n {\bm x}^{(0)} \in \mathbb{R}^n x(0)Rn,置 k = 0 k = 0 k=0
(2) 计算 f ( x ( k ) ) f({\bm x}^{(k)}) f(x(k))
(3) 计算梯度 g k = ∇ f ( x ( k ) ) {\bm g}_k = \nabla f({\bm x}^{(k)}) gk=f(x(k)),当 ∥ g k ∥ < ϵ \| {\bm g}_k \| < \epsilon gk<ϵ时,停止迭代,令 x ∗ = x ( k ) {\bm x}^* = {\bm x}^{(k)} x=x(k);否则,令 p k = − ∇ f ( x ( k ) ) {\bm p}_k = -\nabla f({\bm x}^{(k)}) pk=f(x(k)),求 λ k \lambda_k λk,使
f ( x ( k ) + λ k p k ) = min ⁡ λ ⩾ 0 f ( x ( k ) + λ p k ) f({\bm x}^{(k)} + \lambda_k {\bm p}_k) = \min_{\lambda \geqslant 0} f({\bm x}^{(k)} + \lambda {\bm p}_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
(4) 置 x ( k + 1 ) = x ( k ) + λ k p k {\bm x}^{(k+1)} = {\bm x}^{(k)} + \lambda_k {\bm p}_k x(k+1)=x(k)+λkpk,计算 f ( x ( k + 1 ) ) f({\bm x}^{(k+1)}) f(x(k+1))
∥ f ( x ( k + 1 ) ) − f ( x ( k ) ) ∥ < ϵ \| f({\bm x}^{(k+1)}) - f({\bm x}^{(k)}) \| < \epsilon f(x(k+1))f(x(k))<ϵ ∥ x ( k + 1 ) − x ( k ) ∥ < ϵ \| {\bm x}^{(k+1)} - {\bm x}^{(k)} \| < \epsilon x(k+1)x(k)<ϵ时,停止迭代,令 x ∗ = x ( k + 1 ) {\bm x}^* = {\bm x}^{(k+1)} x=x(k+1)
(5) 否则,置 k = k + 1 k = k + 1 k=k+1,转(3)。

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

解释

  1. 初始化:选择一个初始点 x ( 0 ) {\bm x}^{(0)} x(0)并设置迭代计数器 k = 0 k = 0 k=0
  2. 计算函数值:计算当前点 x ( k ) {\bm x}^{(k)} x(k)的函数值 f ( x ( k ) ) f({\bm x}^{(k)}) f(x(k))
  3. 计算梯度:计算当前点 x ( k ) {\bm x}^{(k)} x(k)的梯度 g k = g ( x ( k ) ) {\bm g}_k = g({\bm x}^{(k)}) gk=g(x(k))
    • 如果梯度的模小于给定的阈值 ε \varepsilon ε,则停止迭代,并将当前点作为解 x ∗ {\bm x}^* x
    • 否则,确定搜索方向 p k = − g ( x ( k ) ) {\bm p}_k = -g({\bm x}^{(k)}) pk=g(x(k)),并找到步长 λ k \lambda_k λk,使得函数值最小。
  4. 更新点:更新点 x ( k + 1 ) = x ( k ) + λ k p k {\bm x}^{(k+1)} = {\bm x}^{(k)} + \lambda_k {\bm p}_k x(k+1)=x(k)+λkpk,并计算新的函数值 f ( x ( k + 1 ) ) f({\bm x}^{(k+1)}) f(x(k+1))
    • 如果函数值的变化或点的变化小于给定的阈值 ε \varepsilon ε,则停止迭代,并将当前点作为解 x ∗ {\bm x}^* x
  5. 迭代:继续迭代,直到满足停止条件。

通过这些步骤,梯度下降法逐步逼近函数的极小值点。

算法步骤

算法 A.1(梯度下降法)

  • 输入:目标函数 f ( x ) f({\bm x}) f(x),梯度函数 g ( x ) = ∇ f ( x ) g({\bm x}) = \nabla f({\bm x}) g(x)=f(x),计算精度 ϵ \epsilon ϵ
  • 输出 f ( x ) f({\bm x}) f(x)的极小点 x ∗ {\bm x}^* x

总结

  • 梯度下降法 是一种迭代算法,通过不断更新参数 x {\bm x} x来最小化目标函数 f ( x ) f({\bm x}) f(x)
  • 搜索方向 通常选择负梯度方向 p k = − ∇ f ( x ( k ) ) {\bm p}_k = -\nabla f({\bm x}^{(k)}) pk=f(x(k))
  • 步长 λ k \lambda_k λk通过一维搜索确定,以确保每次迭代都能有效减少函数值。
  • 收敛条件 通常是当梯度的模小于某个阈值 ϵ \epsilon ϵ时停止迭代。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值