<?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>conjugate direction method &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/conjugate-direction-method/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Mon, 27 Apr 2020 17:30:26 +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>[原创] 再谈 共轭方向法/Conjugate Direction Method In Optimization</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%86%8d%e8%b0%88-%e5%85%b1%e8%bd%ad%e6%96%b9%e5%90%91%e6%b3%95conjugate-direction-method-in-optimization/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%86%8d%e8%b0%88-%e5%85%b1%e8%bd%ad%e6%96%b9%e5%90%91%e6%b3%95conjugate-direction-method-in-optimization/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Sat, 26 Apr 2014 16:13:12 +0000</pubDate>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[conjugate direction method]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[共轭方向法]]></category>
		<category><![CDATA[最优化]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=8095</guid>

					<description><![CDATA[<p>
共轭方向法是介于<a href="http://www.codelast.com/?p=8006" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">最速下降法</span></a>和<a href="http://www.codelast.com/?p=8052" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">牛顿法</span></a>之间的一种存在&#8212;&#8212;它的收敛速度（二阶收敛）比最速下降法（线性收敛）快，同时它的计算量又比牛顿法要小，因此它的存在是有意义的。<br />
<span id="more-8095"></span><br />
需要注意，共轭方向法可以不使用目标函数的一阶导数信息（当然也可以使用）。所以，如果目标函数的一阶导数不容易求的话，共轭方向法可能就可以派上用场了。<br />
共轭方向法的显著特征就是：两次搜索方向之间是有关联的，这种关联就是&#8220;<span style="color:#0000ff;">共轭</span>&#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 />
<span style="background-color:#00ff00;">『1』</span>向量共轭<br />
先解释一下向量共轭的含义，你就明白共轭方向法的两次搜索方向之间的&#8220;共轭&#8221;是怎么回事了。<br />
设 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dfcf28d0734569a6a693bc8194de62bf.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="G" /></span><script type='math/tex'>G</script> 为对称正定矩阵，若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_37aa6fd50c9cd0ae84da344d3fea07a2.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="d_m^TG{d_n} = 0,\;\;m \ne n" /></span><script type='math/tex'>d_m^TG{d_n} = 0,\;\;m \ne n</script> ，则称 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_fba7cefe2ae092ffa5b6b0427619538b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_m}" /></span><script type='math/tex'>{d_m}</script> 和 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_bbc1f7226df689a8d60b4e3d69a468a6.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_n}" /></span><script type='math/tex'>{d_n}</script> 为&#8220;G共轭&#8221;，共轭方向是&#8220;互不相关&#8221;的方向。</p>
<p><span style="background-color:#00ff00;">『2』</span>特性<br />
当目标函数是二次函数 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_7b3308f8a3b2b34b5121ac917759d1ae.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="f(x) = \frac{1}{2}{x^T}Gx + {b^T}x + c" /></span><script type='math/tex'>f(x) = \frac{1}{2}{x^T}Gx + {b^T}x + c</script> 时，共轭方向法最多经过N步（N为向量维数）迭代，就可以到达极小值点&#8212;&#8212;这种特性叫作<span style="color:#0000ff;">二次收敛性</span>（<span style="color:#a52a2a;">Quadratic Convergence</span>）。<br />
假设沿着一系列的共轭方向做迭代（寻找极小值点），这些共轭方向组成的集合叫作共轭方向集，则沿共轭方向集的每个方向顺序做line search的时候，在每个方向上都不需要做重复搜索&#8212;&#8212;在任何一个方向上的移动，都不会影响到在另一个方向上已经找到的极小值。<br />
上面这段描述是什么意思呢？我们先不讨论这些共轭方向是怎么计算出来的，拿一个在水平面上走路的例子来做比喻：你在水平方向A上走了10米，然后再沿着与水平方向垂直的另一个方向B上又走了10米，那么，你在方向A上走动的时候，在方向B上的坐标是不变的；你在方向B上走动的时候，在方向A上的坐标也是不变的。因此，把方向A和方向B看作两个共轭方向，那么，你在这两个共轭方向中的任何一个方向上移动，都不会影响到另一个方向上已经走到的坐标（把它想像成在这个方向上的极小值）。<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-%e5%86%8d%e8%b0%88-%e5%85%b1%e8%bd%ad%e6%96%b9%e5%90%91%e6%b3%95conjugate-direction-method-in-optimization/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
共轭方向法是介于<a href="http://www.codelast.com/?p=8006" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">最速下降法</span></a>和<a href="http://www.codelast.com/?p=8052" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">牛顿法</span></a>之间的一种存在&mdash;&mdash;它的收敛速度（二阶收敛）比最速下降法（线性收敛）快，同时它的计算量又比牛顿法要小，因此它的存在是有意义的。<br />
<span id="more-8095"></span><br />
需要注意，共轭方向法可以不使用目标函数的一阶导数信息（当然也可以使用）。所以，如果目标函数的一阶导数不容易求的话，共轭方向法可能就可以派上用场了。<br />
共轭方向法的显著特征就是：两次搜索方向之间是有关联的，这种关联就是&ldquo;<span style="color:#0000ff;">共轭</span>&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 />
<span style="background-color:#00ff00;">『1』</span>向量共轭<br />
先解释一下向量共轭的含义，你就明白共轭方向法的两次搜索方向之间的&ldquo;共轭&rdquo;是怎么回事了。<br />
设 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_dfcf28d0734569a6a693bc8194de62bf.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="G" /></span><script type='math/tex'>G</script> 为对称正定矩阵，若 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_37aa6fd50c9cd0ae84da344d3fea07a2.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="d_m^TG{d_n} = 0,\;\;m \ne n" /></span><script type='math/tex'>d_m^TG{d_n} = 0,\;\;m \ne n</script> ，则称 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_fba7cefe2ae092ffa5b6b0427619538b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_m}" /></span><script type='math/tex'>{d_m}</script> 和 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_bbc1f7226df689a8d60b4e3d69a468a6.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_n}" /></span><script type='math/tex'>{d_n}</script> 为&ldquo;G共轭&rdquo;，共轭方向是&ldquo;互不相关&rdquo;的方向。</p>
<p><span style="background-color:#00ff00;">『2』</span>特性<br />
当目标函数是二次函数 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_7b3308f8a3b2b34b5121ac917759d1ae.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="f(x) = \frac{1}{2}{x^T}Gx + {b^T}x + c" /></span><script type='math/tex'>f(x) = \frac{1}{2}{x^T}Gx + {b^T}x + c</script> 时，共轭方向法最多经过N步（N为向量维数）迭代，就可以到达极小值点&mdash;&mdash;这种特性叫作<span style="color:#0000ff;">二次收敛性</span>（<span style="color:#a52a2a;">Quadratic Convergence</span>）。<br />
假设沿着一系列的共轭方向做迭代（寻找极小值点），这些共轭方向组成的集合叫作共轭方向集，则沿共轭方向集的每个方向顺序做line search的时候，在每个方向上都不需要做重复搜索&mdash;&mdash;在任何一个方向上的移动，都不会影响到在另一个方向上已经找到的极小值。<br />
上面这段描述是什么意思呢？我们先不讨论这些共轭方向是怎么计算出来的，拿一个在水平面上走路的例子来做比喻：你在水平方向A上走了10米，然后再沿着与水平方向垂直的另一个方向B上又走了10米，那么，你在方向A上走动的时候，在方向B上的坐标是不变的；你在方向B上走动的时候，在方向A上的坐标也是不变的。因此，把方向A和方向B看作两个共轭方向，那么，你在这两个共轭方向中的任何一个方向上移动，都不会影响到另一个方向上已经走到的坐标（把它想像成在这个方向上的极小值）。<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 style="color:#0000cd;">理论与实践证明，将二次收敛算法用于非二次的目标函数，也有很好的效果</span>。但是，这个时候，就不能保证N步迭代到达极小值点了。大家需要记住的是，很多函数都可以用二次函数很好地近似，这种近似在工程上是很重要。<br />
有人一定会问，哪些函数可以用二次函数很好地近似呢？请原谅我没在书中看到这个总结，你只能自己去挖掘了。</p>
<p><span style="background-color:#00ff00;">『3』</span>理论基础<br />
共轭方向法有一个重要的理论基础，它是一个神奇的定理，有了它，可以推导出很多结论（共轭梯度法的理论推导就依赖于此）。<br />
这里只把结论写上来，证明较长，不是本文关注的所以就不写了：<br />
<span style="color:#ff0000;">在精确line search的情况下，当前迭代点的梯度 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_b2f5ff47436671b6e533d8dc3614845d.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g" /></span><script type='math/tex'>g</script> 与前面所有的搜索方向 <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> 直交：<br />
 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_9af80bf9ecd8ae0b0013c8f5c7c8412a.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g_{i + 1}^T{d_j} = 0,\;\;j = 0,1, \cdots ,i" /></span><script type='math/tex'>g_{i + 1}^T{d_j} = 0,\;\;j = 0,1, \cdots ,i</script> </span><br />
这个结论在很多专业书中，都用了晦涩的描述来显示出教科书般的&ldquo;高端、大气、上档次&rdquo;，我看完之后只有一个感觉：看你们这些牛人写的书压力好大啊！<br />
上面的红字，是我认为可以精简成&ldquo;人话&rdquo;之后的描述，也许它不严谨，也许它有漏洞，但是它大概说的就是这么回事，简单不就是美吗？<br />
下面稍微解释一下定理中的一些概念：</p>
<div>
	<span style="color:#800080;">●</span> 为什么 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8d872f432d24ebbba8149cc6b8513904.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g_{i + 1}^T{d_j} = 0" /></span><script type='math/tex'>g_{i + 1}^T{d_j} = 0</script> 表明两个向量&ldquo;直交&rdquo;？从两个向量的夹角的数学定义：</div>
<div style="text-align: center;">
	<img decoding="async" alt="vector angle" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/vector_angle.png" style="width: 150px; height: 71px;" /></div>
<div>
	我们可知， <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_83ac542f846e9dcc6aea6534e5303b66.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g_{i + 1}^T{d_j}" /></span><script type='math/tex'>g_{i + 1}^T{d_j}</script> 为0时，整个式子为零，从而 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_f898dd39bd002624d891bc76fb86aa9f.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\theta = \frac{\pi }{2}" /></span><script type='math/tex'>\theta = \frac{\pi }{2}</script> ，也就是说两个向量的夹角是 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_e26d35e05970ddca7d236176d1db4d6d.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\frac{\pi }{2}" /></span><script type='math/tex'>\frac{\pi }{2}</script> ，所以它们当然是&ldquo;直交&rdquo;的。</div>
<div>
	在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8d872f432d24ebbba8149cc6b8513904.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g_{i + 1}^T{d_j} = 0" /></span><script type='math/tex'>g_{i + 1}^T{d_j} = 0</script> 这个式子中，当 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_b2f5ff47436671b6e533d8dc3614845d.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g" /></span><script type='math/tex'>g</script> 的下标是 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_14b8b90a04464597e4e220394a9e1416.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{i + 1}" /></span><script type='math/tex'>{i + 1}</script> 时， <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> 的下标可以是 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_9b99ea6244b508fa66267b802a9accf5.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="0,1,\cdots ,i" /></span><script type='math/tex'>0,1,\cdots ,i</script> ，例如， <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_2e6140194834b2ff066e6b6bc5bafd46.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="g_3^T{d_0} = 0,\;\;g_3^T{d_1} = 0,\;\;g_3^T{d_2} = 0" /></span><script type='math/tex'>g_3^T{d_0} = 0,\;\;g_3^T{d_1} = 0,\;\;g_3^T{d_2} = 0</script> ，这表明，当前迭代点的梯度 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_d0720487a8b5bdbea3c08f5a9b9d3fef.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{g_3}" /></span><script type='math/tex'>{g_3}</script> 与前面所有的搜索方向（ <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_808b726a7c1125dc98c805fd9e6951a2.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_0},{d_1},{d_2}" /></span><script type='math/tex'>{d_0},{d_1},{d_2}</script> ）直交。</div>
<p><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 style="color:#b22222;">共轭方向法在迭代过程中的每一个迭代点 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1ab026d0142e45d545714e7a32bc3258.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_{i + 1}}" /></span><script type='math/tex'>{x_{i + 1}}</script> 都是目标函数 <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_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_2a5196aebb115722e7689aa4492f5dc9.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_0},{d_1}, \cdots ,{d_i}" /></span><script type='math/tex'>{d_0},{d_1}, \cdots ,{d_i}</script> 所张成的线性流形</span></p>
<div style="text-align: center;">
	<img decoding="async" alt="conjugate direction basic theory" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/conjugate_direction_basic_theory.png" style="width: 330px; height: 94px;" /></div>
<p><span style="color:#b22222;">中的极小点。</span></p>
<div>
	其实这个晦涩的描述，是<a href="http://www.codelast.com/?p=7838" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">line search基础定理&mdash;&mdash;梯度与方向的点积为零</span></a>&mdash;&mdash;的另一种表述。例如，我们拿一个特例来说：</div>
<div>
	迭代点 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_c1015f14836165504ccbb2a42b2c150b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_2}" /></span><script type='math/tex'>{x_2}</script> （此时 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_5905475576a21ecdafdaab879ff45aff.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="i = 1" /></span><script type='math/tex'>i = 1</script> ）是目标函数 <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_f4aba82441fb27b51c794c3f12805550.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{d_0},{d_1}" /></span><script type='math/tex'>{d_0},{d_1}</script> 所张成的线性流形 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_567c97afc470e145244da0863bc2784a.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\left\{ {\left. x \right|x = {x_0} + {\alpha _0}{d_0} + {\alpha _1}{d_1}} \right\}" /></span><script type='math/tex'>\left\{ {\left. x \right|x = {x_0} + {\alpha _0}{d_0} + {\alpha _1}{d_1}} \right\}</script> 的极小值点。</div>
<div>
	而 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_af41c8e502055b5419bf4c6ea8922fa9.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_0} + {\alpha _0}{d_0} + {\alpha _1}{d_1} = {x_1} + {\alpha _1}{d_1} = {x_2}" /></span><script type='math/tex'>{x_0} + {\alpha _0}{d_0} + {\alpha _1}{d_1} = {x_1} + {\alpha _1}{d_1} = {x_2}</script> ，所以这就说明了 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_802914d74c5ec475b03d8e01114b4af4.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_1}" /></span><script type='math/tex'>{x_1}</script> 是在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_8fec6c6a71936f2a9cd2d11877a06b26.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{{d_0}}" /></span><script type='math/tex'>{{d_0}}</script> 方向上line search得到的极小值点， <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_c1015f14836165504ccbb2a42b2c150b.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_2}" /></span><script type='math/tex'>{x_2}</script> 是在 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_17fbe469667bc25c9dd11284cd8a5b48.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{{d_1}}" /></span><script type='math/tex'>{{d_1}}</script> 方向上line search得到的极小值点。所以由基础定理可知，当前迭代点的梯度与前面所有方向的点积为零。</div>
<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 />
下面来看看，共轭方向法在迭代过程中是怎么做的。<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> 步，那么，下一步怎么走？</p>
<ul>
<li>
		确定一个搜索方向要满足： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_c929b0bed7e38c6e5590cfd702e19c30.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{g_{k + 1}}^T{d_{k + 1}} < 0" /></span><script type='math/tex'>{g_{k + 1}}^T{d_{k + 1}} < 0</script> &mdash;&mdash;这是为了满足目标函数值下降的条件（下降是最优化的目标），并且 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_65e44e11f11bcc2ccfa8dbe199bd54b2.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="d_{k + 1}^TG{d_i} = 0,\;\;i = 1,2, \cdots ,k" /></span><script type='math/tex'>d_{k + 1}^TG{d_i} = 0,\;\;i = 1,2, \cdots ,k</script> &mdash;&mdash;这是为了满足搜索方向之间的&ldquo;共轭&rdquo;条件。</li>
<li>
		检验迭代终止条件，若未终止，则用line search求 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_178488525cdfe1026fada662fa2c21f7.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="f({x_k} + {\alpha _k}{d_k}) = \mathop {\min }\limits_{\alpha \ge 0} f({x_k} + \alpha {d_k})" /></span><script type='math/tex'>f({x_k} + {\alpha _k}{d_k}) = \mathop {\min }\limits_{\alpha \ge 0} f({x_k} + \alpha {d_k})</script> &mdash;&mdash;在每一个搜索方向上，我们都要找到极小值点。</li>
<li>
		 <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_1a5b2864f2c2ad1481a919c59a5a793c.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{x_{k + 1}} = {x_k} + {\alpha _k}{d_k}" /></span><script type='math/tex'>{x_{k + 1}} = {x_k} + {\alpha _k}{d_k}</script> ，继续迭代</li>
</ul>
<p>大家注意到，上面说确定一个搜索方向，要满足&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 />
<span style="background-color:#00ff00;">『5』</span>创造共轭方向<br />
这里的关键是，如何构造出一个方向的集合，其N个方向线性无关、两两共轭？<br />
有一个经典的方案就是<span style="color:#ff0000;">Powell共轭方向集方法</span>。<br />
Powell是谁？</p>
<blockquote>
<p>
		<a href="http://mat.uc.pt/~zhang/powell.html" target="_blank" rel="noopener noreferrer">M.J.D. POWELL</a>，剑桥大学教授（已故），世界著名的最优化专家。他是袁亚湘的导师（袁亚湘，中国科学院数学与系统科学研究院研究员、博士生导师，美国数学学会首届会士（2012年），中国科学院院士）。</p>
</blockquote>
<p>Powell方法是一种不需要求目标函数导数的方法（<span style="color:#0000ff;">zero-order method</span>）。有一篇英文文章里说，如果你只需要知道一种zero-order method如何编程实现的话，那么一定是选Powell方法，可见Powell方法是有其重要地位的。<br />
关于Powell方法，可以参考一下<a href="http://www.codelast.com/?p=388" 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>Powell方法的问题及改进<br />
Powell方法产生的共轭方向集可能会变得线性相关，这会导致最终我们求得的，是N维空间的一个子空间内的极小值，而不是整体的极小值，所以，人们对Powell方法研究出了一些改进方案，例如：</p>
<ul>
<li>
		N轮迭代后，方向集重置为基向量；</li>
<li>
		Brent（就是<a href="http://en.wikipedia.org/wiki/Brent's_method" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Brent&#39;s method</span></a>的作者）提出，N轮迭代后，可以将方向集重置为任意<span style="color:#0000ff;">正交矩阵</span>（见下面的说明）的列向量；</li>
<li>
		放弃目标函数下降最大的方向，用一些好的方向代替N个必须共轭的方向；</li>
<li>
		...</li>
</ul>
<p>PS：什么是<span style="color:#0000ff;">正交矩阵</span>？<br />
一个实数正交矩阵是方块矩阵Q，它的转置矩阵是它的逆矩阵： <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_d289da4bbbfa230c42cbeebe685a9e05.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="{Q^T}Q = Q{Q^T} = E" /></span><script type='math/tex'>{Q^T}Q = Q{Q^T} = E</script> ，其中， <span class='MathJax_Preview'><img src='https://www.codelast.com/wp-content/plugins/latex/cache/tex_3a3ea00cfc35332cedf6e5e9a32e94da.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="E" /></span><script type='math/tex'>E</script> 为单位矩阵：<br />
<img decoding="async" alt="unit matrix" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/unit_matrix.png" style="width: 130px; height: 140px;" /><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>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%86%8d%e8%b0%88-%e5%85%b1%e8%bd%ad%e6%96%b9%e5%90%91%e6%b3%95conjugate-direction-method-in-optimization/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
