信赖域方法

  • 格式:docx
  • 大小:105.73 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信赖域方法

信赖域方法在当前搜索点附近具有一个区域,其中关于局部极小化的二次模型

被"信赖"为正确的,并且步骤被选择留在该区域内. 在搜索的过程中,区域大小根据模型和实际函数计算的符合程度被修改.

非常典型地,信赖域采取的是一个满足的椭圆. 是一个对角缩放(通常采用近似

Hessian 的对角),而是信赖域半径,它在每个步骤被更新.

当基于二次模型的步骤本身位于信赖域之内的时候,那么就认为函数值在变小,因而采用这一步骤. 因此,正如线搜索方法中一样,步控制不会干涉算法在二次模型表现良好的极小值附近的收敛效果. 当基于二次模型的步骤位于信赖域之外时,则采用一个只到边界位置的步骤,以使得该步骤成为二次模型在信赖域边界处的近似极小化步骤.

一旦一个步骤被选择,该函数就在新的点被计算,而实际函数值与通过二次模型预测所得到的值互相对照. 真正计算的是实际与预测减少量的比率.

如果接近1,那么该二次模型是一个相当不错的预测器,该区域的大小可以扩大. 另一方面,如果太小,则该区域的大小就要被降低. 当低于某一阈值时,该步骤被拒绝并重新计算.

您可以使用方法选项"AcceptableStepRatio"->控制这一阈值. 通常情况下,是相当小的,以避免走向极小值的步骤也被拒绝. 然而,如果在一个点获取二次模型相当昂贵(例如,计算Hessian 需要花费相对较长的时间),一个较大值的将降低Hessian 计算的次数,但是它可能增加函数计算的次数.

要开始信赖域算法,需要确定一个初始半径. 默认情况下,Mathematica使用基于受比较宽松的相对步长限制的模型(1) 的步骤的大小. 然而,在某些情况下,这可能使您离开您原来感兴趣的区域,所以您可以使用选项指定一个初始半径

. 该选项在它的名字中包含Scaled,因为信赖域半径使用了对角缩放,所以这不是一个绝对的步长.

这里加载一个包含一些功用函数的程序包.

In[1]:=

这里显示在搜索一个与Rosenbrock函数类似的函数的局部极小值的过程中,所采用的步骤和计算,用的是了利用信赖域步控制的牛顿法.

In[2]:

=

Out[2]=

该图示看起来很糟糕,因为搜索在如此大的区域上延伸,以致函数的精细结构不能在这样的尺度上真正看到.

这里显示了对同样函数的步骤和计算,但这里有一个限制了的初始信赖域半径. 这里,搜索更接近初始条件,并且沿着狭谷进行.

In[3]:

=

Out[3]=

我们还可以使用选项对信赖域半径设置一个整体上限,使得对任何步,.

由于在函数计算中数值舍入的问题,信赖域方法也可能在不够光滑的函数上遇到困难. 当函数不足够平滑的时候,信赖域的半径将持续减少. 最终,它将达到一个实际上值为零的点.

这里从Optimization`UnconstrainedProblems`程序包中以一种可以被FindMinimum求解的形式获得Freudenstein-Roth测试问题. (参见"测试问题".)

In[4]:=

Out[4]=

这里使用默认方法对函数寻找一个局部极小值. 在这种情况下的默认方法是(信赖域)Levenberg-Marquardt 方法,因为函数是一个平方和的形式.

In[5]:=

Out[5]=

出现的提示信息表明,相对于搜索点的大小,信赖域的大小实际上已经变为零,所以所采取的步骤将效果甚微. 注:在某些平台上,由于机器运算的微小差异,该信息可能不会显示. 这是因为产生该信息的原因与数值的不确定性有关,这在不同的平台上可能产生不同的变化.

这里在最后找到的点沿着方向画出变差函数图.

In[6]:

=

Out[6]=

沿着一个方向的图使我们相当清楚为什么进一步的改进是不可能的. 在这种情况下

Levenberg-Marquardt 方法陷入困境的部分原因是收敛相对缓慢,因为残差在极小值处非零. 使用牛顿方法,收敛速度更快,完整的二次模型可以更好地估计步长,因此FindMinimum可以对默认容差得到满足更有信心.

In[52]:

=

Out[52]

=

下表总结了对于信赖域步骤控制的选项.

选项名默认值

"AcceptableStepRatio" 1/10000 阈值,使得当实际与预测减少量的比率时,搜索

移动到已计算的步骤

"MaxScaledStepSize" ∞值,使得对于所有步骤,信赖域大小

"StartingScaledStepSize" Automatic 初始信赖域大小

的方法选项.