无约束优化
模型
无约束优化的问题模型:
minf(x)
其中
f(x)
是二次可微凸函数。假定该问题存在最优点
x∗
,那么应该有:
∇f(x∗)=0
因此,该问题等价于求解
n
个变量的
n
个方程。在一些特殊情况下,可以得到该问题的解析解;通常情况下,需要通过迭代的方式来获得该问题的数值解。
强凸性
如果存在
m>0
使得
∇2f(x)≥mI
对任意的
x∈S
都成立,则称
f(x)
在
S
上是强凸的。
以下讨论均假设目标函数具有强凸性。
下降方法
无约束的优化方法通常采用下降的迭代方法来获取最优值。通常是产生一个点列
x(k)
:
x(k+1)=x(k)+t(k)Δx(k),t(k)≥0
其中,
Δx
是一个向量,称之为
搜索方向;标量
t(k)
称为
步长。在下降法中,总有:
f(x(k+1))≤f(x(k))
函数的二阶展开式:
f(x(k+1))=f(x(k))+∇f(x(k))T(f(x(k+1))−f(x(k)))+12(f(x(k+1))−f(x(k)))T∇2f(z)(f(x(k+1))−f(x(k))),z∈[f(x(k)),x(k+1)]
对于强凸性函数,最后一项非负,因此第二项必须为负,即:
∇f(x(k))T(f(x(k+1))−f(x(k)))=∇f(x(k))TΔx(k)<0
也就是说,搜索方向应该与梯度方向成锐角才能使得函数值有所下降。称这样的方向为
下降方向。那么可以给出优化迭代的伪代码:
~—————————————下降算法伪码———————————-
- 给定初始迭代点(该点应该定义域内)
- 确定下降方向
Δx
- 选择步长
t
,直线搜索
- 修改迭代点:
x:=x+tΔx
- 检测终止条件,不满足则跳至第2步
~———————————————————————————————-
梯度下降法
令
Δx=−∇f(x)
, 则很容易满足下降条件。此方法称为梯度下降法。
~—————————————梯度下降算法伪码———————————-
- 给定初始迭代点(该点应该定义域内)
- 确定下降方向
Δx=−∇f(x)
- 选择步长
t
,直线搜索
- 修改迭代点:
x:=x+tΔx
- 检测终止条件,不满足则跳至第2步
~———————————————————————————————-
梯度下降法的收敛速度依赖于Hessian矩阵。
最速下降法
如果对函数进行一阶泰勒展开:
f(x+Δx)≈f(x)+∇f(x)TΔx
称第二项为
f
在
x
处的方向导数,近似地给出了在方向
Δx
下的变化趋势。如果这一项为负,则该方向就是下降方向。方向导数是搜索方向的线性函数(x是已知的迭代点,那么其一阶导数也是已知的),在下降方向上
Δx
越大该方向导数则越小。为了使其有意义,可以规范
Δx
的大小,此时的方向为规范化的最速下降方向:
Δxnsd=argmin{∇f(x)TΔx|∥Δx∥≤1}
~—————————————最速下降算法伪码———————————-
- 给定初始迭代点(该点应该定义域内)
- 计算最速下降方向
Δxsd
- 选择步长
t
,直线搜索
- 修改迭代点:
x:=x+tΔxsd
- 检测终止条件,不满足则跳至第2步
~—————————————————————————————————-
ℓ1−范数的最速下降法是坐标下降法。
二次
P
-范数的最速下降法等同于对问题进行了坐标变化
x¯=p1/2后的梯度下降法。
牛顿法
对函数进行二阶泰勒展开:
f(x+Δx)≈f(x)+∇f(x)TΔx+12ΔxT∇2f(x)Δx
右边是一个关于
Δx
的二次凸函数,由最优性条件可以得知,对其求导可得导数为0:
∇f(x)T+∇2f(x)Δx=0
解该方程得:
Δx=−(∇2f(x))−1∇f(x)T
将该解带入原式可得:
f(x+Δx)−f(x)≈∇f(x)TΔx+12ΔxT∇2f(x)Δx=−∇f(x)T(∇2f(x))−1∇f(x)−∇f(x)T(∇2f(x))−T∇f(x)=−∇[(∇2)−T+(∇2)−1]∇
由
∇2f(x)
的正定性可知,上式子在非最优值处均小于0。所以
Δx
方向为下降方向。此搜索方向称之为牛顿搜索方向。
~—————————————牛顿下降算法伪码———————————-
- 给定初始迭代点(该点应该定义域内)
- 计算牛顿方向
Δxnt=−(∇2f(x))−1∇f(x)T
- 选择步长
t
,直线搜索
- 修改迭代点:
x:=x+tΔxsd
- 检测终止条件,不满足则跳至第2步
~—————————————————————————————————-
实际上,牛顿搜索方向就是采用Hessian矩阵
∇2f(x)
定义的二次范数推导的最速下降法。
拟牛顿法
共轭梯度法
Reference
[1] 凸优化