算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)

一、学习目标

1.了解非线性问题的标准形式和各种求解方法
2.学习牛顿法和拟牛顿法
3.学习方向测定-线性最小方法
4.学习各种搜索法

二、非线性问题

1.非线性问题的规范式相比于前两种问题,会显得十分简单:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第1张图片
需要注意:这节课先讨论没有约束条件的非线性问题,这样能保证我们在使用后续算法进行自由的搜索。
2.求解算法分三类:
第一类是以牛顿法为主体的方法;
第二类是通过方向测定和线性优化的方法进行优化;
第三类是不进行求导而是进行搜索的方法,Nelder-Mead Method是其中一种。
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第2张图片

三、牛顿法

1.对于目标函数f,我们对其进行泰勒展开,有:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第3张图片
使用二阶泰勒展开式近似原函数,我们的问题就变为了:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第4张图片
其中X0是我们的初始点,在X0点进行搜索,可以找到当前最优解Xopt,牛顿法就是不断求解绿色部分,如果写成曲线的导数形式,为黄色部分。
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第5张图片

四、拟牛顿法

1.牛顿法的问题:使用牛顿法求解问题时,由于需要求解问题的一阶梯度,还要求解二阶梯度。二阶梯度,即二阶导数,准确来说,是海森矩阵,会出现两个问题:
(1)不好求,或者计算时间长;
(2)海森矩阵稀疏,导致无法求逆。
2.为了解决这两问题,前人提出了三种解决办法:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第6张图片
由于这三方法都以科学家名字命名,于是一般念首字母即可(LM法,BFGS法,DFP法)。

3.LM法:上图也给出了其基本原理:海森矩阵不是会稀疏嘛,不能求逆嘛,那我给主对角线的元素都加上一个λ,这样不就可以求逆了。
在这里插入图片描述
4.BFGS法和DFP法:两个方法都是对海森矩阵也进行迭代计算,前者对H进行迭代,然后再求逆,后者则一步到位,直接对H逆进行迭代,迭代使用的公式如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第7张图片

五、基于方向测定和直线优化的方法

1.由于我们都要使用迭代的方法去找最优解,我们每一步的移动都必然是让点向某个方向移动多少距离。于是我们可以通过确定方向(方向测定)和距离(直线优化)来求解我们的问题,即:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第8张图片
于是我们的问题变成了:(初始化节点、搜索一个方向,求使目标函数更小的移动距离s)
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第9张图片
针对直线优化(后面会讲如何寻找方向),我们也有三类方法:
(1)固定步长、变化步长的搜索方式
(2)曲线拟合的方法
(3)使用黄金分割率、斐波那契数列的搜索方法
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第10张图片
2.固定步长方法:假定我们找到了一个合适的方向,我们先预先确定一个固定的、数值小的步长Δs。我们每次移动Δs,使得每次移动都是使函数值更小的点,直到不在减少为止。写成数学公式为:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第11张图片
显然这种方法是有问题的,如果Δs设置较小,那么迭代次数太多,如果Δs设置太大,那么容易跳过最优解。于是就提出变长步长的方法。

3.变长步长方法:相比于固定步长方法,其步长在设置时,只是设置成先大后小。写成数学公式为:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第12张图片

4.曲线拟合方法(二次曲线拟合为例):图例和过程如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第13张图片
上面两张图使用两种方法来拟合,(a)是选三个点来确定一个二次曲线,(b)是使用两个点以及一点的切线方向来确定一条二次曲线。
显然,曲线拟合的方法对原问题的要求挺大的,需要根据实际任务来确定是否使用该方法。

5.黄金分割率方法:如果我们知道最优解在某区间内[a,d]时,我们使用黄金分割率去分割这个区间,得到两个点b和c。通过判断四个点的大小,剔除掉最大的点,得到下一步迭代的区间。图解如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第14张图片
6.斐波那契方法:由于斐波那契数列的特殊性,使用斐波那契数列元素比值来替换黄金分割率方法中的λ,整体算法为:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第15张图片
以上就是我们如何找线性距离的方法,那么方向呢?我们也有5种方向:
7.1最速下降方向:即当前点的负梯度方向。
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第16张图片
7.2二阶泰勒展开方向:就是牛顿法求解出的方向:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第17张图片
7.3LM方向:即LM拟牛顿法求解的方向:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第18张图片
7.4BFGS方向:即BFGS拟牛顿法求解的方向;
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第19张图片
7.5DFP方向:即DFP拟牛顿法求解的方向:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第20张图片
7.6FR方向根据当前点的梯度和上一点的方向来确定的方向
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第21张图片
至此,我们第二种方法,根据方向测定和直线优化 的方法已讲解完毕。

六、搜索方法

1.搜索方法的思想是:在n维空间中,我们至少可以提前确定好n个空间方向,按顺序每次往一个方向移动一定距离,使得目标函数下降,最后当移动的距离少于某个阈值时,我们结束迭代。

2.垂直搜索法(perpendicular search method):图解如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第22张图片
3.P氏垂直方法(Powell‘s perpencicular method):图解如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第23张图片
x2帽和x4帽才是真正的迭代点。与原来的垂直搜索法相比,有两点不同:
(1)每次通过n个方向移动后,会修改其中一个方向,即x0->x1方向(移动的距离最大)更换为x0->x2方向。
(2)每次通过n个方向移动后,会进行一个映射再移动到真正的下个迭代点。如通过x0,x2映射到x2帽。

4.Nelder-Mead方法:图解如下:
算法中的最优化方法与实现 (第5 6课 无约束的非线性规划)_第24张图片
与前两种方法不同的是,NM法不需要遍历所有基本方向,而是每次找两个可以下降的方向,在图中为x1,x2方向,两个方向相加确定真正的下降方向,再人为设置三档步长(C:收缩,步长短;R:反射,即等距;E:拓展,步长长),从而确定下一个迭代点。

5.总结,搜索法比之前的方法,优势在于不使用梯度。但缺点是:如果变量太多(超过4个),效率会大打折扣。

七、本课小结

1.非线性问题的定义
2.牛顿法和拟牛顿法
3.角度测定和直线优化
4.搜索法

你可能感兴趣的:(算法中的最优化方法与实现,算法,1024程序员节)