凸优化学习-(二十六)无约束优化算法——牛顿法、拟牛顿法及无约束算法总结

凸优化学习

学习笔记

一、牛顿法( Newton’s method \text{Newton's method} Newton’s method

1.推导

在最速下降法中,我们的方向:
d k = arg ⁡ min ⁡ v { f ( x k + v ) ∣ ∥ v ∥ = 1 } d^k=\arg\min_v\lbrace f(x^k+v)\big|\|v\|=1\rbrace dk=argvmin{f(xk+v)v=1}
其中我们是对 f ( x k + v ) f(x^k+v) f(xk+v)进行一阶泰勒展开来求 d k d^k dk的,那么我们对其进行二阶泰勒展开,就得到了牛顿法:
d k = arg ⁡ min ⁡ v { f ( x ) + ∇ f T ( x ) v + 1 2 v T ∇ 2 f ( x k ) v } d^k=\arg\min_v\lbrace f(x)+\nabla f^T(x)v+\frac 1 2 v^T\nabla^2f(x^k)v\rbrace dk=argvmin{f(x)+fT(x)v+21vT2f(xk)v}
这就变成了一个关于 v v v的二次函数,很容易求得 v v v的值,即:
d k = − ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) d^k=-\big( \nabla^2f(x^k)\big)^{-1}\nabla f(x^k) dk=(2f(xk))1f(xk)
就是使用 Hassan \text{Hassan} Hassan矩阵对负梯度方向进行调整。

2.收敛性分析

∇ f T ( x k ) d k = − ∇ f T ( x k ) ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) \nabla f^T(x^k)d^k=-\nabla f^T(x^k)\big(\nabla^2f(x^k)\big)^{-1}\nabla f(x^k) fT(xk)dk=fT(xk)(2f(xk))1f(xk)接近于0时收敛,这里不给出证明。

3.定义

结合推导及收敛性分析,得出算法定义:
Repeat d k = − ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) α max ⁡ ≥ α ≥ 0 x k + 1 = x k + α k d k Until Convergence or − ∇ f T ( x k ) ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) ≤ ϵ \begin{aligned} \text{Repeat}&&d^k&=-\big(\nabla^2 f(x^k)\big)^{-1}\nabla f(x^k)\\ &&\alpha_{\max}&\ge\alpha\ge0\\ &&x^{k+1}&=x^k+\alpha^kd^k\\ \text{Until Convergence or}&&-\nabla f^T(x^k)\big(\nabla^2f(x^k)\big)^{-1}\nabla f(x^k)&\le\epsilon \end{aligned} RepeatUntil Convergence ordkαmaxxk+1fT(xk)(2f(xk))1f(xk)=(2f(xk))1f(xk)α0=xk+αkdkϵ

4.性质
  1. ∥ ∇ f ( x ) ∥ 2 > η \|\nabla f(x)\|_2>\eta f(x)2>η,此时称为 Damped Newton Phase \text{Damped Newton Phase} Damped Newton Phase阻尼牛顿段,此时函数下降比较慢。
  2. ∥ ∇ f ( x ) ∥ 2 < η \|\nabla f(x)\|_2<\eta f(x)2<η,此时二次收敛,下降较快。

所以牛顿法是一个先下降比较快,后下降比较慢的方法。

二、拟牛顿法( Quasi-Newton Method \text{Quasi-Newton Method} Quasi-Newton Method)

Hassan \text{Hassan} Hassan矩阵不好求时,我们可以用其它矩阵替换:
∇ 2 f ( x k ) d k = − ∇ f ( x k ) B d k = − ∇ f ( x k ) \begin{aligned} \nabla^2 f(x^k)d^k&=-\nabla f(x^k)\\ \textbf Bd^k&=-\nabla f(x^k) \end{aligned} 2f(xk)dkBdk=f(xk)=f(xk)
使用 BFGS \text{BFGS} BFGS法求矩阵。

三、无约束优化算法总结

每种算法实际上都是在求方向,求步长的方法就是精确步长和不精确步长。
一 般 的 一 阶 方 法 , 当 一 阶 偏 导 可 求 时 。 最 速 是 一 个 更 广 义 的 梯 度 下 降 法 : Gradient descent: d k = − ∇ f ( x k ) Steepest descent: d k = arg ⁡ min ⁡ ∥ v ∥ = 1 { ∇ f T ( x k ) v } 对 收 敛 速 度 不 关 心 , 设 计 简 单 算 法 时 : Coordinate descent 目 标 函 数 凸 但 不 是 一 阶 可 微 时 : Subgradient descent 对 问 题 有 一 个 很 好 的 初 始 值 时 : Newton’s Method: d k = − ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x ) 。 \begin{aligned} 一般的一阶方法,当一阶偏导可求时。最速是一个更广义的梯度下降法:&&&\\ \text{Gradient descent:}&&d^k&=-\nabla f(x^k)\\ \text{Steepest descent:}&&d^k&=\arg\min_{\|v\|=1}\lbrace \nabla f^T(x^k)v\rbrace\\ 对收敛速度不关心,设计简单算法时:&&&\\ \text{Coordinate descent}&&&\\ 目标函数凸但不是一阶可微时:&&&\\ \text{Subgradient descent}\\ 对问题有一个很好的初始值时:&&&\\ \text{Newton's Method:}&&d^k&=-\big(\nabla^2 f(x^k)\big)^{-1}\nabla f(x)\\ \end{aligned}。\\ 广:Gradient descent:Steepest descent::Coordinate descent:Subgradient descent:Newton’s Method:dkdkdk=f(xk)=argv=1min{fT(xk)v}=(2f(xk))1f(x)

个人思考

没有最好的算法,只有最适用的算法。拿到问题时需要先分析问题的性质再做规划。我个人觉得先用梯度下降法,再用牛顿法对于绝大部分无约束的优化都能够得到很好的解。

纸质笔记

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值