Barzilai-Borwein梯度法(BB法)进阶题
题目描述
考虑以下无约束非线性规划问题:
\[\min_{x \in \mathbb{R}^n} f(x) \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 是一个连续可微、但可能非凸的函数,并且其梯度 \(\nabla f(x)\) 是 Lipschitz 连续的。
假设 \(f\) 具有“强凸性”或“拟凸性”结构,但我们不精确知道其 Hessian 矩阵。目标是设计一种高效的一阶优化算法,使其在迭代过程中自适应地调整步长,避免计算 Hessian 或进行线性搜索,同时保持较快的收敛速度。
具体任务:
详细解释 Barzilai-Borwein(BB)梯度法的原理,并将其扩展到一种自适应 BB 步长策略,以处理目标函数曲率变化较大的情况。然后,给出该自适应 BB 方法的完整迭代格式,并分析其在理论上可能具有的优势。
解题过程
第一步:回顾标准梯度下降法
在标准梯度下降法中,迭代格式为:
\[x_{k+1} = x_k - \alpha_k \nabla f(x_k) \]
其中步长 \(\alpha_k\) 通常通过精确或不精确线搜索确定,这需要额外的函数值计算,增加计算成本。
第二步:Barzilai-Borwein(BB)步长的基本思想
BB 法(1988 年提出)是一种拟牛顿思想的梯度法。它不计算 Hessian,而是利用当前迭代点与上一步迭代点的梯度差和自变量差,构造一个近似 Hessian 逆的标量步长。
定义:
\[s_k = x_k - x_{k-1}, \quad y_k = \nabla f(x_k) - \nabla f(x_{k-1}) \]
BB 步长有两个常见形式:
- 长步长(BB1):
\[ \alpha_k^{\text{BB1}} = \frac{s_k^T s_k}{s_k^T y_k} \]
- 短步长(BB2):
\[ \alpha_k^{\text{BB2}} = \frac{s_k^T y_k}{y_k^T y_k} \]
它们分别来自于最小化 \(\| \alpha^{-1} s_k - y_k \|\) 和 \(\| s_k - \alpha y_k \|\),即近似满足割线方程 \(\alpha^{-1} s_k \approx y_k\) 或 \(s_k \approx \alpha y_k\)。
第三步:标准 BB 法的迭代流程
- 选择初始点 \(x_0\),初始步长 \(\alpha_0\)(例如通过线搜索获得)。
- 计算梯度 \(g_0 = \nabla f(x_0)\)。
- 迭代 \(k=0,1,2,\dots\):
- 更新 \(x_{k+1} = x_k - \alpha_k g_k\)。
- 计算新梯度 \(g_{k+1} = \nabla f(x_{k+1})\)。
- 计算 \(s_{k+1} = x_{k+1} - x_k\),\(y_{k+1} = g_{k+1} - g_k\)。
- 选择 \(\alpha_{k+1}\) 为 BB1 或 BB2 步长,注意避免分母为零(可加小扰动)。
- 直到满足停止准则(如梯度范数小于阈值)。
优点:无需线搜索,每步只计算一次梯度,且常具有超线性收敛速度(对于强凸二次函数)。
第四步:自适应 BB 步长策略
标准 BB 法在非二次或曲率变化大的问题中,步长可能震荡,导致收敛变慢。自适应策略旨在动态调整步长,提高鲁棒性。
一种常见方法是交替使用 BB1 和 BB2 步长,或引入自适应切换准则。这里介绍一种基于梯度内积的自适应策略:
定义比值:
\[r_k = \frac{s_k^T y_k}{y_k^T y_k} \cdot \frac{s_k^T s_k}{s_k^T y_k} = \frac{\|s_k\|^2 \|y_k\|^2}{(s_k^T y_k)^2} \]
该值反映了 \(s_k\) 与 \(y_k\) 的夹角余弦的倒数,与 Hessian 的条件数有关。当 \(r_k\) 较大时,曲率变化剧烈,倾向于使用短步长(BB2)以稳定迭代;当 \(r_k\) 较小时,使用长步长(BB1)以加速进展。
自适应步长选择:
\[\alpha_k = \begin{cases} \alpha_k^{\text{BB2}}, & \text{if } r_k > \tau \\ \alpha_k^{\text{BB1}}, & \text{otherwise} \end{cases} \]
其中 \(\tau > 1\) 是一个阈值(例如 \(\tau = 5\))。此外,为保证步长合理,可将其限制在区间 \([\alpha_{\min}, \alpha_{\max}]\) 内。
第五步:自适应 BB 法的完整算法步骤
- 输入:初始点 \(x_0\),初始步长 \(\alpha_0 > 0\),参数 \(\tau > 1\),\(\alpha_{\min} = 10^{-10}\),\(\alpha_{\max} = 10^{10}\),容忍度 \(\epsilon\),最大迭代 \(K\)。
- 计算 \(g_0 = \nabla f(x_0)\),令 \(x_{-1} = x_0 - \alpha_0 g_0\)(虚拟前一点,便于首次计算 \(s_1, y_1\))。
- 循环 \(k=0,1,\dots,K-1\):
- 更新:\(x_{k+1} = x_k - \alpha_k g_k\)。
- 计算 \(g_{k+1} = \nabla f(x_{k+1})\)。
- 若 \(\|g_{k+1}\| < \epsilon\),终止。
- 计算 \(s_{k+1} = x_{k+1} - x_k\),\(y_{k+1} = g_{k+1} - g_k\)。
- 若 \(|s_{k+1}^T y_{k+1}| < 10^{-12}\),则令 \(\alpha_{k+1} = \alpha_k\)(防止除零),继续。
- 计算:
\[ \alpha^{\text{BB1}} = \frac{s_{k+1}^T s_{k+1}}{s_{k+1}^T y_{k+1}}, \quad \alpha^{\text{BB2}} = \frac{s_{k+1}^T y_{k+1}}{y_{k+1}^T y_{k+1}}, \quad r_{k+1} = \frac{\|s_{k+1}\|^2 \|y_{k+1}\|^2}{(s_{k+1}^T y_{k+1})^2} \]
- 如果 \(r_{k+1} > \tau\),选择 \(\alpha_{k+1} = \alpha^{\text{BB2}}\),否则选择 \(\alpha^{\text{BB1}}\)。
- 截断步长:\(\alpha_{k+1} = \min(\alpha_{\max}, \max(\alpha_{\min}, \alpha_{k+1}))\)。
- 输出:近似最优解 \(x_{k+1}\)。
第六步:理论优势分析
- 计算效率:每步仅需一次梯度计算,无需求解线性系统或线搜索,适合大规模问题。
- 自适应曲率处理:通过 \(r_k\) 检测 Hessian 近似条件数的变化,动态切换步长,减少标准 BB 法的步长振荡,提高稳定性。
- 收敛性保证:对于强凸二次函数,标准 BB 法收敛性已有证明;自适应策略在非二次情形下通常能保持收敛,且数值实验显示其常优于固定 BB 形式。
- 鲁棒性:步长截断防止过大/过小步长,避免数值溢出或停滞。
第七步:应用示例
考虑 \(f(x) = \frac{1}{2} x^T A x - b^T x\),其中 \(A\) 对称正定。此时 BB 法在有限步内收敛到精确解(对于 \(n=2\) 两步收敛)。对于非二次函数如 \(f(x) = \sum_{i=1}^{n-1} (1-x_i)^2 + 100 (x_{i+1} - x_i^2)^2\)(广义 Rosenbrock 函数),自适应 BB 法通常比标准梯度下降更快,且比纯 BB1 或 BB2 更稳定。
总结
自适应 Barzilai-Borwein 梯度法通过监控连续迭代中的梯度变化与自变量变化的关系,动态选择步长形式,平衡收敛速度与稳定性。该方法是一种高效的无约束优化算法,特别适用于 Hessian 难以计算的中等规模问题。