课程4
接下来就开始学习具体的问题和解决问题的算法了~
首先是无约束问题 unconstrained problems
之前学习的回顾,什么是凸集、凸函数、局部最优解
参考:https://blog.csdn.net/qq_16608563/article/details/82757086
1. 无约束问题的最优性条件 optimality condition for unconstrained problems
所谓非线性规划的最优化条件,是指非线性规划模型的最优解所满足的必要条件或者充分条件。
无约束优化问题的最优性条件,是和最优解有关的条件,最优解的充分or必要条件。
首先是一阶条件first-order condition,它是必要necessary的最优性条件,即已知是(局部或全局)最优解,得到了有关梯度(一阶)的结论。
由此可以看出,可以通过刻画最小值的性质来得到最优性条件。
算法能够轻易找到满足这个必要条件的点,但我们不知道它是否是最优解(点),我们称这些点为驻点stationary point。
一个满足一阶条件但不是最优解的例子是
如果要使条件是充分条件,只需要加上f是凸函数这个要求就行。证明需要用到***上一章的函数凸性的一阶条件***,它是充分必要,既可以证明f凸又可以有f凸得到,这里是由f凸得到。
凸函数的一阶条件:对于凸函数上的任一点 y ,它所在处的切平面永远在函数 f下方。
下降方向可以这样理解:当点从x出发,沿着方向d移动时,函数f的值变化呈严格单调递减的趋势。
用梯度来表示就是
也称一阶下降方向first order descent directions。
如果要证明d是下降方向,只要满足(3)式就行;而如果要证明有(3)式,不仅要知道d是下降方向,还要有f是凸函数。
所以(3)式的用途是当f是凸且d是下降方向时,能写出这个公式
而我们知道对于正定矩阵,有
所以有一种确定下降方向d的方式为将X看作f在x的梯度,那么AX就是d,所以此时就是一个正定矩阵乘以梯度的负值,即(2)
?? 为什么我们要知道下降方向呢? -因为我们想要函数值越来越小,也就是找某一种算法能够确定一种下降方向,使得最后得到最优的最小值。
然后就是针对无约束优化问题的算法 algorithms for unconstrained optimization
首先是一些经典算法:和梯度有关的一些算法
我们可以把之前定义下降方向的
看作是x拔的下一步迭代。
无约束优化问题的算法的步骤为
反正就是Φ(α) (orΦ(α_k))< Φ(0),即
现在就是:下降方向(或search direction)怎么求?stepsize怎么确定?迭代算法什么时候停止迭代?还有最一开始的初始点怎么选?
? stepsize如果确定?
-在优化方法里,步长通常是通过线性搜索算法 linear search来找到的。
课程里有3中linear search,exact linear search、Mrmijo Rule、Fixed Stepsize。
我们要确定步长,就是在下降方向d已知后,使得
函数Φ最小
因为Φ(0)后面一项是变量为α,系数是小于0的,可以结合图片来理解,right hand 是黑色直线,红线是进一步迭代后的f值,红线比Φ(0)减去一点还要小,说明就是有一定的下降量。
最后还有一种fixed stepsize
参考:https://blog.csdn.net/qq_16608563/article/details/82757086
数值最优化算法与理论(李董辉 董小娇 万中)