【最优化】无约束梯度算法

无约束梯度算法

从这一节开始,我们从一维优化问题过渡到多维优化问题的求解中;在解决多维优化问题的过程中,【梯度算法】是其中最常见也最简单的一种求解思路。
本章节内容聚焦于【Unconstrained Gradient Techniques】,针对的还是无约束的优化问题。

缺点:因为【梯度】就是一种局部信息,该算法通常只能找到函数的局部最优解
优点:算法较为简单,便于实现。


算法框架

与前篇博文一样,梯度算法也是基于【逐次下降法】的框架来实现的。
在这里插入图片描述

梯度(下降)方向

1. 梯度向量与梯度方向的定义
在这里插入图片描述
2. 为什么选择梯度方向作为优化搜索方向?
在这里插入图片描述

收敛性

沿着梯度下降的方向进行搜索,f(x)的最优值并不能保证在有限迭代中得到

根据前文的推导,我们知道沿着梯度方向进行搜索,则每一步单位步长,可以得到相应的函数值下降,公式如下:
在这里插入图片描述
但是在最优点x*处,函数关于各分量的偏导都是0;
在这里插入图片描述
这也就意味着,当函数逼近最优点的时候,梯度值只会无限接近于0,那么得到的函数值的减少量df也同样会逼近于0,从而无法达到精确的最优点。


最速下降法

1. 算法思想
在这里插入图片描述
2. 示例
在这里插入图片描述
当给定了一个初始点x0 = [x1,x2]T,就可以按照上述的公式,进行多次迭代,直到最后求出的点逼近最优点x*

3. 步长k

根据上面的例题,最后按照推导出来的递推式依次求解即可;但整个算法依然存在一个问题,就是关于k的取值具体是多少?

在这里插入图片描述
①若k的取值过于小,则每次迭代的步长会很小,需要经过很多轮次的迭代才能逼近最优点;
②若k的取值过于大,则迭代一开始的时候可以很高效地下降,但是之后会因为步长过大产生震荡的现象。

基于此,我们希望步长的选择可以是【自适应】的,一开始离最优点较远的时候,有较大的步长以提高效率;在接近最优点的时候,步长会逐渐缩小,以慢慢逼近最优点。


最优梯度法

1. 算法思想

这个算法就是来解决【如何选择最优步长k】这个问题

①我们从给定初始点开始,沿着该点的梯度方向进行搜索直到找到一个局部最优点(找到这个新的点之后不会再继续沿着该方向走了,否然函数值就不再是最优的了);

②再在这个新的点上计算当前新的梯度方向,再沿着这个新的梯度方向按照前面的思路进行局部最优点的搜索;

相当于每一次迭代,都是在【当前点的梯度方向】这个一维空间进行一次最优点的搜索;

这个一维最优搜索的问题是关于步长k的,我们需要计算选择怎样的k,才能使得沿着这一梯度方向行走可以找到一个局部最优值。

重复上述过程,直到逼近全局最优点x*

2. 算法框架与推导
在这里插入图片描述
3. 评价
①可以有效减少走的步数(迭代的次数
②但是每一轮迭代中所需的计算量和开销会变大

4. 示例
在这里插入图片描述

最优梯度法相邻两个点的搜素方向一定是正交的

我们可以用上面的例题对于这一结论进行验证:
▽f(x0) = [4,8]T;▽f(x1) = [16/9,-8/9]T,可以得到<▽f(x0),▽f(x1)> = 0。

5. 收敛性讨论

①每一步都使用最优步长,则该算法是线性收敛的:
在这里插入图片描述
②因为每一步都只采用了当前点的梯度方向,所以它只能保证收敛到局部极值点;若函数有多个极值点,最终的收敛结果取决于初始点的情况。

③迭代次数(收敛速度)也与初始点的选择有关

④因为梯度算法无法精确地取到最终的最优点,所以在计算机编程中我们常使用以下的循环终止准则
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kodoshinichi/article/details/110039237
今日推荐