# 概述
无约束可微优化问题可以直接利用梯度信息求解。主要关注两个问题:
- 如何计算搜索方向
- 如何计算前进步长
# 下降算法与直线搜索
-
(梯度)下降算法通用框架
对于无约束优化问题 ,下降算法的通用框架如下:
Step 1:确定初始点 ,令
Step 2:判断是否停止:如果 ,停止
Step 3:计算 处的下降方向:确定 满足
这确保 是下降方向(函数值在该方向上会减少)。
Step 4:确定步长(通常直线搜索):若 满足
令 ,,回 Step 2。
-
步长选择的重要性
步长太大:如果简单地取 对所有 ,且 太大,算法可能发散。
步长太小:如果 太小,算法收敛会很慢。
合适的步长:当 "刚好合适"时,算法收敛良好。收敛性分析会给出"刚好合适"的精确概念。
-
精确搜索与非精确搜索
一般来说,当我们选定了前进方向,可以通过精确搜索或非精确搜索来决定合适的前进步长。
精确搜索算法(Exact Line Search)
求沿选定方向出发,使得函数最小的步长:
精确搜索算法是单变量优化问题。一般来说,精确搜索所花的时间代价小于求出搜索方向的时间代价。
-
精确搜索的基本途径
1)确定初始区间
用试探法确定一个单谷区间。可用步长加倍或减倍的方法。
2)逐步压缩区间
按照一定规则在上述区间内选点,通过计算并比较这些点上的函数值逐步缩小包含局部最优解的区间,直至区间长度小于给定阈值。
-
单谷/单峰函数
单峰函数(Unimodal Function)
在所考虑的区间中只有一个严格局部极大值(峰值)的实值函数。如果函数 在区间 上只有唯一的最大值点 ,而在最大值点 的左侧,函数单调增加;在点 的右侧,函数单调减少,则称这个函数为区间 上的单峰函数。
单谷函数(Unimodal Function)
在所考虑的区间中只有一个严格局部极小值(谷值)的实值函数。如果函数 在区间 上只有唯一的最小值点 ,而在最小值点 的左侧,函数单调减少;在点 的右侧,函数单调增加,则称这个函数为区间 上的单谷函数。
与凸函数的关系
- 单谷函数不一定是凸函数
- 凸函数在任意区间上都是单谷的
- 单谷性质使得可以使用区间压缩方法
-
区间压缩原理
已知闭区间 是单谷区间,在其内部任取两点 ,计算 :
- 如果 ,局部最优解在区间
- 否则,局部最优解在区间
两种情况均能压缩区间。
-
0.618 法(黄金分割法,Golden Section Method)
基本想法
每计算一个函数值能将区间压缩一个固定比值 。
设区间 内有两个点 :
如果 ,则最优解在 :
如果 ,则最优解在 :
算法步骤
步骤 1:确定单谷区间
选定 ,,令 ,,。选取第一个满足 的 ,获得单谷区间 。
步骤 2:确定最优步长
确定满足 的 。
单谷区间为 时,取:
其中 是方程 的正数解。
- 如果 ,令 ,,用当前 替换 ,再令
- 否则,令 ,,用当前 替换 ,再令
重复直至单谷区间长度足够小。
# 梯度下降算法
-
基本思想
梯度下降算法(Gradient Descent Algorithm)是最简单的一阶优化方法,使用负梯度方向作为搜索方向:
更新公式:
其中 是步长。
-
下降方向的条件
梯度下降方向满足下降方向条件:
只要 ,负梯度方向就是下降方向。
-
步长选择
固定步长
取 (常数),但需要选择合适的 :
- 太大:可能发散
- 太小:收敛很慢
- 合适:收敛良好
精确直线搜索
使用精确直线搜索:
非精确直线搜索
使用 Armijo 条件、Wolfe 条件等非精确搜索准则。
-
算法特点
优点:
- 算法简单,易于实现
- 只需要一阶导数信息
- 每次迭代计算成本低
- 适用于大规模问题
缺点:
- 收敛速度可能较慢(特别是条件数大的问题)
- 可能产生锯齿形路径
- 对步长选择敏感
# 最速下降算法
-
基本思想
最速下降算法(Steepest Descent Algorithm)是梯度下降算法的一种,使用精确直线搜索来确定步长:
更新公式:
其中 是通过精确直线搜索得到的。
-
算法名称的由来
"最速下降"指的是在当前位置,负梯度方向是使函数值下降最快的方向(在单位步长下)。通过精确直线搜索,算法沿着这个方向找到使函数值最小的点。
-
算法步骤
Step 1:初始化 ,令
Step 2:如果 ,停止
Step 3:计算搜索方向:
Step 4:精确直线搜索:
Step 5:更新:,,回 Step 2
-
收敛性质
收敛性
对于强凸函数,最速下降算法保证收敛到全局最优解。
收敛速度
- 对于强凸函数,收敛速度是线性的
- 收敛速度取决于条件数(condition number)
- 条件数越大,收敛越慢
-
与梯度下降的关系
- 最速下降是梯度下降的一种特殊情况(使用精确直线搜索)
- 梯度下降可以使用固定步长或非精确搜索
- 最速下降使用精确搜索,理论上每步下降最多
-
应用场景
- 适用于大规模优化问题
- 适用于条件数不太大的问题
- 作为其他算法的子程序
# Newton 方法
-
基本思想
牛顿方法(Newton's Method)是一种二阶优化方法,使用目标函数的 Hessian 矩阵信息来构造搜索方向。相比梯度下降,牛顿方法通常具有更快的收敛速度。
搜索方向
牛顿方法的搜索方向为:
这称为牛顿方向(Newton direction)。
更新公式
其中 是步长。当 时,称为纯牛顿步(pure Newton step)。
-
算法步骤
Step 1:初始化 ,令
Step 2:如果 ,停止
Step 3:计算牛顿方向:
Step 4:确定步长 (可以使用精确搜索或非精确搜索)
Step 5:更新:,,回 Step 2
-
牛顿方向的几何解释
二次近似
牛顿方向可以通过对目标函数进行二次近似得到:
最小化这个二次近似,得到:
最优性
如果 (正定),则牛顿方向是下降方向:
-
纯牛顿步 vs 阻尼牛顿步
纯牛顿步()
- 当初始点接近最优解时,纯牛顿步通常收敛很快(二次收敛)
- 当初始点远离最优解时,可能不收敛或发散
阻尼牛顿步()
- 使用直线搜索确定步长,保证函数值下降
- 更稳健,适用于远离最优解的情况
- 收敛速度可能较慢
-
算法特点
优点:
- 收敛速度快(二次收敛)
- 对于强凸函数,具有很好的理论保证
- 对于自和谐函数,有完整的收敛性分析
缺点:
- 需要计算和存储 Hessian 矩阵( 存储, 计算)
- 需要求解线性方程组( 计算)
- 对于大规模问题,计算成本高
- 需要 Hessian 矩阵正定
# 收敛性分析
对于自和谐函数,牛顿方法具有完整的收敛性分析。这里主要讨论自和谐函数上的收敛性。
-
牛顿减量(Newton Decrement)
定义牛顿减量为:
性质:
- ,且 当且仅当
- 是 的上界估计
- 对于自和谐函数,有
-
收敛阶段
对于自和谐函数,牛顿方法的收敛可以分为两个阶段:
阻尼牛顿阶段(Damped Newton Phase)
当 (其中 是某个阈值)时,算法处于阻尼牛顿阶段:
- 使用阻尼步长
- 函数值单调下降
- 收敛速度是线性的
二次收敛阶段(Quadratic Convergence Phase)
当 时,算法进入二次收敛阶段:
- 可以使用纯牛顿步()
- 收敛速度是二次的
- 快速减小
-
进入二次收敛的条件
进入二次收敛的条件是:
其中 是直线搜索的参数(如 Armijo 条件中的参数)。
在这个条件下,可以证明:
- 纯牛顿步()满足下降条件
- 算法进入二次收敛
-
二次收敛阶段的迭代次数上界
取 。
如果 ,因为 ,,对所有 有:
因此:
只要 ,就有 。
这意味着二次收敛阶段的迭代次数上界是 ,这是双对数级别的,非常快。
-
阻尼牛顿阶段的迭代次数上界
取 ,利用 。
当 时:
因此阻尼牛顿阶段的迭代次数上界为:
-
总迭代次数上界
总的迭代次数上界为:
这个上界表明:
- 阻尼牛顿阶段的迭代次数与初始函数值与最优值的差距成正比
- 二次收敛阶段的迭代次数是双对数级别的,非常少
- 总体而言,牛顿方法在自和谐函数上具有很好的收敛性
# 自和谐性
自和谐性(Self-Concordance)是凸优化中的一个重要概念,它为牛顿方法提供了完整的收敛性分析框架。
-
自和谐函数的定义
函数 是自和谐的,如果:
- 是闭凸函数
- 是开集
- 对于所有 和所有 ,有:
其中 是 在 处沿方向 的三阶方向导数。
-
自和谐函数的性质
局部性质
- 自和谐函数在其定义域内具有良好的局部性质
- Hessian 矩阵的变化是"受控的"
- 这使得可以在局部使用二次近似,并保证全局收敛性
全局性质
- 自和谐函数允许从任意初始点开始,使用牛顿方法全局收敛
- 不需要强凸性或 Lipschitz 梯度连续性
- 收敛性分析不依赖于问题的条件数
-
常见的自和谐函数
对数函数
- 在 上是自和谐的
- 这是自和谐函数的基本例子
对数障碍函数
- 对于线性不等式约束 ,对数障碍函数:
是自和谐的
熵函数
- 负熵函数 在适当定义域上是自和谐的
-
自和谐函数上的牛顿方法
优势
- 对于自和谐函数,牛顿方法具有完整的收敛性分析
- 不需要强凸性假设
- 不需要 Lipschitz 梯度连续性
- 收敛性不依赖于条件数
收敛性保证
- 从任意初始点开始,算法保证收敛
- 具有明确的迭代次数上界
- 分为阻尼牛顿阶段和二次收敛阶段
-
自和谐性与内点法
自和谐性在内点法(Interior Point Methods)中发挥重要作用:
- 内点法使用对数障碍函数,这些函数是自和谐的
- 自和谐性保证了内点法的全局收敛性
- 不需要问题的强凸性或 Lipschitz 梯度连续性
-
自和谐性的意义
理论意义
- 提供了不依赖于条件数的收敛性分析框架
- 统一了内点法和牛顿方法的理论
- 为凸优化提供了更一般的收敛性理论
实际意义
- 解释了为什么内点法在实际应用中表现良好
- 提供了算法参数选择的指导
- 为算法设计提供了理论基础