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

来源:互联网 发布:米折是淘宝网的吗 编辑:程序博客网 时间:2024/06/10 11:47

当优化函数的维度n非常大或者f(x)非常复杂的时候,精确线性搜索的计算量是非常大的,并且在离最优解尚远的时候,并没有做精确线性搜索的必要。这使得我们不得不考虑非精确线性搜索。


非精确线性搜索:

如果我们不适用精确线性搜索的话,我们要如何选择步长呢?取步长alpha使得下式成立是否可以呢?

f(x_k+alpha_k*d_k)<f(x_k);

有例子告诉我们,这个准则未必行得通。

优化问题 min  f(x)=x^2

初始迭代点x_1=2;

方法1:alpha_k=2+2(k+1)/(K^2+k) 则x_k=(-1)^(k+1)(1+1/k)

方法2:alpha_k=1/(k(k+1)) 则x_k=1+1/k

可以看到两种方法选取的alpha均能使得上述准则成立,但是,两者均不能收敛到最优解。

造成不收敛的原因分别在于,步长选取的过大或者过小;

由此可以看出,我们需要寻求更加细致的准则来寻找非精确线性搜索的步长以至于它们不至于太大或者太小;


Armijo准则:

选取alpha_k使得:

f(x_k+alpha*d_k)<=f(x_k)+p*transpose(g_k)*d_k*alpha其中0<p<1;

一般来说,只要下降方向d_k的选取没有问题,transpose(g_k)*d_k<0是恒成立的,所以只要alpha选取的不是太大,都可以保证上式的成立:




关于如何使得步长如何不取的太小,又有许多准则,它们与上述准则一起构成了不同的准则;


Goldstein准则;

f(x_k+alpha*d_k)<=f(x_k)+p*transpose(g_k)*d_k*alpha其中0<p<1/2;

f(x_k+alpha*d_k)>=f(x_k)+(1-p)*transpose(g_k)*d_k*alpha



Wolfe准则:

f(x_k+alpha*d_k)<=f(x_k)+p*transpose(g_k)*d_k*alpha其中0<q<p<1;

Transpose(g(x_k+alpha*d_k))*d_k>=q*transpose(g_k)*d_k;


Wolfe准则无法保证在q取很小或者接近0的时候,非精确线性搜索的解接近精确线性搜索的结果,于是有了强Wolfe准则来保证这一点;


强Wolfe准则:

f(x_k+alpha*d_k)<=f(x_k)+p*transpose(g_k)*d_k*alpha其中0<q<p<1;

abs(Transpose(g(x_k+alpha*d_k))*d_k)<=-q*transpose(g_k)*d_k;


由于强Wolfe准则控制了斜率的绝对值,因此当q取的越小,非精确线性搜索的结果可以充分接近精确线性搜索的结果。


定理:(非精确线性搜索的解的存在性)

设f(x_k+alpha*d_k)在alpha>0时有下界,且transpose(g_k)*d_k<0,则必存在alpha_k使得x_(k+1)满足Wolfe(强Wolfe)或者Goldstein准则。