最优化理论学习笔记_1(精确线性搜索)

来源:互联网 发布:cdr软件怎么购买 编辑:程序博客网 时间:2024/06/08 00:58

由于机器学习领域充斥着各种各样的优化问题,早就想系统的学习优化理论了,借着这学期选择了最优化理论的课程,就认真的学习一下吧!

最优化理论通常研究如下问题,引用wiki的定义:


通俗的理解,就是求解在各种约束下函数的最值问题。


线性搜索

在利用迭代的方法解决无约束优化问题

时,其中第k步迭代的公式是:

而所谓的线性搜索的方法,就是指的是在迭代方向已知的情况下,求解合适的步长的问题。关于的确定精确与否又分为精确线性搜索和非精确线性搜索的方法。


精确线性搜索

顾名思义,精确线性搜索即解决如下的优化问题:

考虑到实际中函数的最小值得求法往往要根据具体情况来定,通常情况下我们用一些算法来解决求极小的问题。

1.黄金分割算法(0.618法):

由于0.618法是基于单峰函数求极值的情况,所以我们在介绍黄金分割算法之前,需要介绍一下单峰函数的概念,并且给出一种算法,能够求出一般的一元函数的定义域上的某个区间,使得该函数在该区间上是单峰的。

单峰函数:


进退法(求解单峰区间):


求得了单峰区间之后,就可以用0.618法求函数的极小点了。具体如下

黄金分割算法

代码实现如下(matlab):

function y= Gold_Ratio(a,b,f,eps)%a,b are end points of a close interval [a,b];%f is a single unimodal funtion in [a,b]%function Gold_Ratio is an algorthim to output the only exremal point of f in [a,b]t=0.5*(sqrt(5)-1);alpha_r=a+t*(b-a);%right setion pointalpha_l=a+(1-t)*(b-a);%left setion pointk=0;while b-a>eps    if f(alpha_l)<f(alpha_r)%if funtion value at left section point is            b=alpha_r;%less than that of the right ,then the extremal point            a=a;%must lie in the interval [a,alpha_r]           alpha_r=alpha_l;           alpha_l=a+(1-t)*(b-a);           k=k+1;    else         b=b;%similar to the situation above        a=alpha_l;        alpha_l=alpha_r;        alpha_r=a+t*(b-a);        k=k+1;    end    fprintf('[a,b]is [%8.5f,%8.5f] after %d rounds iteration \n',a,b,k);endy=0.5*(a+b);end





2.插值方法

(未完)