机器学习基础 6:无约束最优化方法—— 梯度与牛顿法

本文介绍了无约束最优化的基本方法,包括梯度下降法、牛顿迭代法、阻尼牛顿法以及拟牛顿法的几个变种,如SR1、DFP和BFGS算法。详细阐述了每种方法的原理、迭代过程及优缺点,并探讨了在实际应用中如何选择合适的优化策略。
摘要由CSDN通过智能技术生成

无约束最优化


梯度下降(Gradient Descent)

  梯度下降法也称为最速下降法,是一个常用的最优化算法。梯度下降法的计算过程就是沿梯度下降的方向求解极小值。实际上就是一个逼近极值的迭代过程,其迭代公式可表示为 a k + 1 = a k + ρ k s ^ ( k ) a_{_{k+1}} = a_{_k} + \rho_{_k}\hat{s}^{_{(k)}} ak+1=ak+ρks^(k),其中 s ^ ( k ) \hat{s}^{_{(k)}} s^(k) 表示梯度方向(即变化最大的方向), ρ k \rho_{_k} ρk 表示在梯度方向上的搜索步长。求解过程为:

  • 通过求(偏)导求出梯度方向
  • 通过线性搜索算法确定搜索步长(即:把迭代公式看作是以 ρ k \rho_{_k} ρk为自变量的函数,然后求解函数最值对应的 ρ k \rho_{_k} ρk)或者人为指定一个固定的搜索步长
  • 更新参数
  • 重复以上步骤,直到收敛(梯度方向向量为 0 ⃗ \vec{0} 0

推导过程:
a = Δ x a = \Delta x a=Δx , 在 Δ x \Delta x Δx 附近展开一阶泰勒级数,得到:
f ( x + Δ x ) = f ( x ) + f ′ ( x ) ( Δ x ) f(x+\Delta x)=f(x)+f'(x)(\Delta x) f(x+Δx)=f(x)+f(x)(Δx)
Δ x \Delta x Δx 可正可负但必须充分接近于0
Δ x = α D \Delta x = \mathbf{\alpha D} Δx=αD,其中 D \mathbf{D} D为单位方向向量, α \mathbf{\alpha} α为实数移动步长,转换为高维形式,得到:
f ( X + α D ) = f ( X ) + α ∇ f ( X ) D f(\mathbf{X}+\mathbf{\alpha D})=f(\mathbf{X})+\mathbf{\alpha}\nabla f(\mathbf{X})\mathbf{D} f(X+αD)=f(X)+αf(X)D
为了移动步长最大,使目标函数为: max ⁡ \max max f ( X ) − f ( X + α D ) f(\mathbf{X})-f(\mathbf{X}+\mathbf{\alpha D}) f(X)f(X+αD)
α \mathbf{\alpha} α确定时,目标函数变为:    min ⁡ \min min ∇ f ( X ) D \nabla f(\mathbf{X})\mathbf{D} f(X)D

用向量 g T \mathbf{g}^T gT表示 ∇ f ( X ) \nabla f(\mathbf{X}) f(X),则上式可以看作两个向量的点积,即: g T D \mathbf{g}^T\mathbf{D} gTD
因此,当 D = − g \mathbf{D}=-\mathbf{g} D=g 时,可以获得最大移动步长,就是也是称负梯度方向为“最速下降”方向的由来

牛顿迭代(Newton Method)

  牛顿迭代法将对函数 f f f 优化问题转换为求解该函数的导数 f ‘ = 0 f^`=0 f=0 的问题,这样可以将优化问题转换为方程求解问题。为了求解方程 f ‘ = 0 f^`=0 f=0,利用二阶泰勒级数展开可得, x n + 1 = x n − f ‘ ( x n ) f ‘ ‘ ( x n ) x_{_{n+1}} = x_{_n} - \frac{f^{`}(x_{_n})}{f^{``}(x_{_n})} xn+1=xnf(xn)f(xn)。求解过程为:

  • 求函数的1阶(偏)导数
  • 求函数的2阶(偏)导数矩阵(Hessian矩阵)的逆
  • 更新参数
  • 重复以上步骤,直到收敛

推导过程:
a = Δ x a = \Delta x a=Δx , 在 Δ x \Delta x Δx 附近展开一阶泰勒级数,得到:
f ( x + Δ x ) = f ( x ) + f ′ ( x ) ( Δ x ) + 1 2 f ′ ′ ( x ) ( Δ x ) 2 f(x+\Delta x)=f(x)+f'(x)(\Delta x)+\frac{1}{2}f''(x)(\Delta x)^2 f(x+Δx)=f(x)+f(x)(Δx)+21f(x)(Δx)2
Δ x \Delta x Δx 充分接近于0时, 稍作转换得到:
f ′ ( x ) + f ′ ′ ( x ) Δ x = 0 f'(x) + f''(x)\Delta x=0 f(x)+f(x)Δx=0
求解:
Δ x = − f ′ ( x n ) f ′ ′ ( x n ) \Delta x= -\frac{f'(x_n)}{f''(x_n)} Δx=f(xn)f(xn)
Δ x = x n + 1 − x n \Delta x = x_{n+1} - x_n Δx=xn+1xn,得到迭代公式:
x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}= x_n-\frac{f'(x_n)}{f''(x_n)} xn+1=xnf(xn)f(xn)
将上述公式推广到高维情况:
X n + 1 = X n − ∇ f ( X k ) ∇ 2 f ( X k ) X_{n+1}= X_n-\frac{\nabla f(X_k)}{\nabla^2 f(X_k)} Xn+1=Xn2f(Xk)f(Xk)
令 Hessian 矩阵 H ( X n ) = ∇ 2 f ( X k ) H(X_n) = \nabla^2 f(X_k) H(Xn)=2f(Xk),公式变为:
X n + 1 = X n − [ H ( X n ) ] − 1 ∇ f ( X n ) X_{n+1}= X_n-[H(X_n)]^{-1}\nabla f(X_n) Xn+1=Xn[H(Xn)]1f(Xn)

阻尼牛顿法(Damped-Newton Method)

  原始牛顿法虽然具有二次终止性(即用于二次凸函数时,经有限次迭代必达极小点),但是要求初始点需要尽量靠近极小点,否则有可能不收敛。因此人们又提出了阻尼牛顿法。
这种方法在算法形式上等同于所有流行的优化方法,即确定搜索方向,再沿此方向进行一维搜索,找出该方向上的极小点,然后在该点处重新确定搜索方向,重复上述过程,直至函数梯度小于预设判据 ϵ \epsilon ϵ。具体算法步骤如下:

  1. 给定初始点 x 0 \mathbf{x}_0 x0,设定收敛误差 ϵ \epsilon ϵ,初始时 k = 0 k=0 k=0
  1. 计算 $\nabla f(\mathbf{x}_k) $ 与 $\nabla^2 f(\mathbf{x}_k) $
  2. ∥ ∇ f ( x k ) ∥ &lt; ϵ \|\nabla f(\mathbf{x}_k)\| &lt; \epsilon f(xk)<ϵ,停止迭代;否则,确定搜索方向 $ \mathbf{d}_k = [\nabla^2 f(x_k)]^{-1}\nabla f(x_k)$
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值