深度理解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,此为目标函数的最优解。
深度理解Powell优化算法相关推荐
- 深度学习的优化算法——梯度下降和随机梯度下降
深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...
- 深度学习(五)优化算法--提高神经网络的训练速度和精度
转自:https://blog.csdn.net/red_stone1/article/details/78348753 上节课我们主要介绍了如何建立一个实用的深度学习神经网络.包括Train/Dev ...
- 深度学习常见优化算法,图解AdaGrad、RMSProp,Adam
1. AdaGrad AdaGrad算法是梯度下降法的改进算法,其优点是可以自适应学习率.该优化算法在较为平缓处学习速率大,有比较高的学习效率,在陡峭处学习率小,在一定程度上可以避免越过极小值点.在S ...
- 支持向量机(四)——深入理解SMO优化算法
本文结合了<统计学习方法>,吴恩达中文笔记,以及一些博客文章https://www.cnblogs.com/pinard/p/6111471.html,http://www.cnblogs ...
- 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨永远在你身后@知乎 来源丨https://zhuanl ...
- 深度学习经典优化算法-公式汇总
-----整理自DeepLearning chapter8,主要是方便做算法的对比. 1.基础算法 1.1 随机梯度下降(SGD,Stochastic Gradient Descent) 随机梯度下降 ...
- 「深度学习之优化算法」(六)人工蜂群算法
1. 人工蜂群算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 工蜂群算法(Artificial Bee Colony Algorithm,ABC)是一种模仿蜜蜂采蜜机理而产生的群智能优化算 ...
- 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降
一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...
- 【深度学习】优化算法-Ftrl
脑图 代码实现 '''DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEVersion 2, December 2004Copyright (C) 2004 Sam ...
- 重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
翻译 | AI科技大本营(微信ID:rgznai100) 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法.几乎当前每一个先进的(state-of-the-art ...
最新文章
- java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
- 《玩转git三剑客》笔记
- centos7花里胡哨之终端美化
- 查找练习 hash——出现过的数字
- android viewpager 间隔,viewpager 系统兼容 clipChildren 页卡间距
- JavaWeb【Velocity】
- mycat err:java.sql.SQLNonTransientException: find no Route:select日志报错
- 圣思园Spring精髓-Spring的底层设计思想
- Tryhackme-Windows Exploitation Basics
- golang的ping检测网络实现
- ubuntu 12.04下安装adobe flash
- java理论_java入门——基础理论
- 随机过程(2)__马尔可夫链的主要性质__查普曼-科莫高洛夫方程
- 手把手教你写批处理-批处理的介绍
- java.lang.UnsupportedClassVersionError: org/apache/activemq/spring/ActiveMQConnectionFactory : Unsup
- 80x86 微处理器
- AndroidStudio SSL peer shut down incorrectly 问题
- 基于树莓派的智能家居
- BUU-Crypto-世上无难事
- MTK平台的LCM驱动移植