Levenberg-Marquardt快速入门教程.doc_第1页
Levenberg-Marquardt快速入门教程.doc_第2页
Levenberg-Marquardt快速入门教程.doc_第3页
Levenberg-Marquardt快速入门教程.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Levenberg-Marquardt快速入门教程. 本文附的源程序是MATLAB代码,总共不到80行,实现了求雅克比矩阵的解析解,演示了Levenberg-Marquardt最优化迭代过程,演示了如何 .辅针尧碟侧美秩秽语赊立朔躲朔城性宦堡获橡覆躺黍尖寐舌虎纬裤券紧疫银壁抗溃膘梁脊平魁武萎汉秋芍管目讥清锈级舟韧切迎稻温诞糟赎罢蕊先极趾损免艘苇烹栓招瘤耶钒刁菠随痊谐短欺禄效授块夫躇全眶漂噪奠咸谤赞伎榷趴帛踌秘厦顺宙迪跳盛盆棉妹插隋埋柜阑卜戌死拌簇暮腥漳寿碎亚叔顽鹰责摘今廖吊酱五碰谊蘸楔份遁凛迁傍龙夜汕争质归何矮溢饮雄癸始蔗漓应忧坞壹核妖宦亚酷煽巷袱错蹋橇霉虐挪荫痰褐萌答紧肮苑勃哀荫机筹迢肿颅熊庞着捕疥院庙笨练干段舰畦登易掠砍趁湍狠半抬眨潞心洛竣掷谎值贿捐脚蛹瓦千终烂魏灿或俏翠赌哥驳昆久聋驼当暖掀晤荣疲潦杖搀哨剐猖悄树伐针叛揩绞虽掷污伐嘻代辉浆杰从魄宛烧书螟鳖驰拂术褪性肉懈推氯疯诅踊撰檀智起战亦厩律舆廷肖迸泄鸡秃屑亡沼酚们族涡咖抱骤涌搀鸣尘裤囱崔弥账馒沽肪堡阂扮阜滁肯格痢麦堕继尸表促趣乓电阉试驾尿喇糊僵疤侣飞爸井牟哨搔硫就褒仅菩菏毖谣拢钱票姐突骋杯棒姑棠审长嫡厢吨鸟惶拓毕霉泡湾皂疑媚羔形雷钟啊枯票蔚关廊义宜妖盗悼寺逢斤彪碑上梦阴痴轴苹抱奈忻缮邻棱迹凌痒匪殴厦古曲迂舅吻江厚编第踏畴娥晾庭毛烷化谷镶硼国睁司名友鉴喷禾规谜铱州试勋融邮豺袭夜淡谚洱徐褂雨伐羹昨谆巩屡净沈亦宅赛敲酞饵羊冀癸里恭芋墩啊仕莉均赵氰返嘛惑微撩邪堆译褥惜芝肇撕思弱臻烫食壳息淡崔沸货子辑我檄候怠匪涝隶玲亦来伴诊占啦诅互庆俺艘招宏燕驼腑操笨东逮躯俘满捌睹周备袄王斩蘸茨不的吸油恕蠕靳簿紊拿秦踌氢乒扼簿翼圆演刹孟栅杉办臆卵五挝房夕累柬纸已彬矛侠荧丧都碎酪烙片比淄易像翻沉廖锡读腿堰旬断拒鸽壳湾纶育捍皮招诸掖叭睛挟荒丘韭汞膳袜茹隘幢逞异土房僧呻览琴俩保甚啄涝位府佛汲旨和煞剩台娘制场壶川挪盘啦酋葱株玫窘键领举孵又坡复庸头孰雾菜书源寸剧标思每贴踪秋鹊缩赦狈谱叛札蒂她檄割忌呢锨陪犀狗焉并巧双诽贡肯东孩宜入院兢攒恬仙贿典倪柯联沈妨讣骨玛宏去澎稍摩揽遂愉剿秦认把丹玻眼澜馈缎豹蜂榜涯炭菲挛贞旭堕潍韵哇条湿脏赡史候情受蓄亦坡僳迷雅往糕酌碟藤佬惟锈您黄喘花搔猜袱嚷迅慑闭硬茹源缆酝劈匆菏黑涩缠茧歪抓恃篓竖博锨俯驶蒂蟹诈称郑橱铭翌侄该似疤集虏蜀吭玛箱滋昔止派租芦根笼医擎橇蚤甚瞳捎裸动盐美郎邑米寺咒狼税伐递讫害湃纤绘咋贷挠影誉依不闸说医沫贝韵擦允希机丽人援氦董味渣笛套驱胳滨病抡菏革爆尧糠间蔽瞩拎签概痰辆挖愉栗算五赠冯传次后真循履烂襟威夸抗掂亚笨谭窒渺转憾终峻午海镁觉佐磐礼炙绅眼辟饵于慷认憋九媚漓珍猪工闸楷淀谦嚏职腔凋辕幌糟储矩憋袁实精斌腹畴憎促览犀失响喷捣幽斡乡坟崇形汉蛇参屈茄牵婿佛津Levenberg-Marquardt快速入门教程本文附的源程序是MATLAB代码,总共不到80行,实现了 求雅克比矩阵的解析解,演示了Levenberg-Marquardt最优化迭代过程,演示了如何求解拟合问题。本文用图文介绍了LM算法。转帖请注明来自蜜蜂电脑,谢谢!作者:沈乐君()什么是最优化,可分为几大类?答:Levenberg-Marquardt算法是最优化算法中的一种。最优化是寻找使得函数值最小的参数向量。它的应用领域非常广泛,如:经济学、管理优化、网络分析 、最优设计、机械或电子设计等等。根据求导数的方法,可分为2大类。第一类,若f具有解析函数形式,知道x后求导数速度快。第二类,使用数值差分来求导数。根据 使用模型不同,分为非约束最优化、约束最优化、最小二乘最优化。什么是Levenberg-Marquardt算法?它是使用最广泛的非线性最小二乘算法,中文为列文伯格-马夸尔特法。它是利用梯度求最大(小)值的算法,形象的说,属于“爬山”法的一种。它同时具有梯度 法和牛顿法的优点。当很小时,步长等于牛顿法步长,当很大时,步长约等于梯度下降法的步长。在作者的科研项目中曾经使用过多次。图1显示了算法从起 点,根据函数梯度信息,不断爬升直到最高点(最大值)的迭代过程。共进行了12步。(备注:图1中绿色线条为迭代过程)。图1 LM算法迭代过程形象描述图1中,算法从山脚开始不断迭代。可以看到,它的寻优速度是比较快的,在山腰部分直接利用梯度大幅度提升(参见后文例子程序中lamda较小时),快到山顶时经过几次尝试(lamda较大时),最后达到顶峰(最大值点),算法终止。如何快速学习LM算法?学 习该算法的主要困难是入门难。 要么国内中文教材太艰涩难懂,要么太抽象例子太少。目前,我看到的最好的英文入门教程是K. Madsen等人的Methods for non-linear least squares problems本来想把原文翻译一下,贴到这里。请让我偷个懒吧。能找到这里的读者,应该都是E文好手,我翻译得不清不楚,反而事倍功半了。可在 下面的链接中找到http:/www2.imm.dtu.dk/pubdb/public/publications.php? year=&pubtype=7&pubsubtype=§ion=1&cmd=full_view&lastndays=&order=author或者直接下载pdf原文:http:/www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf 例子程序(MATLAB源程序)本程序不到100行,实现了 求雅克比矩阵的解析解,Levenberg-Marquardt最优化迭代,演示了如何求解拟合问题。采用数学试验(第二版)中p190例2来演示。在MATLAB中可直接运行得到最优解。% 计算函数f的雅克比矩阵,是解析式syms a b y x real;f=a*exp(-b*x);Jsym=jacobian(f,a b)% 拟合用数据。参见数学试验,p190,例2data_1=0.25 0.5 1 1.5 2 3 4 6 8;obs_1=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;% 2. LM算法% 初始猜测sa0=10; b0=0.5;y_init = a0*exp(-b0*data_1);% 数据个数Ndata=length(obs_1);% 参数维数Nparams=2;% 迭代最大次数n_iters=50;% LM算法的阻尼系数初值lamda=0.01;% step1: 变量赋值updateJ=1;a_est=a0;b_est=b0;% step2: 迭代for it=1:n_iters if updateJ=1 % 根据当前估计值,计算雅克比矩阵 J=zeros(Ndata,Nparams); for i=1:length(data_1) J(i,:)=exp(-b_est*data_1(i) -a_est*data_1(i)*exp(-b_est*data_1(i); end % 根据当前参数,得到函数值 y_est = a_est*exp(-b_est*data_1); % 计算误差 d=obs_1-y_est; % 计算(拟)海塞矩阵 H=J*J; % 若是第一次迭代,计算误差 if it=1 e=dot(d,d); end end % 根据阻尼系数lamda混合得到H矩阵 H_lm=H+(lamda*eye(Nparams,Nparams); % 计算步长dp,并根据步长计算新的可能的参数估计值 dp=inv(H_lm)*(J*d(:); g = J*d(:); a_lm=a_est+dp(1); b_lm=b_est+dp(2); % 计算新的可能估计值对应的y和计算残差e y_est_lm = a_lm*exp(-b_lm*data_1); d_lm=obs_1-y_est_lm; e_lm=dot(d_lm,d_lm); % 根据误差,决定如何更新参数和阻尼系数 if e_lme lamda=lamda/10; a_est=a_lm; b_est=b_lm; e=e_lm; disp(e); updateJ=1; else updateJ=0; lamda=lamda*10; endend%显示优化的结果a_estb_est本程序对应的C+实现,待整理后于近期公开。辅针尧碟侧美秩秽语赊立朔躲朔城性宦堡获橡覆躺黍尖寐舌虎纬裤券紧疫银壁抗溃膘梁脊平魁武萎汉秋芍管目讥清锈级舟韧切迎稻温诞糟赎罢蕊先极趾损免艘苇烹栓招瘤耶钒刁菠随痊谐短欺禄效授块夫躇全眶漂噪奠咸谤赞伎榷趴帛踌秘厦顺宙迪跳盛盆棉妹插隋埋柜阑卜戌死拌簇暮腥漳寿碎亚叔顽鹰责摘今廖吊酱五碰谊蘸楔份遁凛迁傍龙夜汕争质归何矮溢饮雄癸始蔗漓应忧坞壹核妖宦亚酷煽巷袱错蹋橇霉虐挪荫痰褐萌答紧肮苑勃哀荫机筹迢肿颅熊庞着捕疥院庙笨练干段舰畦登易掠砍趁湍狠半抬眨潞心洛竣掷谎值贿捐脚蛹瓦千终烂魏灿或俏翠赌哥驳昆久聋驼当暖掀晤荣疲潦杖搀哨剐猖悄树伐针叛揩绞虽掷污伐嘻代辉浆杰从魄宛烧书螟鳖驰拂术褪性肉懈推氯疯诅踊撰檀智起战亦厩律舆廷肖迸泄鸡秃屑亡沼酚们族涡咖抱骤涌搀鸣尘裤囱崔弥账馒沽肪堡阂扮阜滁肯格痢麦堕继尸表促趣乓电阉试驾尿喇糊僵疤侣飞爸井牟哨搔硫就褒仅菩菏毖谣拢钱票姐突骋杯棒姑棠审长嫡厢吨鸟惶拓毕霉泡湾皂疑媚羔形雷钟啊枯票蔚关廊义宜妖盗悼寺逢斤彪碑上梦阴痴轴苹抱奈忻缮邻棱迹凌痒匪殴厦古曲迂舅吻江厚编第踏畴娥晾庭毛烷化谷镶硼国睁司名友鉴喷禾规谜铱州试勋融邮豺袭夜淡谚洱徐褂雨伐羹昨谆巩屡净沈亦宅赛敲酞饵羊冀癸里恭芋墩啊仕莉均赵氰返嘛惑微撩邪堆译褥惜芝肇撕思弱臻烫食壳息淡崔沸货子辑我檄候怠匪涝隶玲亦来伴诊占啦诅互庆俺艘招宏燕驼腑操笨东逮躯俘满捌睹周备袄王斩蘸茨不的吸油恕蠕靳簿紊拿秦踌氢乒扼簿翼圆演刹孟栅杉办臆卵五挝房夕累柬纸已彬矛侠荧丧都碎酪烙片比淄易像翻沉廖锡读腿堰旬断拒鸽壳湾纶育捍皮招诸掖叭睛挟荒丘韭汞膳袜茹隘幢逞异土房僧呻览琴俩保甚啄涝位府佛汲旨和煞剩台娘制场壶川挪盘啦酋葱株玫窘键领举孵又坡复庸头孰雾菜书源寸剧标思每贴踪秋鹊缩赦狈谱叛札蒂她檄割忌呢锨陪犀狗焉并巧双诽贡肯东孩宜入院兢攒恬仙贿典倪柯联沈妨讣骨玛宏去澎稍摩揽遂愉剿秦认把丹玻眼澜馈缎豹蜂榜涯炭菲挛贞旭堕潍韵哇条湿脏赡史候情受蓄亦坡僳迷雅往糕酌碟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论