跳转到内容

统计/数值方法/优化

来自维基教科书,为开放世界提供开放书籍

在下文中,我们将提供一些关于数值优化算法的笔记。由于存在众多方法,我们将只关注所谓的梯度方法。我们之所以将此类方法作为考虑数值优化算法的自然起点,主要有以下两点原因。一方面,这些方法在该领域确实是主力军,因此它们在实践中的频繁使用证明了它们在这里的覆盖范围。另一方面,这种方法非常直观,因为它在某种程度上从众所周知的最优值性质自然地推导出。我们将特别关注该类方法的三个例子:牛顿方法最速下降法以及可变度量方法,其中包括拟牛顿方法

在开始之前,我们要强调,似乎不存在“唯一”算法,而特定算法的性能总是取决于待解决的特定问题。因此,经验和“试错”在应用工作中非常重要。为了阐明这一点,我们将提供几个应用程序,其中可以以图形方式比较不同算法的性能。此外,最后还提供了一个关于最大似然估计的具体示例。尤其是对于统计学家和计量经济学家来说,最大似然估计可能是在实践中必须依赖数值优化算法的最重要示例。

理论动机

[编辑 | 编辑源代码]

任何数值优化算法都需要解决找到函数的“可观察”性质的问题,以便计算机程序知道何时达到解。由于我们处理的是优化问题,因此两个众所周知的结论似乎是进行这种性质推导的合理起点。

如果 f 可微,并且 是(局部)最小值,那么

即雅可比矩阵 等于零

以及

如果 f 二次可微,并且 是(局部)最小值,那么

即海森矩阵 正半定的。

在下文中,我们将始终用 表示最小值。尽管这两个条件似乎代表了有助于找到最优值 的陈述,但它们给出了 作为函数 的最优值的含义,存在一个小问题。但为了我们的目的,我们需要相反的含义,即我们最终想要得到一个形式为:"如果某个条件 为真,则 是一个最小值" 的陈述。但上面的两个条件显然不足以实现这一点(例如考虑 的情况,其中 ,但 )。因此,我们必须查看 的整个邻域,如以下检测最优值的充分条件中所述


如果 ,则: 是一个局部最小值。

证明:对于 泰勒近似得到: 其中 表示以 为中心的开球,即 对于


与上述两个条件相反,此条件足以检测最优值——考虑两个简单的例子

,其中

以及

,其中 并且

牢记这一小点,我们现在可以转向数值优化程序。

数值解

[编辑 | 编辑源代码]

以下所有算法都将依赖于以下假设

(A1) 集合 紧凑 的。

其中 是算法给定的某个初始值。这个假设的意义在于 *魏尔斯特拉斯定理*,它指出每个紧凑集都包含其 *上确界* 和其 *下确界*。因此,*(A1)* 保证了在 中存在某个解。在这个全局最小值 处,当然有 。因此,考虑到上述讨论,优化问题基本上可以归结为求解方程组

下降方向

[编辑 | 编辑源代码]

这种方法的问题当然很普遍,因为 对于 极大值和鞍点 也是成立的。因此,好的算法应该确保极大值和鞍点都被排除为可能的解。极大值可以通过要求 ,即我们限制自己于一个 序列 ,使得函数值在每一步都减小。问题当然是在这是否总是可能的。幸运的是,这是可能的。其基本见解如下。在构建映射 (即,从 的规则)时,我们有两个自由度,即

  • 方向
  • 步长

因此,我们可以选择我们想要移动的方向以到达 以及这种移动需要多远。所以,如果我们选择 以“正确的方式”,我们可以有效地确保函数值下降。以下将提供此推理的正式表示。


引理:如果 并且 ,那么: 使得

证明:因为 并且 ,因此得出 对于足够小的

下降法的通用过程

[edit | edit source]

满足此条件的方向向量 被称为下降方向。在实践中,此引理允许我们使用以下程序来数值求解优化问题。

1. 定义序列 ,通过 递归地定义。

2. 从点 的局部信息中选择方向

3. 选择一个步长 ,确保算法的收敛

4. 如果 ,其中 是某个选定的最小值容差,则停止迭代。

这个过程已经暗示了 的选择不是独立的,而是相互依赖的。特别要注意,即使该方法是下降方法(即 是根据引理 1选择的),也不能保证收敛到最小值。乍一看,这似乎有点令人费解。如果我们找到一个序列,使得函数值在每一步都下降,人们可能会认为,在某个阶段,即在k趋于无穷大的极限中,我们应该找到解决方案。为什么情况并非如此,可以从借鉴于 W. Alt (2002, p. 76) 的以下例子中看出。

例 1

[edit | edit source]
  • 考虑以下例子,它虽然明显是下降的,但并不收敛。令准则函数由下式给出

,令初始值为 ,考虑一个(常数)方向向量 ,并选择步长为 。因此,序列 的递归定义如下:

注意 ,因此 ,因此该方法显然是下降法。然而,我们发现

这种不收敛的原因要归咎于步长 下降过快。对于较大的 k,步长 会变得非常小,从而导致收敛无法实现。因此,我们必须将步长与下降方向 联系起来。

有效的步长

[编辑 | 编辑源代码]

这种联系的显而易见的思路是要求实际下降与一阶近似成正比,即选择 使得存在一个常数 ,满足

请注意,我们仍然只关注下降方向,因此 ,如上文引理 1 中所述。因此, 的紧致性意味着 LHS 的 收敛,并且由 (4) 得出

最后,我们希望选择一个序列 使得 ,因为这正是我们想要解决的必要的一阶条件。在什么条件下,(5) 实际上意味着 ?首先,步长 不能太快地趋于零。这正是我们在上面示例中遇到的情况。因此,要求步长从下方有界似乎是合理的,即:

对于某个常数 。将 (6) 代入 (5) 最终得到

这里,紧致性 保证了左侧的 收敛,因此

满足 (4) 和 (6) 的步长被称为 *有效步长*,并用 表示。条件 (6) 的重要性将在以下示例 1 的续篇中说明。

示例 1 (续)

[编辑 | 编辑源代码]
  • 请注意,正是 (6) 的失效导致了示例 1 未收敛。将示例中的步长代入 (6) 得到

因此,对于所有k没有常数 满足此不等式,如 (6) 所要求的那样。因此,步长没有从下界约束,并且下降得太快。为了真正认识 (6) 的重要性,让我们稍微修改一下示例,并假设 。然后我们发现

即,收敛确实发生了。此外,认识到此示例实际上满足条件 (6),因为

选择方向d

[编辑 | 编辑源代码]

我们已经论证过, 的选择是相互交织的。因此,选择“正确”的 总是取决于相应的步长 。那么在这个语境中,“正确”意味着什么?在上面,我们在方程 (8) 中展示了,选择一个有效步长意味着

因此,“正确”的方向向量将保证 (8') 意味着

因为 (9) 是所选序列 收敛的条件。因此,让我们探索哪些方向可以选择以产生 (9)。假设步长 是 _有效的_ 并定义

根据 (8') 和 (10),我们知道

因此,如果我们从下方对 进行约束(即 ),(11) 意味着

其中 (12) 给出了序列 收敛到解 的条件。由于 (10) 通过 隐式定义了方向向量 ,对 的要求直接转化为对 的要求。

为什么使用梯度方法?

[edit | edit source]

当考虑对 的条件时,很明显“梯度方法”一词从何而来。当 由以下给出时

我们有以下结果

鉴于 是有效选择的,并且 满足

我们有

因此:如果 处的负梯度和方向 之间的角度始终小于直角,则会发生收敛。依赖于满足 (13) 的 的方法被称为梯度方法。

换句话说:只要不朝与梯度垂直的方向移动,并且如果步长选择有效,梯度方法 就可以保证收敛到解

梯度方法中的一些特定算法

[编辑 | 编辑源代码]

现在,让我们探索这一类别中的三种特定算法,它们在各自选择的 上有所不同。

牛顿法

[编辑 | 编辑源代码]

牛顿法 是该领域中最受欢迎的方法。它是一种众所周知的方法,用于求解所有类型方程的,因此很容易应用于优化问题。牛顿法的主要思想是线性化方程组,得到

(15) 可以很容易地求解出 x,因为解只是(假设 非奇异的)

为了我们的目的,我们选择 为梯度,并得出

其中 是所谓的牛顿方向

牛顿法的性质
[编辑 | 编辑源代码]

分析(17)揭示了牛顿法的主要性质

  • 如果正定,则 是按照引理1意义上的下降方向。
  • 牛顿法使用一阶二阶导数的局部信息来计算
  • 由于

牛顿法使用 的固定步长。因此,牛顿法一定是一种按照引理1意义上的下降方法。原因是固定步长 可能大于引理1中给出的临界步长。下面我们以Rosenbrock函数为例说明牛顿法不是下降方法。

  • 该方法可能很耗时,因为在每一步k中计算 很麻烦。在应用工作中,可以考虑使用近似方法。例如,可以每s步更新一次Hessian,或者可以依赖于局部近似。这被称为拟牛顿法,将在关于可变度量法的部分中讨论。
  • 为了确保该方法为下降方法,可以使用一个有效的步长,并设置

最速下降法

[edit | edit source]

另一种常用的方法是最速下降法。这种方法的思想是选择方向,使得函数值f的下降最大。尽管这个过程乍一看很合理,但它实际上使用的信息比牛顿法少,因为它忽略了Hessian关于函数曲率的信息。特别是在下面的应用中,我们将看到几个关于这个问题的例子。

最速下降法的方向向量由下式给出:

证明:根据柯西-施瓦茨不等式,可以得到

显然 (21) 在 下成立,如 (20) 所示。

特别要注意的是,对于 ,我们有 ,即我们只是沿着负梯度的方向“行走”。与牛顿法相比,最速下降法没有使用固定的步长,而是选择了一个有效的步长 。因此,最速下降法定义了序列

其中 是一个有效的步长,而 是在 (20) 中给出的最速下降方向。

最速下降法的性质
[edit | edit source]
  • 对于 ,最速下降法定义了一个下降方向,正如引理 1所述,因为

  • 最速下降法仅在局部上是合理的,因为它忽略了二阶信息。
  • 特别是当目标函数很平坦(即解 位于一个“山谷”中)时,由最速下降法定义的序列会剧烈波动(见下面的应用,尤其是 Rosenbrock 函数的例子)。
  • 由于它不需要海森矩阵,因此最速下降法的计算和实现很容易且快速。

可变度量法

[edit | edit source]

牛顿法最速下降法都属于可变度量法类的一般方法。此类方法依赖于更新公式

如果 是一个 对称正定 矩阵,(23) 定义了一个下降方法,因为 正定当且仅当 也正定。要看到这一点,只需考虑 谱分解

其中 分别是具有 特征向量特征值 的矩阵。如果 正定,所有特征值 严格为正。因此它们的逆 也为正,因此 显然是正定的。但是然后,用 代入得到

即该方法确实是下降的。到目前为止,我们还没有指定矩阵 ,但很容易看出,对于两种特定的选择,可变度量法恰好与最速下降法牛顿法分别一致。

  • 对于 (其中 单位矩阵),可以得出

这仅仅是 *最速下降法*。

  • 对于 ,可以得出

这仅仅是使用步长 的 *牛顿法*。

拟牛顿法
[edit | edit source]

对于 *变量度量法* 而言,另一个自然的候选方法是 *拟牛顿法*。与标准 *牛顿法* 相比,它使用了一种有效的步长,使其成为一种下降方法,并且与 *最速下降法* 相比,它没有完全忽略有关函数曲率的局部信息。因此,*拟牛顿法* 由矩阵 上的两个要求定义

  • 应该近似于海森矩阵 以利用有关曲率的信息,以及
  • 更新 应该很容易,这样算法仍然相对快(即使在高维情况下)。

为了确保第一个要求, 应该满足所谓的 *拟牛顿方程*

因为所有满足 (26) 的 反映了有关海森矩阵的信息。为了看到这一点,请考虑定义为以下函数的

那么很明显, 并且 。所以 的邻域内是相当相似的。为了确保 处也是一个好的近似,我们希望选择 使得在 处的梯度相同。通过

很明显, 如果 满足 (26) 中给出的拟牛顿方程。但随后可以得出

因此,只要 之间相差不大, 满足 (26) 是 的一个很好的近似。

现在让我们来谈谈第二个要求,即 的更新应该很容易。一种特定的算法是所谓的 BFGS 算法。该算法的主要优点是它只使用已经计算出的元素 来构建更新 。因此,不需要计算新的实体,只需要跟踪 x 序列和梯度序列即可。作为 BFGS 算法的起点,可以提供任何正定矩阵(例如,单位矩阵或在 处的 Hessian)。然后,BFGS 更新公式 由下式给出

其中 以及 。此外,(30) 确保所有 都是正定的,正如变尺度法 所要求的那样,是下降的。

拟牛顿法的性质
[编辑 | 编辑源代码]
  • 它使用关于 曲率的二阶信息,矩阵 与海森矩阵 有关。
  • 尽管如此,它确保了简单快速的更新(例如,通过 BFGS 算法),因此它比标准牛顿法更快。
  • 它是一种下降方法,因为 是正定的。
  • 它相对容易实现,因为 BFGS 算法在大多数数值或统计软件包中都可用。

为了比较这些方法并说明算法之间的差异,我们现在将评估最速下降法、标准牛顿法拟牛顿法在有效步长下的性能。我们使用该领域中的两个经典函数,即 Himmelblau 函数和 Rosenbrock 函数。

应用 I:Himmelblau 函数

[编辑 | 编辑源代码]

Himmelblau 函数由下式给出

这个四阶多项式有四个极小值,四个鞍点和一个极大值,因此算法有足够的失败可能性。在下图中,我们显示了 等高线图 和函数的 3D 图,用于不同的起始值。

在图 1 中,我们显示了函数以及所有三种方法在起始值为 时的路径。显然,三种方法没有找到相同的极小值。原因当然是由最速下降法的不同方向向量造成的——通过忽略关于曲率的信息,它选择的方向与两个牛顿法完全不同(尤其是在图 1 的右面板中)。

图 1:两个牛顿法收敛到相同的极小值,而最速下降法收敛到不同的极小值。

现在考虑起始值为 ,如图 2 所示。最重要的是,现在所有方法都找到了不同的解。最速下降法找到的解与两个牛顿法不同,这并不令人惊讶。但是,两个牛顿法收敛到不同的解,这表明了步长 的重要性。使用拟牛顿法在第一次迭代中选择一个有效的步长,两种方法在第一次迭代后的所有迭代中都有不同的步长方向向量。从图中可以看到:结果可能非常重要。

图 2:即使所有方法都找到了不同的解。

应用 II:Rosenbrock 函数

[编辑 | 编辑源代码]

Rosenbrock 函数由下式给出

虽然这个函数只有一个极小值,但它对于优化问题来说是一个有趣的函数。原因是这个 U 形函数的谷非常平坦(参见图 3 和 4 的右面板)。对于 计量经济学家 来说,这个函数可能很有趣,因为在最大似然估计的情况下,平坦的准则函数经常出现。因此,在下面图 3 和 4 中显示的结果对于具有此问题的函数来说似乎是相当通用的。

我使用这个函数和所采用的算法的经验是,图 3(给定一个初始值为)似乎很有代表性。与上面的 Himmelblau 函数相比,所有算法都找到了相同的解,鉴于只有一个最小值,这是可以预期的。更重要的是,不同方法选择的路徑,反映了各自方法的不同属性。可以看出,**最速下降法**波动相当剧烈。这是由于它不使用曲率信息,而是来回跳跃“山丘”之间的“山谷”。两种牛顿法选择更直接的路徑,因为它们使用二阶信息。两种牛顿法的主要区别当然在于步长。图 3 显示,**拟牛顿法**在穿过山谷时使用非常小的步长。相反,**牛顿法**的步长是固定的,因此它直接跳向解的方向。虽然人们可能会认为这是**拟牛顿法**的缺点,但需要注意的是,通常这些较小的步长伴随着更高的稳定性,即算法不太可能跳跃到不同的解。这可以在图 4 中看到。

图 3:所有方法都找到了相同的解,但最速下降法波动很大。

图 4 考虑了初始值为,显示了使用固定步长的**牛顿法**的主要问题 - 该方法可能会“越界”,因为它没有下降。在第一步中,**牛顿法**(在图中显示为紫色线)跳出了山谷,只是在下一步迭代中反弹回来。在这种情况下,仍然会收敛到最小值,因为每侧的梯度都指向中心的单个山谷,但可以很容易地想象这种情况不成立的函数。这种跳跃的原因是二阶导数非常小,因此步长 由于 Hessian 的逆而变得非常大。根据我的经验,我建议使用有效的步长来更好地控制各自方法选择的路徑。

图 2:由于固定步长,牛顿法越界。

应用 III:最大似然估计

[edit | edit source]

对于计量经济学家和统计学家,**最大似然估计器**可能是数值优化算法最重要的应用。因此,我们将简要介绍估计程序如何适应上述框架。

像往常一样,令

是给定 X 时的 Y 的**条件密度**,参数为,以及

是参数的**条件似然函数**。

如果我们假设数据是**独立同分布 (iid)**,那么样本对数似然函数为

因此,最大似然估计归结为对参数最大化 (35)。为了简单起见,我们只决定使用**牛顿法**来解决这个问题,序列 由递归定义为


其中 分别表示关于参数向量 的一阶导数和二阶导数,而 定义了 (17) 中给出的牛顿方向。由于最大似然估计总是假设条件密度(即误差项的分布)在参数 范围内是已知的,因此上述方法可以很容易地应用。

最大似然估计的具体示例

[编辑 | 编辑源代码]

假设一个简单的线性模型

其中 。那么,Y 的条件分布由U 的分布决定,即

其中 表示 密度函数。一般来说,最大化 (35) 没有闭合形式解(至少如果U 恰好不是 正态分布),因此必须使用数值方法。因此,假设U 服从 学生 t 分布,自由度为m 自由度,因此 (35) 由下式给出

我们只是使用了t分布密度函数的定义。(38)可以简化为

所以(如果我们假设自由度m是已知的)

使用准则函数

上述方法可以很容易地应用于计算最大似然估计量 ,最大化(41)。

参考文献

[edit | edit source]
  • Alt, W. (2002): "Nichtlineare Optimierung", Vieweg: Braunschweig/Wiesbaden
  • Härdle, W. and Simar, L. (2003): "Applied Multivariate Statistical Analysis", Springer: Berlin Heidelberg
  • Königsberger, K. (2004): "分析 I", 施普林格出版社: 柏林 海德堡
  • Ruud, P. (2000): "经典计量经济学理论", 牛津大学出版社: 纽约
华夏公益教科书