<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Levenberg-Marquardt算法 &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/levenberg-marquardt%E7%AE%97%E6%B3%95/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Mon, 27 Apr 2020 17:31:40 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创]信赖域(Trust Region)算法是怎么一回事</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%bf%a1%e8%b5%96%e5%9f%9ftrust-region%e7%ae%97%e6%b3%95%e6%98%af%e6%80%8e%e4%b9%88%e4%b8%80%e5%9b%9e%e4%ba%8b/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%bf%a1%e8%b5%96%e5%9f%9ftrust-region%e7%ae%97%e6%b3%95%e6%98%af%e6%80%8e%e4%b9%88%e4%b8%80%e5%9b%9e%e4%ba%8b/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Mon, 28 Oct 2013 15:09:32 +0000</pubDate>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[Levenberg-Marquardt算法]]></category>
		<category><![CDATA[LM算法]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[trust region]]></category>
		<category><![CDATA[信赖域算法]]></category>
		<category><![CDATA[最优化]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7488</guid>

					<description><![CDATA[<p>
如果你关心<a href="http://www.codelast.com/?p=7364" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">最优化</span></a>（Optimization），你一定听说过一类叫作&#8220;信赖域（Trust Region）&#8221;的算法。在本文中，我将讲述一下信赖域算法与一维搜索的区别、联系，以及信赖域算法的数学思想，实现过程。<br />
<span id="more-7488"></span><br />
<span style="background-color:#00ff00;">【1】</span>信赖域算法与一维搜索算法的区别、联系<br />
最优化的目标是找到极小值点，在这个过程中，我们需要从一个初始点开始，先确定一个搜索方向 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8277e0910d750195b448797616e091ad.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="d" /></span><script type='math/tex'>d</script> ，在这个方向上作一维搜索（line search），找到此方向上的可接受点（例如，按<a href="http://www.codelast.com/?p=7320" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">两个准则</span></a>的判定）之后，通过一定的策略调整搜索方向，然后继续在新的方向上进行一维搜索，依此类推，直到我们认为目标函数已经收敛到了极小值点。<br />
这种通过不断调整搜索方向，再在搜索方向上进行一维搜索的技术被很多很多算法采用，也取得了很实际的工程意义，但是，我们非要这样做不可吗？有没有另外一种途径，可以不通过&#8220;调整搜索方向&#8594;进行一维搜索&#8221;的步骤，也能求得极小值点？当然有，这就是信赖域算法干的好事。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
为了说明这两种途径所实现的算法的区别和联系，请允许我做一个可能不太恰当，但是比较形象的比喻：</p>
<div style="text-align: center;">
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/optimization_trust_region_1.png" style="width: 433px; height: 256px;" /></div>
<p>上图表述的是：如果把求最优解的过程比喻为&#8220;造一个零件&#8221;的过程的话，那么，使用一维搜索的那些算法和信赖域算法就像是两种不同的工艺，它们分别使用不同的技术（一维搜索&#38;信赖域方法）&#8212;&#8212;即两种不同的材料作为达成最终目标的基础。<br />
作为一个了解最优化理论并不多的人，我从我看到过的书得到的感受就是：相比使用一维搜索的那一类算法，貌似信赖域算法们的应用还不够那么多。当然这仅仅是个人感觉，勿扔砖...<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">【2】</span>信赖域算法的基本思想<br />
信赖域和line search同为最优化算法的基础算法，但是，从&#8220;Trust Region&#8221;这个名字你就可以看出，它是没有line search过程的，它是直接在一个region中&#8220;search&#8221;。<br />
在一维搜索中，从 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_550187f469eda08b9e5b55143f19c4ce.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_k}" /></span><script type='math/tex'>{x_k}</script> 点移动到下一个点的过程，可以描述为： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dfce03f6c63c6112ec0a9e19d3390177.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_k} + {\alpha _k}{d_k}" /></span><script type='math/tex'>{x_k} + {\alpha _k}{d_k}</script> <br />
此处 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1e81ef0013ba9e0d5eedaa9c5f308662.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{\alpha _k}{d_k}" /></span><script type='math/tex'>{\alpha _k}{d_k}</script> 就是在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_66eea6bfeea7fcb327d435f627a2390b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_k}" /></span><script type='math/tex'>{d_k}</script> 方向上的位移，可以记为 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_73194efc87788b133d9278ade98decd5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{s_k}" /></span><script type='math/tex'>{s_k}</script> <br />
而信赖域算法是根据一定的原则，直接确定位移 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_73194efc87788b133d9278ade98decd5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{s_k}" /></span><script type='math/tex'>{s_k}</script> ，同时，与一维搜索不同的是，它并没有先确定搜索方向 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_66eea6bfeea7fcb327d435f627a2390b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_k}" /></span><script type='math/tex'>{d_k}</script> 。如果根据&#8220;某种原则&#8221;确定的位移能使目标函数值充分下降，则扩大信赖域；若不能使目标函数值充分下降，则缩小信赖域。如此迭代下去，直到收敛。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%bf%a1%e8%b5%96%e5%9f%9ftrust-region%e7%ae%97%e6%b3%95%e6%98%af%e6%80%8e%e4%b9%88%e4%b8%80%e5%9b%9e%e4%ba%8b/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
如果你关心<a href="http://www.codelast.com/?p=7364" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">最优化</span></a>（Optimization），你一定听说过一类叫作&ldquo;信赖域（Trust Region）&rdquo;的算法。在本文中，我将讲述一下信赖域算法与一维搜索的区别、联系，以及信赖域算法的数学思想，实现过程。<br />
<span id="more-7488"></span><br />
<span style="background-color:#00ff00;">【1】</span>信赖域算法与一维搜索算法的区别、联系<br />
最优化的目标是找到极小值点，在这个过程中，我们需要从一个初始点开始，先确定一个搜索方向 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8277e0910d750195b448797616e091ad.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="d" /></span><script type='math/tex'>d</script> ，在这个方向上作一维搜索（line search），找到此方向上的可接受点（例如，按<a href="http://www.codelast.com/?p=7320" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">两个准则</span></a>的判定）之后，通过一定的策略调整搜索方向，然后继续在新的方向上进行一维搜索，依此类推，直到我们认为目标函数已经收敛到了极小值点。<br />
这种通过不断调整搜索方向，再在搜索方向上进行一维搜索的技术被很多很多算法采用，也取得了很实际的工程意义，但是，我们非要这样做不可吗？有没有另外一种途径，可以不通过&ldquo;调整搜索方向&rarr;进行一维搜索&rdquo;的步骤，也能求得极小值点？当然有，这就是信赖域算法干的好事。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
为了说明这两种途径所实现的算法的区别和联系，请允许我做一个可能不太恰当，但是比较形象的比喻：</p>
<div style="text-align: center;">
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/optimization_trust_region_1.png" style="width: 433px; height: 256px;" /></div>
<p>上图表述的是：如果把求最优解的过程比喻为&ldquo;造一个零件&rdquo;的过程的话，那么，使用一维搜索的那些算法和信赖域算法就像是两种不同的工艺，它们分别使用不同的技术（一维搜索&amp;信赖域方法）&mdash;&mdash;即两种不同的材料作为达成最终目标的基础。<br />
作为一个了解最优化理论并不多的人，我从我看到过的书得到的感受就是：相比使用一维搜索的那一类算法，貌似信赖域算法们的应用还不够那么多。当然这仅仅是个人感觉，勿扔砖...<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">【2】</span>信赖域算法的基本思想<br />
信赖域和line search同为最优化算法的基础算法，但是，从&ldquo;Trust Region&rdquo;这个名字你就可以看出，它是没有line search过程的，它是直接在一个region中&ldquo;search&rdquo;。<br />
在一维搜索中，从 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_550187f469eda08b9e5b55143f19c4ce.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_k}" /></span><script type='math/tex'>{x_k}</script> 点移动到下一个点的过程，可以描述为： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dfce03f6c63c6112ec0a9e19d3390177.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_k} + {\alpha _k}{d_k}" /></span><script type='math/tex'>{x_k} + {\alpha _k}{d_k}</script> <br />
此处 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1e81ef0013ba9e0d5eedaa9c5f308662.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{\alpha _k}{d_k}" /></span><script type='math/tex'>{\alpha _k}{d_k}</script> 就是在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_66eea6bfeea7fcb327d435f627a2390b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_k}" /></span><script type='math/tex'>{d_k}</script> 方向上的位移，可以记为 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_73194efc87788b133d9278ade98decd5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{s_k}" /></span><script type='math/tex'>{s_k}</script> <br />
而信赖域算法是根据一定的原则，直接确定位移 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_73194efc87788b133d9278ade98decd5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{s_k}" /></span><script type='math/tex'>{s_k}</script> ，同时，与一维搜索不同的是，它并没有先确定搜索方向 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_66eea6bfeea7fcb327d435f627a2390b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_k}" /></span><script type='math/tex'>{d_k}</script> 。如果根据&ldquo;某种原则&rdquo;确定的位移能使目标函数值充分下降，则扩大信赖域；若不能使目标函数值充分下降，则缩小信赖域。如此迭代下去，直到收敛。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
关于这种寻优的方法，我这里又有一个比喻，希望能帮助你理解：</p>
<div>
	要从上海火车站去人民广场，有两种方法：<br />
	<span style="color:#b22222;">①</span>可以先定一个方向，比如先向西走，走着走着发现方向有点不对（人民广场应该是时尚地标啊，怎么越走感觉越郊区了呢），就调整一下方向，变成向东南方向走，诸如此类。</div>
<div>
	<span style="color:#b22222;">②</span>用信赖域算法，就比如，我先划一个圈，然后在这个圈里面找离人民广场可能最接近的点，如果我的圈划得太大了，一下子就划到了莘庄（不熟悉上海的同学可以查一下地图），我一步就走到了上海南站，那还得了，马上给我回来，把圈缩小到两个地铁站的距离之内，然后再在里面找离人民广场最近的点。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="background-color:#00ff00;">【3】</span>信赖域算法的数学模型<br />
	前面说了，根据一定的原则，可以直接确定位移，那么，这个原则是什么呢？<br />
	答：利用二次模型模拟目标函数 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_50bbd36e1fd2333108437a2ca378be62.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="f(x)" /></span><script type='math/tex'>f(x)</script> ，再用二次模型计算出位移 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_03c7c0ace395d80182db07ae2c30f034.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="s" /></span><script type='math/tex'>s</script> 。根据位移 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_03c7c0ace395d80182db07ae2c30f034.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="s" /></span><script type='math/tex'>s</script> 可以确定下一点 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dc1e62cd6239629cba7578cca64d1f4f.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="x + s" /></span><script type='math/tex'>x + s</script> ，从而可以计算出目标函数的下降量（下降是最优化的目标），再根据下降量来决定扩大信赖域或缩小信赖域。<br />
	那么，我该如何判定要扩大还是缩小信赖域呢？为了说明这个问题，必须先描述信赖域算法的数学模型：<br />
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/optimization_trust_region_2.png" style="width: 350px; height: 111px;" /><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	第一个式子就是我们用于模拟目标函数的二次模型，其自变量为 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_03c7c0ace395d80182db07ae2c30f034.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="s" /></span><script type='math/tex'>s</script> ，也就是我们要求的位移。 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1cd5597a080292208723039cfd7bfd41.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{g_k}" /></span><script type='math/tex'>{g_k}</script> 为梯度， <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ac8fda2ed3a75d5af87815e87a3ebc7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{G_k}" /></span><script type='math/tex'>{G_k}</script> 为Hesse矩阵，袁亚湘的书上说，如果Hesse矩阵不好计算，可以利用&ldquo;有限差分&rdquo;来近似 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ac8fda2ed3a75d5af87815e87a3ebc7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{G_k}" /></span><script type='math/tex'>{G_k}</script> （不好意思我不懂），或者用<a href="http://www.codelast.com/?p=2780" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">拟牛顿方法</span></a>来构造Hesse矩阵的近似矩阵。<br />
	第二个式子中的 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_7897c8db80031ff84df5a87ff3761308.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{h_k}" /></span><script type='math/tex'>{h_k}</script> 是第 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ce4b16b22b58894aa86c421e8759df3.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="k" /></span><script type='math/tex'>k</script> 次迭代的信赖域上界（或称为信赖域半径），因此第二个式子表示的就是位移要在信赖域上界范围内。此外，第二个式子中的范数是没有指定是什么范数的，例如，是2-范数还是&infin;-范数之类的（在实际中都有算法用这些范数）。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	现在又回到了上面的问题：我该如何判定要扩大还是缩小信赖域呢？通过衡量二次模型与目标函数的近似程度，可以作出判定：<br />
	第 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ce4b16b22b58894aa86c421e8759df3.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="k" /></span><script type='math/tex'>k</script> 次迭代的实际下降量为： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_cd697df2af53f8334f2b9ea8bb728cd3.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\Delta {f_k} = {f_k} - f({x_k} + {s_k})" /></span><script type='math/tex'>\Delta {f_k} = {f_k} - f({x_k} + {s_k})</script> <br />
	第 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ce4b16b22b58894aa86c421e8759df3.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="k" /></span><script type='math/tex'>k</script> 次迭代的预测下降量为： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_b4ffbd104433208458c9e50070023c1c.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\Delta {m_k} = {f_k} - m({s_k})" /></span><script type='math/tex'>\Delta {m_k} = {f_k} - m({s_k})</script> <br />
	定义比值： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_e9259fc5cd0adbf969419b99c592ab80.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} = \frac{{\Delta {f_k}}}{{\Delta {m_k}}}" /></span><script type='math/tex'>{r_k} = \frac{{\Delta {f_k}}}{{\Delta {m_k}}}</script> <br />
	这个比值可以用于衡量二次模型与目标函数的近似程度，显然 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_4b43b0aee35624cd95b910189b3dc231.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="r" /></span><script type='math/tex'>r</script> 值越接近1越好。</p>
<p>	由此，我们就可以给出一个简单的信赖域算法了。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="background-color:#00ff00;">【4】</span>信赖域算法的步骤<br />
	一个考虑周全的信赖域算法可能非常麻烦，为了说明其步骤，这里只说明基本的迭代步骤：</div>
<ul>
<li>
		从初始点 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_892581f6aefecae90be73076e1aeee5c.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_0}" /></span><script type='math/tex'>{x_0}</script> ，初始信赖域半径 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dd8c818172ac708f9bb6dca661127a81.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{h_0} = \left\| {{g_0}} \right\|" /></span><script type='math/tex'>{h_0} = \left\| {{g_0}} \right\|</script> 开始迭代</li>
<li>
		到第 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ce4b16b22b58894aa86c421e8759df3.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="k" /></span><script type='math/tex'>k</script> 步时，计算 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1cd5597a080292208723039cfd7bfd41.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{g_k}" /></span><script type='math/tex'>{g_k}</script> 和 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8ac8fda2ed3a75d5af87815e87a3ebc7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{G_k}" /></span><script type='math/tex'>{G_k}</script> </li>
<li>
		解信赖域模型，求出位移 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_73194efc87788b133d9278ade98decd5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{s_k}" /></span><script type='math/tex'>{s_k}</script> ，计算 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_3b0e65747eafbb19ab7bc40d35bce04c.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k}" /></span><script type='math/tex'>{r_k}</script> </li>
<li>
		若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_c4545c6fd3f587a190de62f5726c19e7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} \le 0.25" /></span><script type='math/tex'>{r_k} \le 0.25</script> ，说明步子迈得太大了，应缩小信赖域半径，令 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_3122146e97379c67d68fbc1fd4767fac.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{h_{k + 1}} = \frac{{\left\| {{s_k}} \right\|}}{4}" /></span><script type='math/tex'>{h_{k + 1}} = \frac{{\left\| {{s_k}} \right\|}}{4}</script> </li>
<li>
		若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_e60e3f12948c020dd8caa32bb9465855.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} \ge 0.75" /></span><script type='math/tex'>{r_k} \ge 0.75</script> 且 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_6a119a8b314804d0f5525b0565bb5905.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\left\| {{s_k}} \right\| = {h_k}" /></span><script type='math/tex'>\left\| {{s_k}} \right\| = {h_k}</script> ，说明这一步已经迈到了信赖域半径的边缘，并且步子有点小，可以尝试扩大信赖域半径，令 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_98a4587baebd5120b017bdeae7f692d1.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{h_{k + 1}} = 2{h_k}" /></span><script type='math/tex'>{h_{k + 1}} = 2{h_k}</script> </li>
<li>
		若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_63c50442db03e5c67898fd58fbf482b0.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="0.25 < {r_k} < 0.75" /></span><script type='math/tex'>0.25 < {r_k} < 0.75</script> ，说明这一步迈出去之后，处于&ldquo;可信赖&rdquo;和&ldquo;不可信赖&rdquo;之间，可以维持当前的信赖域半径，令 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_cb2e219c1b08ff28ea07e76ba0fb2dbc.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{h_{k + 1}} = {h_k}" /></span><script type='math/tex'>{h_{k + 1}} = {h_k}</script> </li>
<li>
		若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_34051880f1cad914a6448bce6089ff97.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} \le 0" /></span><script type='math/tex'>{r_k} \le 0</script> ，说明函数值是向着上升而非下降的趋势变化了（与最优化的目标相反），这说明这一步迈得错得&ldquo;离谱&rdquo;了，这时不应该走到下一点，而应&ldquo;原地踏步&rdquo;，即 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_f27914c23c0fac18442dc37b7fc9f184.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_{k + 1}} = {x_k}" /></span><script type='math/tex'>{x_{k + 1}} = {x_k}</script> ，并且和上面 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_c4545c6fd3f587a190de62f5726c19e7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} \le 0.25" /></span><script type='math/tex'>{r_k} \le 0.25</script> 的情况一样缩小信赖域。反之，在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_51294d6fb4a7529442d015152a384fd4.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{r_k} > 0" /></span><script type='math/tex'>{r_k} > 0</script> 的情况下，都可以走到下一点，即 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1cabf6797197dc77c50fe830118a329b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_{k + 1}} = {x_k} + {s_k}" /></span><script type='math/tex'>{x_{k + 1}} = {x_k} + {s_k}</script> </li>
</ul>
<div>
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="background-color:#00ff00;">【5】</span>最重要的一种信赖域算法：<span style="color:#0000ff;">Levenberg-Marquardt算法</span><br />
	当信赖域模型中的范数 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_aedba953352e84a8a4e7db5979dac82b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\left\| s \right\| \le {h_k}" /></span><script type='math/tex'>\left\| s \right\| \le {h_k}</script> 取2-范数时（即 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_d1fe74ea11c0c4dbdf236f16ad7e4f2d.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{\left\| s \right\|_2} \le {h_k}" /></span><script type='math/tex'>{\left\| s \right\|_2} \le {h_k}</script> ），就得到了Levenberg-Marquardt算法（简称<span style="color:#0000ff;">LM算法</span>）的数学模型：<br />
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/optimization_trust_region_3.png" style="width: 350px; height: 111px;" /><br />
	具体请看<a href="http://www.codelast.com/?p=29" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">这里</span></a>。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="background-color:#00ff00;">【6】</span>信赖域算法的收敛性<br />
	信赖域算法具有整体收敛性。这个证明我没看（太长了），此处略。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
		<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%bf%a1%e8%b5%96%e5%9f%9ftrust-region%e7%ae%97%e6%b3%95%e6%98%af%e6%80%8e%e4%b9%88%e4%b8%80%e5%9b%9e%e4%ba%8b/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
