寻优方法总结:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS

本文详细介绍了机器学习中常见的寻优方法,包括最速下降法(梯度下降法)、牛顿下降法及其改进的阻尼牛顿法,以及拟牛顿法中的DFP和BFGS算法。通过理论推导和Python实现,展示了这些方法的原理和优势。实验数据显示了不同方法在代价函数上的表现,帮助读者理解如何选择合适的优化策略。
摘要由CSDN通过智能技术生成

  机器学习的一个重要组成部分是如何寻找最优参数解。本文就常见寻优方法进行总结,并给出简单python2.7实现,可能文章有点长,大家耐心些。
  寻找最优参数解,就是在一块参数区域上,去找到满足约束条件的那组参数。形象描述,比如代价函数是个碗状的,那我们就是去找最底部(代价最小)的那个地方的对应的参数值作为最优解。那么,如何找到那个底部的最优参数解呢,如何由一个初始值,一步一步地接近该最优解呢。寻优方法,提供了靠近最优解的方法,其中涉及到的核心点,无外乎两点:靠近最优解的方向步幅(每步的长度)。
  最优化,分为线性最优化理论和非线性最优化理论。其中线性最优化又称线性规划。目标函数和约束条件的表达是线性的, Y=aX ;非线性最优化理论,是非线性的。其中包括梯度法,牛顿法,拟牛顿法(DFP/BFGS),约束变尺度(SQP),Lagrange乘子法,信赖域法等。

算法原理及简单推导

最速下降法(梯度下降法)

  借助梯度,找到下降最快的方向,大小为最大变化率。
   θnew=θoldαGradient
  梯度:是方向导数中,变化最大的那个方向导数。
  梯度方向:标量场中增长最快的方向。
  梯度大小:最大变化率。
  更新:沿着梯度的负向,更新参数(靠近最优解)。
  *********************************************
   Algorithm:GradientDescent
   Input:xData;yLabel;α;θ0;Iternum;
   Output:θoptimal
   Process:
     1. Initial θ=θ0
     2. While Loop<Iternum
       H=f(x,θ);H
       Compute Gradient According to f(x,θ)
       Update θ:=θαGradient
       Loop=Loop+1
     3. Return θ
  *********************************************
  梯度下降法
  优点:方便直观,便于理解。
  缺点:下降速度慢,有时参数会震荡在最优解附近无法终止。

牛顿下降法

  牛顿下降法,是通过泰勒展开到二阶,推到出参数更新公式的。
   f(x+Δ(x))f(x)+f(x)Δ(x)+12f′′(x)Δ2(x)
  上式等价于 f(x)+f′′(x)Δ=0
  从而得到更新公式:
   xnewxold=f(x)f′′(x)=[f′′(x)]1f(x)
  调整了参数更新的方向和大小(牛顿方向)。
  *********************************************
   Algorithm:Newton Descent
   Input:xData;ylabel;θ0;ϵ;
   Ouput:θoptimal
   Process:
     1. Initial θ=θ0
     2. Compute f(x,θ)
       if|f(x),θ)|ϵ
         return θoptimal=θ
       else
         Compute H=f′′(x,θ)
         Dk=[H]1f(x,θ)
         Update θ:=θ+Dk
     3. Return step 2
  *********************************************
  牛顿下降法
  优点:对于正定二次函数,迭代一次,就可以得到极小值点。下降的目的性更强。
  缺点:要求二阶可微分;收敛性对初始点的选取依赖性很大;每次迭代都要计算Hessian矩阵,计算量大;计算Dk时,方程组有时奇异或者病态,无法求解Dk或者Dk不是下降方向。

阻尼牛顿法

  这是对牛顿法的改进,在求新的迭代点时,以Dk作为搜索方向,进行一维搜索,求步长控制量 α ,使得 α=argminθ[f(θ+αDk)] 找到 f 下降的 α 且是 f 下降最大的 α ,然后令 θ=θ+αDk 克服了牛顿法的奇异和病态方程无解, Dk 非下降的缺点。
  *********************************************
   Alg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值