凸优化学习
学习笔记
一、牛顿法( 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+21vT∇2f(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))−1∇f(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))−1∇f(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+1−∇fT(xk)(∇2f(xk))−1∇f(xk)=−(∇2f(xk))−1∇f(xk)≥α≥0=xk+αkdk≤ϵ
4.性质
- 若 ∥ ∇ f ( x ) ∥ 2 > η \|\nabla f(x)\|_2>\eta ∥∇f(x)∥2>η,此时称为 Damped Newton Phase \text{Damped Newton Phase} Damped Newton Phase阻尼牛顿段,此时函数下降比较慢。
- 若 ∥ ∇ 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)=arg∥v∥=1min{∇fT(xk)v}=−(∇2f(xk))−1∇f(x)。
个人思考
没有最好的算法,只有最适用的算法。拿到问题时需要先分析问题的性质再做规划。我个人觉得先用梯度下降法,再用牛顿法对于绝大部分无约束的优化都能够得到很好的解。
纸质笔记