经典优化算法

Posted weilonghu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典优化算法相关的知识,希望对你有一定的参考价值。

无约束优化算法

假设求解(min L( heta))(L(cdot))光滑

直接法

  • 两个条件
    • 函数是凸函数
    • 一阶导数为零等式有闭式解

迭代法

假设优化问题为(egin{aligned} delta_t = mathop{arg min}_{delta} L( heta_t+delta) end{aligned}),其中( heta_t)是参数

一阶法

  • 对函数(L( heta_t+delta)?)做一阶泰勒展开,得到近似式(L( heta_t+delta) approx L( heta_t) + abla L( heta)^T delta?)

  • 由于该近似式只有在(delta)较小时才比较准确,因此在求解(delta_t)时一般加上(L_2)正则项

    [egin{aligned} delta_t & = mathop{arg min}_{delta} left( L( heta_t) + abla L( heta_t)^Tdelta + frac{1}{2alpha}||delta||^2_2 ight) \ & = -alpha abla L( heta_t) end{aligned}?]

  • 一阶法的迭代公式为

    [ heta_{t+1} = heta_t - alpha abla L( heta_t)]
    其中(alpha)为学习率

  • 也称为梯度下降法,梯度就是目标函数的一阶信息

二阶法

  • 对函数(L( heta_t+delta)?)做二阶泰勒展开,得到近似式(L( heta_t+delta) approx L( heta_t) + abla L( heta)^T delta + frac{1}{2}delta^T abla ^2 L( heta^T)delta?)

  • 其中( abla^2 L( heta_t))是函数在( heta_t)处的Hessian矩阵。通过求解近似优化问题

    [egin{aligned} delta_t & = mathop{arg min}_{delta} left( L( heta_t) + abla L( heta_t)^Tdelta + frac{1}{2}delta^T abla ^2 L( heta^T)delta ight) \ & = - abla^2 L( heta_t)^{-1} abla L( heta_t) end{aligned}]

  • 二阶法的迭代公式为

    ( heta_{t+1} = heta_t - abla^2 L( heta)^{-1} abla L( heta_t))

  • 也称为牛顿法,Hessian矩阵就是目标函数的二阶信息

  • 收敛速度快于一阶法,但在高维情况下,Hessian矩阵求逆计算复杂度很大

  • 而且当目标函数非凸时,可能收敛到鞍点

  • 改进:拟牛顿法,如BFGS算法

以上是关于经典优化算法的主要内容,如果未能解决你的问题,请参考以下文章

《算法竞赛入门经典》之“算法设计与优化策略”

经典数值优化算法--专题学习

优化算法

[11道链表经典笔试题]优化的算法思想:反转链表链表相交快慢指针

基于改进粒子群算法实现WSN节点优化部署matlab代码

基于改进粒子群算法实现WSN节点优化部署matlab代码