玩命加载中 . . .

最速下降法、牛顿法、共轭梯度法原理及对比


三者都是基于导数的迭代优化方法,用于求解无约束优化问题。

代码:https://github.com/321hjd/ImageBed/tree/main/code/NumericalOptimization/derivative-basedOptimization

一、最速下降法

1.1 原理

基本思想

  1. 最速下降法是梯度下降法和一维搜索的结合

  2. 梯度下降法采用一阶泰勒展开式对函数近似,然后将变量沿着负梯度方向(下降最快的方向)移动一定的步长,目标函数就会一直减小,直至接近极小值

  3. 步长的确定。让变量在负梯度方向走一段能让函数值最小的距离。可通过求解下式得到(一般通过令其对 $\lambda$ 求导为0直接求解或通过一维搜索算法如试探法、函数逼近法迭代求解)。

  4. 一阶收敛条件。梯度的范数满足趋近于0的精度要求

算法步骤

  1. 步骤1:选取初始点 $x^0$ ,给定终止精度要求 $\varepsilon>0$ ,令迭代编号 $k=0$

  2. 步骤2:计算梯度 $\nabla f(x^k)$ ,若满足 $||\nabla f(x^k)||<\varepsilon$ ,则停止算法,输出极值点 $x^k$,否则进入步骤3

  3. 步骤3:取负梯度 $d^{(k)}=-\nabla f(x^k)$ 作为下降方向

  4. 步骤4:一维搜索求最佳步长 $\lambda_k$ ,使得其满足沿该方向移动步长 $\lambda_k$ 后,函数值最小

  5. 步骤5:变量迭代 $x^{(k+1)}=x^{(k)}+\lambda_k d^{(k)}$ ,回到步骤2继续迭代

算法特点

  1. 最速下降法的搜索过程是锯齿形的,每一步所得方向(负梯度)都与上一步正交,在远离极值点时收敛速度快,但接近极值点时收敛非常慢(可以和其它在极值点附近收敛速度快的算法结合)

    正交的原因:

    一维搜索时无论是利用求导直接求解还是一维搜索方法,最终目的都是令其梯度趋近于零。即

    内积为0,因此相邻步的方向是正交的。

  2. 最速下降法所得解是局部最优解,而非全局最优解,仅当目标函数为凸函数时,为全局最优。可形象地解释为:在点x1处向梯度方向到达x2,x2再向梯度方向到达x3,但这不一定是x1到x3最快的路径。

1.2 实例

目标函数:$f(x_1,x_2)=x_1^2+x_1x_2+3x_2^2$

初始点:$(1,1)$

终止精度:$\mathrm{eps}=10^{-5}$

等高线及迭代点搜索过程图

steepestDescent

经过9次迭代,算法终止。可以看到在接近极小值点时,最速下降法收敛速度非常慢。

二、牛顿法

2.1 原理

算法思想

  1. 二阶函数近似。利用二阶泰勒展开式对目标函数进行近似,因此会用到一阶导数(梯度)和二阶导数(海森矩阵)

  2. 近似极小值点。将近似得到二阶函数的极小值点作为原函数极小值点的近似,并不断重复这一近似的过程,直至得到满足精度要求的极小值点

  3. 终止条件仍然是满足梯度趋近于0

算法步骤

  1. 步骤1:选取初始点 $x^0$ ,给定终止精度要求 $\varepsilon>0$ ,令迭代编号 $k=0$
  2. 步骤2:计算梯度 $\nabla f(x^k)$ ,若满足 $||\nabla f(x^k)||<\varepsilon$ ,则停止算法,输出极值点 $x^k$,否则进入步骤3
  3. 步骤3:计算海森矩阵 $\nabla^2 f(x^k)$
  4. 步骤4:变量迭代 $x^{(k+1)}=x^{(k)}-\frac{\nabla f(x^{(k)})}{\nabla^2 f(x^{(k)})}$ ,并回到步骤2继续迭代

算法特点

  1. 相比最速下降法,省去了一维搜索的步骤,但需要计算海森矩阵及其逆

  2. 收敛速度快,具有局部二阶收敛性。形象解释:最速下降法只考虑当前位置下降最快的方向,而不考虑下降后的坡度如何;而牛顿法同时考虑当前下降方向(一阶导)和下降之后坡度的变化(二阶导)

  3. 对于二次函数(正定二次型),牛顿法具有一步收敛性

    假设目标函数为二次型 $f(x)=\frac{1}{2}x^TQx-x^Tb$

    梯度为:$\nabla f(x^{(0)})=Qx^{(0)}-b$

    海森矩阵为: $\nabla^2 f(x^{(0)})=Q$

    经过牛顿法一次迭代后,近似极值点为:$x^{(1)}=\frac{b}{Q}$

    重新计算梯度: $\nabla f(x^{(1)})=Qx^{(1)}-b=0$ ,算法终止

2.2 实例

目标函数:$f(x_1,x_2)=x_1^2+x_1x_2+3x_2^2$

初始点:$(1,1)$

终止精度:$\mathrm{eps}=10^{-5}$

等高线及迭代点搜索过程图

Newton

由于牛顿法对于二次函数的一步收敛性,可见仅经过1次迭代,算法终止。

三、共轭梯度法

3.1 原理

术语

  • 残差

    假设目标函数为二次型 $f(x)=\frac{1}{2}x^TQx-x^Tb$ ,其中 $b,x\in\mathbb{R}^n,Q\in\mathbb{R}^{n\times n}$ 且矩阵 $Q$ 是对称正定的。$n$ 代表解空间是 $n$ 维的,即 $n$ 元二次函数。

    其最小值可以通过令一阶导为零得到:$\nabla f(x^)=Qx^-b=0$

    假设通过迭代法求解,迭代法通常无法令该一阶导等于零,因此可将 $\nabla f(x^{(k)})-\nabla f(x^*)$ 称作系统残差(也是梯度),具体表示为:

  • 共轭向量

    当一组向量 $\{p_0,p_1,\cdots,p_{n-1}\}$ 满足如下条件时,称其关于对称正定矩阵 $Q$ 共轭。

    这样一组向量是线性独立的,可以张成整个空间 $\mathbb{R}^n$ ,因而可以用来表示其它向量。

算法思想

  1. 与最速下降法类似,需要找到下降方向(二者的区别也就在于确定的下降方向不同),然后通过一维搜索找到变量 $x_k$ 迭代的最优步长 $\lambda_k$

    对于寻找最优步长 $\lambda_k$ ,需要将

    代入目标函数 $f(x)$ 并对 $\lambda$ 求导。因此可以得到:

  2. 利用共轭梯度法确定下降方向 $p_k$。将最优解点和初始点的差用一组线性无关的共轭向量(向量个数与解空间维度相同)的线性组合近似。然后逐个寻找共轭向量及其系数(步长),构建每一个方向(维度)上的最优解,即沿着解空间的维度逐步构建最优解。具体可解释如下:

    将最优解和初始值的差表示为共轭向量的线性组合:

    其中 $\beta_k$ 就是沿着每个共轭向量$p_k$(方向)走的步长。对于第 $k$ 步,$x_k$ 将 $x^*$ 投影到由 $k$ 个线性独立的共轭向量张成的解空间中。

    共轭向量 $p_{k+1}$ 的寻找依赖于负残差和上一个共轭向量。负残差其实就是负梯度,因此称为共轭梯度法。每次迭代找到的新方向(共轭向量)是负残差和上一个搜索方向的线性组合:

    其中,步长 $\beta_k$ 可以根据共轭条件($p_{k}^TQp_{k+1}=0$)得到:

  3. $\lambda_k$ 和 $\beta_k$ 计算的简化

    1. 对于 $\lambda_k=\frac{r_k^Tr_k}{p_k^TQp_k}$

      由于 $p_{k+1}=-r_{k+1}+\beta_kp_{k}$ ,且 $r_{k+1}^Tp_{k}=0,r_{k+1}r_k=0$

      同时 $r_{k}=Qx_k-b$

      所以 $r_{k+1}-r_k=Q(x_{k+1}-x_k)=Q\lambda_kp_k$

      进一步 $\lambda_k=\frac{r_{k+1}-r_k}{Qp_k}$

      分子分母左乘 $p_k^T$ 代入即可证明。

    2. 对于 $\beta_k=\frac{r_{k+1}^{T}r_{k+1} }{r_{k}^{T} r_{k}}$

      由1中证明,$Qp_k=\frac{r_{k+1}-r_k}{\lambda_k},r_{k+1}r_k=0$

      代入可得到分子 $r_{k+1}^{T}r_{k+1}$

      由 $p_{k}^Tr_{k+1}=0$ ,所以 $p_{k}^Tr_{k}=r_{k}^Tr_{k}$

      进一步可得到分母 $r_{k}^{T}r_{k}$

算法步骤

  1. 步骤1:计算初始残差(梯度)$r_0=Qx_0-b$ ,初始下降方向(负梯度) $p_0=-r_0$

  2. 步骤2:按下列公式迭代 $k=0,1,\cdots,n-1$ 直到收敛(n维搜索n步)(收敛条件仍然是残差(梯度)满足精度要求)

算法特点

  1. 仅需计算一阶导数,但收敛速度比最速下降法快;不需要像牛顿法一样存储和计算海森矩阵并求逆
  2. 具有“步收敛性”,即在每个方向都走到极致,不会走曾经走过的方向,n维空间只需要走n步即可找到极值点

3.2 实例

目标函数:$f(x_1,x_2)=x_1^2+x_1x_2+3x_2^2$

初始点:$(1,1)$

终止精度:$\mathrm{eps}=10^{-5}$

等高线及迭代点搜索过程图

conjugateGradient

因为是二元函数,可见仅经过2次迭代,算法终止。

三种方法的搜索过程对比

对比

参考链接

  1. 《数学建模算法与应用第二版》
  2. 比较数学建模中的优化方法 | 最速下降法 牛顿法 共轭梯度法 启发式算法
  3. 最速下降法
  4. 证明最速下降法搜索方向正交
  5. 最速下降法matlab实现
  6. 优化算法——牛顿法
  7. 牛顿法及其收敛性分析
  8. 共轭梯度法简介
  9. 数值优化(4)——非线性共轭梯度法,信赖域法

文章作者: hjd
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hjd !
评论
 上一篇
惩罚函数法 惩罚函数法
通过构造惩罚函数将约束问题转化为无约束问题,进而用无约束最优化方法求解。对目标函数凹凸性无要求,且结合启发式算法几乎可求解任意问题。
2022-06-18
下一篇 
通信工程专业实习总结 通信工程专业实习总结
本科生涯的最后一次小组合作项目。也是除毕设以外的最后一次课程。主要记录下小组合作的复杂项目,即模拟对北京景山公园的TD-LTE基站搭建。
2022-03-18
  目录