G
N
I
D
A
O
L

【最优化方法】第五次要点整理

共轭方向

\(Q \in \mathbb{R}^{n \times n}\) 对称正定,若 \(n\) 维向量组 \(d_1, ..., d_m \in \mathbb{R}^n\) 满足:

\[d_i^\top Q d_j = 0, \forall i \neq j \]

则称 \(d_1, ..., d_m\) 关于 \(Q\) 共轭,或称为 \(Q\) 的一个共轭方向组。

注:

  • 向量组的共轭是正交的推广,即若 \(Q=I\)(单位阵),则共轭变为正交。
  • \(d_1, ..., d_m\)\(Q\) 的一个共轭方向组,则 \(d_1, ..., d_m\) 线性无关,且 \(d_1, ..., d_m\) 构成 \(\mathbb{R}^n\) 的一组基。

共轭方向法

【算法思想】n 个共轭方向转化为 n 个独立的一元优化问题,能减少迭代次数。

image

【算法步骤】

  • 第一步:选取初始点 \(x_0\),给定终止误差 \(\varepsilon > 0\) ,令 \(k=0\)
  • 第二步:计算 \(\nabla f(x_k)\),若 \(|| \nabla f(x_k) || \leq \varepsilon\),停止迭代并输出 \(x^*=x_k\);否则进行第三步
  • 第三步(精确线搜索):取 \(\alpha_k = \mathop{\arg\min}\limits_{\alpha \geq 0} f(x_{k} + \alpha_{k} \nabla f(x_{k}))\)
  • 第四步(更新迭代点):计算 \(x_{k+1} = x_k + \alpha_k d_k\)
  • 第五步:选取 \(d_{k+1}\),使其满足下降性和共轭性,即(其中 \(Q\) 是空间线性变换矩阵):

\[\begin{cases} \nabla f(x_{k+1})^\top d_{k+1} < 0 \\ d_{k+1}^\top Q d_i = 0, \forall i=0,...,k \\ \end{cases} \]

然后令 \(k \leftarrow k+1\),转到第二步。

共轭梯度法

【算法思想】利用当前负梯度方向 \(-\nabla f(x_{k+1})\) 和当前下降方向 \(d_k\) 的线性组合来生成 \(d_{k+1}\)

\[d_{k+1} = -\nabla f(x_{k+1}) + \beta_k d_k \]

对于 \(\forall \beta_k\),最优的下降性是满足的,证明如下:

\[\begin{aligned} \nabla f(x_{k+1})^\top d_{k+1} &= \nabla f(x_{k+1})^\top (-\nabla f(x_{k+1}) + \beta_k d_k)\\ &= -||\nabla f(x_{k+1})||^2 + \beta_k \nabla f(x_{k+1})^\top d_k \\ &= -||\nabla f(x_{k+1})||^2 \end{aligned} \]

对于共轭性,要选取合适的 \(\beta_k\) 才能成立:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top Q d_{k+1}}{d_k^\top Q d_k} \]

【算法步骤】(Hestenes 和 Stiefel 分别独立提出,1952)

  • 第一步:选取初始点 \(x_0\)\(d_0 = -\nabla f(x_0)\),给定终止误差 \(\varepsilon > 0\) ,令 \(k=0\)
  • 第二步:计算 \(\nabla f(x_k)\),若 \(|| \nabla f(x_k) || \leq \varepsilon\),停止迭代并输出 \(x^*=x_k\);否则进行第三步
  • 第三步(线搜索确定步长):取 \(\alpha_k = \mathop{\arg\min}\limits_{\alpha \geq 0} f(x_{k} + \alpha_{k} d_k) = -\frac{\nabla f(x_k)^\top d_k}{d_k^\top Q d_k}\)
  • 第四步(更新迭代点):计算 \(x_{k+1} = x_k + \alpha_k d_k\)
  • 第五步:计算 \(\beta_k = \frac{\nabla f(x_{k+1})^\top Q d_{k+1}}{d_k^\top Q d_k}\)
  • 第六步(更新搜索方向):计算 \(d_{k+1} = -\nabla f(x_{k+1}) + \beta_k d_k\),回到第二步

非线性共轭梯度法

在共轭梯度法中,选取不同的 \(\beta_k\) 会导出不同的非线性共轭公式。

求解正定二次函数的最优解时,即 \(f(x) = \frac{1}{2} x^\top Q x + x^\top b + c\)\(\nabla f(x) = Qx+b\),此时有:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top Q d_{k+1}}{d_k^\top Q d_k} \]

对于求解非正定二次函数的最优解:

  • HS(Hestenes-Stiefel,1952)公式:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top (\nabla f(x_{k+1}) - \nabla f(x_{k}))}{d_k^\top (\nabla f(x_{k+1}) - \nabla f(x_{k}))} \]

  • FR(Fletcher-Reeves,1964)公式,是最早的非线性共轭梯度法:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top \nabla f(x_{k+1})}{\nabla f(x_{k})^\top \nabla f(x_{k})} \]

  • PRP(Polak-Ribiere-Polyak,1969)公式:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top (\nabla f(x_{k+1}) - \nabla f(x_{k}))}{\nabla f(x_{k})^\top \nabla f(x_{k})} \]

  • CD(Fletcher,1987)公式:

\[\beta_k = -\frac{\nabla f(x_{k+1})^\top \nabla f(x_{k+1})}{d_k^\top \nabla f(x_{k})} \]

  • DY(Dai-Yuan,1995)公式:

\[\beta_k = \frac{\nabla f(x_{k+1})^\top \nabla f(x_{k+1})}{d_k^\top (\nabla f(x_{k+1}) - \nabla f(x_{k}))} \]

注:

  • 求解正定二次函数的最优解时,上述 5 个公式等价;但求解一般的 \(f(x)\) 最优解时,上述公式之间有差别,要根据具体的目标函数选择不同的公式(FR 公式更为常用)
  • 线搜索技术对算法的收敛性有影响:
    • 精确线搜索可以保证下一步搜索方向的下降性;
    • 非精确线搜索有可能产生上升方向(即 \(d_{k+1}\) 是上升的)
  • 实现过程中常采用 n 步重启策略,可达到二阶收敛(有 n 个共轭方向后,重新取初始点):

\[d_{k} = \begin{cases} -\nabla f(x_k), \ k=cn, \ c=1,2,... \\ -\nabla f(x_k) + \beta_{k-1} d_{k-1}, \ k \neq cn, \ c=1,2,... \end{cases} \]

posted @ 2024-12-10 19:30  漫舞八月(Mount256)  阅读(9)  评论(0编辑  收藏  举报