跳转到内容

统计学/数值方法/优化

来自维基教科书,开放世界中的开放书籍

在接下来的内容中,我们将提供一些关于数值优化算法的笔记。由于存在大量方法,我们将限制自己讨论所谓的梯度方法。我们之所以将此类方法作为数值优化算法的自然起点,主要有以下两个原因。一方面,这些方法在该领域确实是主力军,因此它们在实践中的频繁使用证明了它们在这里被讨论的合理性。另一方面,这种方法非常直观,因为它在一定程度上是自然地从众所周知的最优点性质中推导出来的。我们将重点关注此类方法的三个例子:牛顿法最速下降法以及可变度量法,其中包括拟牛顿法

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

理论动机

[编辑 | 编辑源代码]

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

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

即雅可比矩阵 等于零

以及

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

即海森矩阵 正半定的。

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


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

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


与上述两个条件相反,此条件足以用于检测最优值 - 考虑以下两个简单示例

其中

以及

其中 以及

牢记这个小注意事项,我们现在可以转向数值优化程序。

数值解

[编辑 | 编辑源代码]

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

(A1) 集合 紧致 的。

其中 是算法给定的某个初始值。这个假设的重要性体现在 魏尔斯特拉斯定理 中,该定理指出每个紧致集都包含其 上确界下确界。因此,(A1) 保证了 中存在某个解。并且,在这个全局最小值 处,当然满足 。因此 - 考虑到上面的讨论 - 优化问题基本上归结为求解方程组

下降方向

[编辑 | 编辑源代码]

当然,这种方法的问题是, 也适用于 极大值和鞍点。因此,好的算法应该确保将极大值和鞍点排除为潜在解。通过要求 ,即我们限制在 序列 上,使得函数值在每一步都减小,可以很容易地排除极大值。问题是,这是否总是可能的。幸运的是,答案是肯定的。为什么是这样的基本见解是:当构建映射 (即我们如何从 的规则)时,我们有两个自由度,即

  • 方向
  • 步长

因此,我们可以选择要移动的方向以到达 以及此移动的距离。 因此,如果我们选择 以“正确的方式”,我们可以有效地确保函数值减小。 下面提供了这种推理的正式表示。


引理:如果 ,那么: 使得

证明:由于 ,则对于足够小的 成立。

下降法的通用步骤

[编辑 | 编辑源代码]

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

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) 通过 隐式地定义了方向向量 ,因此对 的要求直接转化为对 的要求。

为什么是梯度方法?

[编辑 | 编辑源代码]

当考虑对 的条件时,很明显 “梯度方法” 这个术语的来源。对于由

给出的 ,我们有以下结果:

假设 已经被有效地选择,并且 满足

我们有

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

换句话说:只要不沿梯度的正交方向移动,并且有效地选择步长,梯度方法就能保证收敛到解

梯度方法中一些具体的算法

[edit | edit source]

现在让我们探索这类别中三种具体的算法,它们在各自的 的选择方面有所不同。

牛顿法

[edit | edit source]

牛顿法 是该领域中最流行的方法。它是一种求解所有类型方程的著名方法,因此可以轻松地应用于优化问题。牛顿法的主要思想是将方程组线性化,得到

(15) 可以很容易地解出 x,因为解仅由(假设 非奇异)给出

为了我们的目的,我们只选择 为梯度 ,得到

其中 被称为 *牛顿方向*。

牛顿法的性质
[edit | edit source]

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

  • 如果 是一个 正定矩阵,那么 是 *引理 1* 中提到的一个下降方向。
  • 牛顿法使用一阶 *和* 二阶导数的局部信息来计算
  • 因为

牛顿法使用固定步长 。因此牛顿法 *不一定是* *引理 1* 中提到的下降法。原因是固定步长 可能大于 *引理 1* 中给出的临界步长 。下面我们将给出 *牛顿法* 不下降的 *罗森布罗克函数* 作为示例。

  • 该方法可能非常耗时,因为每一步 *k* 都要计算 可能很麻烦。在实际应用中,我们可以考虑使用近似方法。例如,我们可以每隔 *s* 步更新一次 Hessian 矩阵,或者我们可以依靠 *局部近似*。这被称为 *拟牛顿法*,将在讨论 *变量度量法* 的部分进行介绍。
  • 为了确保该方法是下降法,我们可以使用一个有效的步长 并设置

最速下降法

[编辑 | 编辑源代码]

另一个常用的方法是最速下降法。这种方法的思路是选择方向,使得函数值f的下降最大。虽然乍一看这个过程似乎很有道理,但它实际上利用的信息比牛顿法少,因为它忽略了Hessian关于函数曲率的信息。尤其是在下面的应用中,我们将看到一些关于这个问题的例子。

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

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

显然 (21) 等式对 在 (20) 中给出。

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

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

最速下降法的性质
[edit | edit source]
  • 对于 ,最速下降法定义了一个下降方向,从 *引理 1* 的意义上说,因为

  • *最速下降法* 只是局部上可行的,因为它忽略了二阶信息。
  • 特别是当目标函数很平坦时(即解 位于“山谷”中),最速下降法定义的序列会剧烈波动(参见下面的应用,特别是 Rosenbrock 函数的例子)。
  • 由于它不需要 Hessian 矩阵,因此 *最速下降法* 的计算和实现很简单快捷。

可变度量法

[edit | edit source]

比 *牛顿法* 和 *最速下降法* 更通用的方法是 *可变度量法* 类。这类方法依赖于更新公式

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

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

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

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

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

  • 对于 可以得出

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

拟牛顿法
[编辑 | 编辑源代码]

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

  • 应该近似于Hessian 以利用关于曲率的信息,并且
  • 更新 应该很简单,以便算法仍然相对快速(即使在高维度)。

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

因为所有满足 (26) 的 都反映了Hessian 的信息。为了说明这一点,考虑定义为

显然, 以及 。因此 的邻域内相当相似。为了确保 处也是一个好的近似值,我们希望选择 使得 处的梯度相同。有了

很明显,如果 满足 (26) 中给出的拟牛顿方程,则 。但是,随之而来的是

因此,只要 彼此相差不远, 满足(26)是 的一个良好近似。

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

其中 以及 。此外,(30) 确保所有 均为正定矩阵,正如 *Variable Metric Methods* 所要求的那样,它们是下降的。

拟牛顿法的性质
[编辑 | 编辑源代码]
  • 它利用了关于 曲率的二阶信息,因为矩阵 与 Hessian 矩阵 相关。
  • 尽管如此,它确保了简单快速的更新(例如,通过 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:由于固定步长导致的牛顿法过冲。

应用三:最大似然估计

[编辑 | 编辑源代码]

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

像往常一样,设

为给定 *X* 的 *Y* 的*条件密度*,其中参数为 ,并且

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

如果我们假设数据是*独立同分布(iid)*,则样本对数似然函数如下所示:

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


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

最大似然估计的具体示例

[编辑 | 编辑源代码]

假设一个简单的线性模型

其中 . 然后条件分布 YU 的分布决定,即

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

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

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

使用以下准则函数

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

参考文献

[编辑 | 编辑来源]
  • Alt, W. (2002): "Nichtlineare Optimierung", Vieweg: Braunschweig/Wiesbaden
  • Härdle, W. 和 Simar, L. (2003): "应用多元统计分析", Springer: Berlin Heidelberg
  • Königsberger, K. (2004): "分析 I", Springer: Berlin Heidelberg
  • Ruud, P. (2000): "古典计量经济学理论", 牛津大学出版社: 纽约
华夏公益教科书