[理论篇]深度理解Powell优化算法

1.鲍威尔优化法综述

鲍威尔法又称方向加速法,它由Powell于1964年提出,是利用共轭方向可以加快收敛速度的性质形成的一种搜索方法。该方法不需要对目标函数进行求导,当目标函数的导数不连续的时候也能应用,因此,鲍威尔算法是一种十分有效的直接搜索法。

Powell法可用于求解一般无约束优化问题,对于维数n<20的目标函数求优化问题,此法可获得较满意的结果。

不同于其他的直接法,Powell法有一套完整的理论体系,故其计算效率高于其他直接法。该方法使用一维搜索,而不是跳跃的探测步。同时,Powell法的搜索方向不一定为下降方向。

2.共轭方向的概念与共轭向量的性质

2.1 共轭方向

设A为n阶实对称正定矩阵,若有两个n维向量S1和S2可以满足S1*AS2=0.则称向量S1与S2对矩阵A共轭,共轭向量的方向称为共轭方向。

2.2 共轭向量的性质

设A为n×n阶实对称正定矩阵,Si(i=1,2,3,...,n)是关于A的n个相互共轭的非零向量,对于正定二次函数f(x)的极小化寻优问题,从任何初始点出发,依次沿Si方向经过n次一维搜索即可收敛到极小点X*=X(n)。

沿n元二次正定函数的n个共轭方向进行n次一维搜索就可达到目标函数的极小点。

3.原始Powell法的基本思想及其弊端

3.1 原始Powell法的基本思想及计算步骤

计算步骤:

Step1:选取初始数据。选取初始点x0,n个线性无关的搜索方向d0,d1,...dn-1,给定允许误差Err,令k>0;

Step2:进行基本搜索。令y0=x1,依次沿d0,d1,...,dn-1进行一维搜索。对一切j=1,2,...,n记f(y(j-1)+λ(j-1)d(j-1)) = min f(y(j-1)+λd(j-1)),

y(j) = y(j-1)+λ(j-1)d(j-1);

Step3:进行加速搜索。取加速方向d(n)=y(n)-y(0);若||d(n)||<Err,迭代终止,得到y(n)为问题的近似最优解;否则,点y(n)出发沿d(n)进行一维搜索,求出λ(n),使得f(y(n)+λ(n)d(n))=min f(y(n)+λd(n)).

记:x(k+1) = y(n)+λ(n)d(n),转Step4.

Step4:调整搜索方向。在原来n个方向d(0),d(1),...,d(n-1)中,除去d0增添d(n),构成新的搜索方向,返回Step2.

3.2 Powell算法的迭代格式

原始的Powell法是沿着逐步产生的共轭方向进行一维搜索的。现在以二维二次目标函数为例来说明。

如上图所示,选定初始点X0(1),初始方向S1(1)=e1=[1,0]‘;S2(1)=e2=[0,1]‘;

第一轮循环:

初始点X0(1)---->(e1,e2)---->终点X2(1)---->生成新方向 S(1) = X2(1)-X0(1);

第二轮循环:

初始点X0(2)---->(e2,S(1))---->终点X2(2)---->生成新的方向 S(2) = X2(2)-X0(2);

通过上图我们会发现,点X0(2)、X2(2)是先后两次沿S(1)方向一维搜索到得极小点。由共轭性可以得到:连接X0(2)和X2(2)构成的矢量S(2)与S(1)对H共轭。

从理论上讲,二维二次正定函数经过这组共轭方向的一维搜索,迭代点以达到函数函数的极小值点X*。

将此结构推广至n维二次正定函数,即依次沿n个(S(1),S(2),...,S(n))共轭方向一维搜索就能达到极限值点。

3.3 原始Powell算法的特点

1.原始的Powell算法也是一种共轭方向法,由于它仅仅需要计算目标函数值而不必求导数值。因此Powell算法比普通的共轭方向法(共轭梯度法)更具实用性。

2.原始Powell算法可用于求解一般无约束优化问题。

3.然而,在原始的Powell算法中,必须保持每次迭代中前n搜索方向线性无关,否则将永远得不到问题的最优解。

3.4 Powell法缺陷

当某一循环方向组中的矢量系出现线性相关的情况(退化,病态)时,搜索过程在降维的空间进行,致使计算不能收敛而失败。

为了避免此种情况产生,提出了修正的Powell算法。

4.改进的Powell算法

4.1.算法原理

为了避免鲍威尔法缺陷,Powell提出了相应的修正算法:

和原始的Powell算法的主要区别在于:

1. 在构成第k+1次循环方向组时,不用淘汰前一循环中的第一个方向S1(k)的办法,而是计算函数值,并根据是否满足条件进行计算。

2. 找出前一轮迭代法中函数值下降最多的方向m以及下降量△m,即:

可以证明:若f3<f1;

同时成立。

表明方向Sk(n)与原方向组成线性无关,可以用来替换对象△m所对应的方向Sk(m)。否则仍然用原方向组进行第k+1轮搜索。

4.2 改进Powell算法计算步骤

Step1:选取初始数据。选取初始点x0,n个线性无关的初始搜索方向d0,d1,...,dn-1;给定允许误差Err>0,令k=0;

Step2:进行基本搜索。令y0=x(k),依次沿d0,d1,...,dn-1进行一维搜索。对一切j=1,2,...,n,记f(y(j-1)+λ(j-1)d(j-1)) =                 minf(y(j-1)+λd(j-1)),     y(j) = f(y(j-1)+λ(j-1)d(j-1))
;

Step3:检查是否满足终止条件。取加速度方向d(n)=y(n)-y(0);若||d(n)||<Err,迭代终止,得yn为问题的最优解;否则
    转Step4。

Step4:确定搜索方向,按照上式公式确定m,若验证式子成立,转Step5;否则,转Step6。

Step5:调整搜索方向。从点yn出发沿方向dn进行一维搜索,求出λn,使得f(yn+λn*dn)=min f(yn+λ*dn);令
                               x(k+1)=yn+λn*dn。再令d(j)=d(j+1),j=m,m+1,...,n-1.k=k+1,返回Step2。

Step6:不调整搜索方向,令x(k+1)=yn;k=k+1,返回Step2。

4.3 典型例题

用修正的Powell算法求f(x)=x1*x1+2*x2*x2-4*x1-2*x1*x2的最优解。X0=[1,1]‘;收敛精度Err=0.001。

解:X0(1)=X0=[1,1]‘;f1=f(x0(1))=-3;

第一轮进行循环

沿坐标轴方向向S1=[1,0]方向进行一维搜索:

X1(1) = X0(1)+a(1)*S1(1) = [1,1]‘+a1(1)[1,0]‘=[1+a1(1),1]‘

将X1(1)带入上式,求导可以确定a1(1)=2时,得到极小值。此时,X1(1)=[3,1]; f(X1(1))=-7。

沿坐标轴方向向S2=[0,1]方向进行一维搜索:

X2(1) = X1(1)+a2(1)*S2(1) = [3,1]‘+[0,a2(1)]‘=[3,1+a2(1)]‘。

将X2(1)代入上式,求导可以确定a2(1)=1/2,得到极小值。此时,X2(1)=[3,1.5]; f(X2(1))=-7.5。

检验是否满足终止迭代条件||X2(1)-X0(1)|| = 2.06>Err.

计算各个方向上的函数下降量:

△1=f(X0(1))-f(X1(1))=4;

△2=f(X1(1))-f(X2(1))=0.5;

△m=min{4,0.5}=4;

映射点:

X(1) = 2X2(1)-X0(1)=2*[3,1.5]‘-[1,1]=[5,2];

条件验证:f3=f(X(1))=-7, f3<f1

(f1-2f2+f3)(f1-f2-△m)^2 = 1.25 < △m/2*(f1-f3)^2 =32 满足。

因此,得到新的搜索方向:S(1)=X2(1)-X0(1)=[3,1.5]-[1,1]=[2,1.5]‘;

沿S(1)方向再次做一维搜索:

X3(1)=X2(1)+a3(1)*S(1)=[3,1.5]+a3(1)[2,1.5] = [3+2*a3(1),1.5+1.5a3(1) ];

当a3(1)=0.4时,取得极小值。此时,X3(1)=[19/5,17/10]; f(X3(1)) = -7.9。

以X0(2) = X3(1)作为新的起点,沿(e2,S(1))方向进行一维搜索,开始进入第二个循环:

X2(0)=[19/5,17/10]; f(X2(0))=-7.9;

沿e2=[0,1]方向进行一维搜索:

X1(2) = [19/5,19/10]; f(X1(2))=-7.98

沿S(1)=[2,1.5]方向进行一维搜索:

X2(2) = [99/25,97/50];  f(X2(2)) =-7.996

检验:||X2(2)-X2(0)|| = 0.288>Err

继续进行迭代:△1=0.08;

△2=0.016;

△m=0.08;

映射点:X(2)=2*X2(2)-X0(2)=[103/25,109/50]; f(X(2))=-7.964>f1 条件不满足。

新的方向:S(2)=[99/25,97/50]-[19/5,17/10]=[4/25,12/50];

进行继续迭代时,取X3(0)=X2(2),沿着(e2,S(1))方向一维搜索进行第三轮循环:

X3(1)=[99/25,99/50] ; f1=-7.9992;

X3(2)=[3.9992,1.988]; f2=-7.99984;

检验:||X2(3)-X0(3)||=0.0577 >Err;

X(3)=[4.024,2.036]‘; f3=-7.99856;  f3>f1.

由于S(1)即S(2)为共轭方向,目标函数是二次函数,若沿S(2)方向进行一维搜索得到

X(2)=[4,2],F(X(2))=-8,此为目标函数的最优解。

时间: 2025-01-14 08:15:04

[理论篇]深度理解Powell优化算法的相关文章

深入理解图优化与g2o:图优化篇

前言 本节我们将深入介绍视觉slam中的主流优化方法——图优化(graph-based optimization).下一节中,介绍一下非常流行的图优化库:g2o. 关于g2o,我13年写过一个文档,然而随着自己理解的加深,越发感觉不满意.本着对读者更负责任的精神,本文给大家重新讲一遍图优化和g2o.除了这篇文档,读者还可以找到一篇关于图优化的博客: http://blog.csdn.net/heyijia0327 那篇文章有作者介绍的一个简单案例,而本文则更注重对图优化和g2o的理解与评注. 本

MySql学习(五) —— 数据库优化理论篇(一)

一.数据库管理系统 数据库管理系统(Database Management System, DBMS) 衡量是否是数据库的标准: ACID:是指在数据库管理系统(DBMS)中事务所具有的四个特性: 1) 原子性(Atomicity) 2) 一致性(Consistency) 3)隔离性(Isolation) 4)持久性(Durability) 1.关系型数据库:是建立在关系数据库模型基础上的数据库,借助于关系代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式

吴恩达-深度学习-课程笔记-7: 优化算法( Week 2 )

1 Mini-batch梯度下降 在做梯度下降的时候,不选取训练集的所有样本计算损失函数,而是切分成很多个相等的部分,每个部分称为一个mini-batch,我们对一个mini-batch的数据计算代价,做完梯度下降,再对下一个mini-batch做梯度下降.比如500w个数据,一个mini-batch设为1000的话,我们就做5000次梯度下降(5000个mini-batch,每个mini-batch样本数为1000,总共500w个样本). 对于batch梯度下降(每次计算所有的样本),随着迭代

【机器学习算法应用和学习_2_理论篇】2.2 M_分类_逻辑回归

一.原理阐述 算法类型:监督学习_分类算法 输入:数值型或标称型(标称型需要独热编码) V1.0 用回归方式解决二分类问题,通过引入一个Sigmoid函数将中间y值映射到实际二分类的y值上. 二.算法选择 三.算法过程 1.Sigmoid函数是一个x值域是(-∞,+∞),y值域是(0,1)的单调递增函数: 2.预测y值>0.5为1类,<0.5为0类,y值也可以解释为为1和0类的概率: 3.同样使用“最小二乘”概念,求得最佳方程,得到目标函数: 4.要使得目标函数达到最小,需要采用一种称为“梯度

深度解读最流行的优化算法:梯度下降

深度解读最流行的优化算法:梯度下降 By 机器之心2016年11月21日 15:08 梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法.本文旨在让你对不同的优化梯度下降法的算法有一个直观认识,以帮助你使用这些算法.我们首先会考察梯度下降法的各种变体,然后会简要地总结在训练(神经网络或是机器学习算法)的过程中可能遇到的挑战.(本文的中文版 PDF 下载地址) 目录: 梯度下降的各种变体 批量梯度下降(Batch gradient descent)

深度学习优化算法总结

大致总结一下学到的各个优化算法. 一.梯度下降法 函数的梯度表示了函数值增长速度最快的方向,那么与其相反的方向,就可看作函数减少速度最快的方向. 在深度学习中,当目标设定为求解目标函数的最小值时,只要朝梯度下降的方向前进,就可以不断逼近最优值. 梯度下降主要组成部分: 1.待优化函数f(x) 2.待优化函数的导数g(x) 3.变量x,用于保存优化过程中的参数值 4.变量x点处的梯度值:grad 5.变量step,沿梯度下降方向前进的步长,即学习率 假设优化目标函数为:f(x) = (x-1)^2

深度学习——优化算法

优化算法以加快训练的速度 1. mini-batch 把训练集划分成小点的子集(mini-batch) X{1}表示第一个mini-batch X(1)第1个样本 X[1]第一层的输入 1.1 mini-batch梯度下降方法过程:每次对一个mini-batch进行计算,包括J, w都是针对一个子集的 epoch:一代,表示遍历了整个数据集(而不是一个子集) 1.2 使用mini-batch的代价函数变化:每次迭代处理的是一个mini-batch,而代价函数也是指J{t} 1.3如何选择min-

从单体智能到群体统筹,优化算法推动人工智能新浪潮

(上图为斯坦福大学李国鼎工程讲座教授.杉数科技首席科学顾问叶荫宇) 过去两年出现了人工智能的热潮,特别是以深度学习算法为代表人工智能在中国市场出现了井喷现象.根据麦肯锡统计,2016年全球科技巨头在人工智能上投入了 200亿到300亿美元,VC/PE投融资达60亿到90亿美元.在中国,根据钛媒体TMTbase全球创投数据库的数据统计,目前共收录中国人工智能企业398家.共发生571起投资事件,投资总额高达571亿人民币. 就在AlphaGo先后挑战世界和中国围棋高手后,关于人工智能的热炒更有甚嚣

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了以下这篇微博: 我在看到这篇微博的时候大为触动,由于,如果是rickjin来面试我.我想我会死的非常慘,由于他问的问题我基本都回答不上来.