<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.0" name=GENERATOR></HEAD>
<BODY>
<DIV>/**</DIV>
<DIV>&nbsp;*&nbsp;Advance&nbsp;one&nbsp;Step&nbsp;following&nbsp;the&nbsp;gradient&nbsp;direction</DIV>
<DIV>&nbsp;*/</DIV>
<DIV>&nbsp;&nbsp;typedef&nbsp;Array&lt; double&gt; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParametersType;</DIV>
<DIV>&nbsp;ParametersType&nbsp;m_currentPosition;</DIV>
<DIV>void</DIV>
<DIV>GradientDescentOptimizer</DIV>
<DIV>::AdvanceOneStep(&nbsp;void&nbsp;)</DIV>
<DIV>{&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;itkDebugMacro("AdvanceOneStep");</DIV>
<DIV>.....</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;ScalesType&nbsp;scales&nbsp;=&nbsp;this-&gt; GetScales();</DIV>
<DIV>...</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;DerivativeType&nbsp;transformedGradient(&nbsp;spaceDimension&nbsp;);&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;for(unsigned&nbsp;int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt; 
&nbsp;spaceDimension;&nbsp;j++)</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;{</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;transformedGradient[j]&nbsp;=&nbsp;m_Gradient[j]&nbsp;/&nbsp;scales[j];&nbsp;//<FONT 
style="BACKGROUND-COLOR: #ffff00" 
color=#ff0000>??????????????????????&nbsp;why&nbsp;here&nbsp;takes&nbsp;a&nbsp;(/scales[j])</FONT></DIV>
<DIV><FONT color=#ff0000>&nbsp;<FONT 
color=#000000>&nbsp;&nbsp;&nbsp;}</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;//as&nbsp;in&nbsp;method&nbsp;m_CostFunction-&gt; 
GetValueAndDerivative(this-&gt; GetCurrentPosition(),&nbsp;m_Value, 
m_Gradient&nbsp;)m_Gradient&nbsp;derivative</FONT></DIV>
<DIV><FONT 
color=#ff0000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
// m_Gradient is the derivative of MutualInformation with respect to transform 
parameters,</FONT></DIV>
<DIV><FONT 
color=#ff0000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
//&nbsp;why 
transformedGradient[j]&nbsp;=&nbsp;m_Gradient[j]&nbsp;/&nbsp;scales[j];&nbsp;</FONT></DIV>
<DIV>&nbsp;&nbsp;ParametersType&nbsp;newPosition(&nbsp;spaceDimension&nbsp;);</DIV>
<DIV>&nbsp;&nbsp;for(unsigned&nbsp;int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt; 
&nbsp;spaceDimension;&nbsp;j++)</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;{</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;newPosition[j]&nbsp;=&nbsp;currentPosition[j]&nbsp;+&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction&nbsp;*&nbsp;m_LearningRate&nbsp;*&nbsp;transformedGradient[j];</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;this-&gt; SetCurrentPosition(&nbsp;newPosition&nbsp;);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;this-&gt; InvokeEvent(&nbsp;IterationEvent()&nbsp;);</DIV>
<DIV>&nbsp;</DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÖÂ</DIV>
<DIV>Àñ£¡</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡×¯Ïź£(Xiahai&nbsp;Zhuang)</DIV>
<DIV>¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡arhye@163.com</DIV>
<DIV>¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2005-05-01</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>