![833538ce224925f69d717dc0064ce7fd.png](https://i-blog.csdnimg.cn/blog_migrate/091c07f88fff60a7db76020144522a04.jpeg)
上一章传送门:
善道:学习笔记:数值最优和模型预测控制(三)无约束静态最优化(一)确定步长zhuanlan.zhihu.com![38334842696cf6ff7188f97bfd7cd4b1.png](https://i-blog.csdnimg.cn/blog_migrate/7babf0693e7d6bd6197c6229c7369845.jpeg)
接下来我们探讨如何确定下降方向的向量
4.1 梯度法
为了让代价函数沿最快速度方向下降到最小值,除了迭代步长,下降方向也至关重要。确定搜寻方向有许多方案,他们各有特色,依据精度,收敛速度以及计算复杂度相区别。最简单的一种方法,即沿着负梯度方向。那么
(4.1)
这就是梯度法,往往也被称为梯度下降法,易知满足一阶下降条件
(4.2)
梯度和等高线
![e4148610010c789160853f4846a3a8bf.png](https://i-blog.csdnimg.cn/blog_migrate/588aef8ad43839239eb71d59a3fa59ec.jpeg)
当给定条件较优时(比如
定理4.1 梯度下降收敛速率: 对于二次型函数,有正定矩阵
,其梯度下降法的线搜索精确解的收敛速度满足
(4.3)![]()
其中为
的最大最小的特征值。
总结来说,梯度下降法的优势为简单,而且在Newton法时,有更大的收敛范围。劣势为在条件恶劣时收敛速度很差,而且精度也受限。
4.2 共轭梯度法
这是原有的梯度法的变体,因为计算量没有高过太多,效率和收敛性质却显著优于梯度法。共轭梯度法充分利用了前一步迭代的信息,使得
(4.4)
(4.5)
第一步依然是最陡峭的负梯度下降方向,之后的每一步都依赖前一步信息更新,并有修正
(4.6)
这是由Fletcher和Reeves建议补充的。共轭梯度法基本上放弃了繁琐的矩阵运算,从而也对一些稍微大一点的问题可以应用,使用时也要注意存储器效率。此外梯度法所涉及的二次型
4.3 Newton法
线搜索的一种特殊情况是,搜索方向的选择正好对应Newton法,此时的搜索方向
(4.7)
以此来找到最小的
(4.8)
根据
(4.9)
(4.10)
Newton方向产生了
Newton法实质上是二阶的方法,因为趋近模型有三阶以上的误差。但它对高维系统也相对可靠实用,只要二次近似足够精确。图4.2表现了这个Newton法的方向相比较于最陡峭负梯度方向,更快速逼近最小值。
![53007817df53002a64e0f43f77bfdc43.png](https://i-blog.csdnimg.cn/blog_migrate/5380ee155e33ca82ec6ecf7774808082.png)
总结来说,Newton法的优势在于平方收敛,速度更快精度比一阶高,但存在局部收敛(不保证对任意
为获得全局最小的收敛,Newton法需要至少要保证Hesse矩阵的正定性。还可以通过近似或者Quasi-Newton法来避免Hesse矩阵的计算。
4.4 Quasi-Newton法
Quasi-Newton法是一个非常具有吸引力的对纯Newton法的替代方法,因为可以不用计算Hesse矩阵。反之,采用每次迭代更新逼近Hesse矩阵的方法。这样单步迭代梯度的信息就被充分利用,来提供有关沿搜索方向的二阶导数的信息。
先考虑梯度
(4.11)
对于足够小的
(4.12)
由此可以反推出Hesse矩阵的近似表达
(4.13)
不过这样又面临了一个新问题,
(4.14)
其中简写表示
起始位置在
Newton法中还需要计算Hesse矩阵的逆矩阵,所以直接给出等价的逆矩阵
(4.15)
于是就能得到Quasi-Newton法的搜索方向
(4.16)
Quasi-Newton法通过很快收敛速度表现抢眼,原则上纯Newton法的收敛速度达不到这种程度,这无外乎向量矩阵运算
4.5 其他数值方法
接下来介绍两种对于无约束最优问题的其他数值方法:置信域法和直接搜索法。
前者类似于线搜索,后者则是不必估算梯度。
4.5.1 置信域法
不同于之前介绍的线搜索法,置信域法构造了代价函数
(4.17)
因为
(4.18)
其中
当每次迭代不断减小
- 线搜索专注
的搜索方向,并需要确定合适的步长
- 置信域法先划出一个最大可信范围
,然后同时决定一个合适的方向和步长
,到达下一个迭代点
,如有必要,可缩小信任区域并重复搜索。
置信区间
(4.19)
4.5.2 直接搜索法
之前几个方法都是跟求导相关的,需要用到梯度信息,不过有些时候偏导不存在或者不容易接近或者需要极大计算量,这是一些太复杂或者不再连续可微的问题。可以借助直接搜索/不求导搜索法,只需要借助一些采样点来算出一系列函数值,再来确定迭代点。在非线性最优化中,一个最知名同时又是最简单的方法即Nelder-Mead法。这个算法基于n维空间的单纯形。它由
对由
(4.20)
于是这个算法就用一个新的点替换掉最“坏”的点
(4.21)
该公式由参数
- [a]反射(Reflection)图a):反射点为
。若
,则令
- [b]扩张(Expansion)图b):若
,点为
。若
,则令
。否则令
。
- [c]外缩(äußere Kontraktion)图c):若
,则令
。若
,则令
。否则继续执行步骤收缩步骤[e]。
- [d]内缩(innere Kontraktion)图d):若
,则令
。若
,则令
。否则继续执行步骤收缩步骤[e]。
- [e]收缩(Schrumpfung)图e):把单纯形压缩在最优点为
。令
,
单纯形算法通过不断迭代进行,直到收敛判据达成。单纯形沿着最优方向游走,不过并不能完全保证收敛,也可能会收敛在一个非最优的点。不过实操时,单纯形法往往有很好的结果,而且收敛速度也很快。由于它高鲁棒性,算法又简单,是一个非常常用的算法。
![83cbfa5a469b53d8ec58a1684029a3d9.png](https://i-blog.csdnimg.cn/blog_migrate/7250f4370f85c2d9d5511baf891dc984.jpeg)
参考文献:
Numerische Optimierung und modellprädiktive Regelung (WS 2019/2020), A. Völz, K. Graichen, Lehrstuhl für Regelungstechnik, Friedrich-Alexander-Universität Erlangen-Nürnberg