凸优化学习:无约束优化

无约束优化


模型

无约束优化的问题模型:

min f ( x )

其中 f ( x ) 是二次可微凸函数。假定该问题存在最优点 x ,那么应该有:
f ( x ) = 0

因此,该问题等价于求解 n 个变量的 n 个方程。在一些特殊情况下,可以得到该问题的解析解;通常情况下,需要通过迭代的方式来获得该问题的数值解。

强凸性
如果存在 m > 0 使得 2 f ( x ) m I 对任意的 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 ) ) ) + 1 2 ( f ( x ( k + 1 ) ) f ( x ( k ) ) ) T 2 f ( 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

也就是说,搜索方向应该与梯度方向成锐角才能使得函数值有所下降。称这样的方向为 下降方向。那么可以给出优化迭代的伪代码:
~—————————————下降算法伪码———————————-

  1. 给定初始迭代点(该点应该定义域内)
  2. 确定下降方向 Δ x
  3. 选择步长 t ,直线搜索
  4. 修改迭代点: x := x + t Δ x
  5. 检测终止条件,不满足则跳至第2步

~———————————————————————————————-

梯度下降法

Δ x = f ( x ) , 则很容易满足下降条件。此方法称为梯度下降法。

~—————————————梯度下降算法伪码———————————-

  1. 给定初始迭代点(该点应该定义域内)
  2. 确定下降方向 Δ x = f ( x )
  3. 选择步长 t ,直线搜索
  4. 修改迭代点: x := x + t Δ x
  5. 检测终止条件,不满足则跳至第2步

~———————————————————————————————-

梯度下降法的收敛速度依赖于Hessian矩阵。

最速下降法

如果对函数进行一阶泰勒展开:

f ( x + Δ x ) f ( x ) + f ( x ) T Δ x

称第二项为 f x 处的方向导数,近似地给出了在方向 Δ x 下的变化趋势。如果这一项为负,则该方向就是下降方向。方向导数是搜索方向的线性函数(x是已知的迭代点,那么其一阶导数也是已知的),在下降方向上 Δ x 越大该方向导数则越小。为了使其有意义,可以规范 Δ x 的大小,此时的方向为规范化的最速下降方向:
Δ x n s d = a r g m i n { f ( x ) T Δ x | Δ x 1 }

~—————————————最速下降算法伪码———————————-

  1. 给定初始迭代点(该点应该定义域内)
  2. 计算最速下降方向 Δ x s d
  3. 选择步长 t ,直线搜索
  4. 修改迭代点: x := x + t Δ x s d
  5. 检测终止条件,不满足则跳至第2步

~—————————————————————————————————-
1
二次 P -范数的最速下降法等同于对问题进行了坐标变化 x ¯ = p 1 / 2

牛顿法

对函数进行二阶泰勒展开:

f ( x + Δ x ) f ( x ) + f ( x ) T Δ x + 1 2 Δ x T 2 f ( x ) Δ x

右边是一个关于 Δ x 的二次凸函数,由最优性条件可以得知,对其求导可得导数为0:
f ( x ) T + 2 f ( x ) Δ x = 0

解该方程得:
Δ x = ( 2 f ( x ) ) 1 f ( x ) T

将该解带入原式可得:
f ( x + Δ x ) f ( x ) f ( x ) T Δ x + 1 2 Δ x T 2 f ( x ) Δ x = f ( x ) T ( 2 f ( x ) ) 1 f ( x ) f ( x ) T ( 2 f ( x ) ) T f ( x ) = [ ( 2 ) T + ( 2 ) 1 ]

2 f ( x ) 的正定性可知,上式子在非最优值处均小于0。所以 Δ x 方向为下降方向。此搜索方向称之为牛顿搜索方向。

~—————————————牛顿下降算法伪码———————————-

  1. 给定初始迭代点(该点应该定义域内)
  2. 计算牛顿方向 Δ x n t = ( 2 f ( x ) ) 1 f ( x ) T
  3. 选择步长 t ,直线搜索
  4. 修改迭代点: x := x + t Δ x s d
  5. 检测终止条件,不满足则跳至第2步

~—————————————————————————————————-

实际上,牛顿搜索方向就是采用Hessian矩阵 2 f ( x ) 定义的二次范数推导的最速下降法。

拟牛顿法

共轭梯度法


Reference

[1] 凸优化

猜你喜欢

转载自blog.csdn.net/xholes/article/details/79921875
今日推荐