数学符号、概率分布、集合与优化方法介绍
1. 常用数学符号与概念
1.1 常用函数符号
在数学和相关领域中,有一些函数会被频繁使用,下面为你介绍这些函数的含义:
-
minx f[x]
:当变量 x 在其整个有效范围内变化时,该函数返回函数 f[x] 的最小可能值。
-
argminx f[x]
:返回使函数 f[x] 取得最小值的自变量 x 的值。
-
maxx 和 argmaxx
:与 minx 和 argminx 作用类似,但这里是求函数的最大值。
-
diag[A]
:返回一个列向量,其中包含矩阵 A 的对角元素。
-
δ[x](连续 x)
:这是一个狄拉克δ函数,具有关键性质 $\int f[x]\delta[x - x_0]dx = f[x_0]$。
-
δ[x](离散 x)
:当自变量 x 为 0 时返回 1,否则返回 0。
-
heaviside[x]
:表示海维赛德阶跃函数。当自变量 x < 0 时返回 0,否则返回 1。
1.2 概率分布相关符号
- 概率表示 :随机变量 x 的概率写作 Pr(x),两个变量 a 和 b 的联合概率写作 Pr(a, b),给定 b 时 a 的条件概率写作 Pr(a|b)。若要指定 a 所依赖的 b 的具体值 b ,则写作 Pr(a|b = b )。
- 独立性表示 :用 a ⊥⊥ b 表示变量 a 和 b 相互独立,用 a ⊥⊥ b|c 表示在给定 c 的条件下,a 和 b 条件独立。
- 概率分布形式 :概率分布通常写成 Pr(x|µ, Σ) = Normx[µ, Σ] 的形式,它返回当分布的均值为 µ 且协方差为 Σ 时,数据 x 的多元正态分布的值。通过这种方式,我们能始终区分分布的自变量(这里是 x)和参数(这里是 µ 和 Σ)。
1.3 集合相关符号
- 集合表示 :集合通常用花体字母 S 表示。S ⊂ T 表示 S 是 T 的子集;x ∈ S 表示 x 是集合 S 的成员;A = B ∪ C 表示集合 A 是集合 B 和 C 的并集;A = B \ C 表示集合 A 由集合 B 中除去属于 C 的元素组成。
- 集合列举 :我们常用花括号明确列出集合的元素,例如 A = {x, y, z} 表示集合 A 仅包含 x、y 和 z。空集写作 A = {}。我们用符号 ${x_i}_{i = 1}^I$ 作为集合 {x1, x2, …, xI} 的简写,若它是方程的一部分,也可写成紧凑形式 x1…I。
2. 优化问题概述
2.1 问题陈述
连续非线性优化技术旨在找到使函数 f[•] 最小化的参数集合 $\hat{\theta}$,即计算 $\hat{\theta} = \text{argmin}_{\theta}[f[\theta]]$,其中 f[•] 被称为成本函数或目标函数。
虽然优化技术通常是围绕最小化函数来描述的,但很多优化问题实际上是要最大化基于对数概率的目标函数。为了将最大化问题转化为最小化问题,我们将目标函数乘以 -1,即不最大化对数概率,而是最小化负对数概率。
2.2 凸性
我们考虑的优化技术是迭代的,从一个估计值 $\theta[0]$ 开始,通过不断找到新的估计值 $\theta[1], \theta[2], …, \theta[\infty]$ 来改进,每个新估计值都比上一个更好,直到无法再改进为止。这些技术是局部的,即下一步的决策仅基于函数在当前位置的性质。因此,它们不能保证找到正确的解,可能会找到一个局部最小值 $\theta[\infty]$,从该点进行局部更改无法降低成本,但这并不意味着在函数的其他未探索区域不存在更好的解。
在特殊情况下,如果函数是凸的,那么只有一个最小值,并且通过足够的迭代我们可以保证找到它。对于一维函数,通过查看函数的二阶导数可以判断其凸性,如果二阶导数处处为正(即斜率持续增加),则函数是凸的,能找到全局最小值。在高维情况下,等价的测试是检查海森矩阵(成本函数关于参数的二阶导数矩阵),如果该矩阵处处正定,则函数是凸的,能找到全局最小值。不过,大多数优化问题中的成本函数并非凸函数。
2.3 方法概述
一般来说,我们搜索的参数 $\theta$ 是多维的。以二维情况为例,函数可以看作一个二维曲面。我们要讨论的方法背后的原理很简单,交替进行以下两个步骤:
- 基于函数的局部性质选择一个搜索方向 s。
- 沿着所选方向搜索以找到最小值。即寻找移动距离 $\lambda$,使得 $\hat{\lambda} = \text{argmin}_{\lambda}[f[\theta[t] + \lambda s]]$,然后设置 $\theta[t + 1] = \theta[t] + \hat{\lambda} s$,这被称为线搜索。
3. 选择搜索方向的方法
3.1 最速下降法
最速下降法是一种直观的选择搜索方向的方法,它通过测量梯度并选择使函数下降最快的方向。我们可以沿着这个方向移动,直到函数不再下降,然后重新计算最速方向并再次移动,逐步向函数的局部最小值靠近。
算法在梯度为 0 且二阶导数为正时终止,这表明我们到达了最小值点,进一步的局部更改不会再降低成本。具体来说,更新公式为 $\theta[t + 1] = \theta[t] - \lambda \frac{\partial f}{\partial \theta}|_{\theta[t]}$,其中 $\frac{\partial f}{\partial \theta}$ 是指向函数上升方向的梯度向量,$\lambda$ 是沿着相反方向(下降方向)移动的距离,$\lambda$ 的值由线搜索过程确定。
然而,最速下降法在某些情况下效率很低。例如,在下降的山谷中,它可能会在山谷两侧无效地振荡,而不是直接沿着山谷中心下降。这是因为在搜索方向上的最小值可能并不正好在山谷中心,重新测量梯度并进行下一次线搜索时,可能会在另一个方向上超调。
3.2 牛顿法
牛顿法是一种改进的方法,它还利用了当前点的二阶导数,同时考虑了函数的梯度以及梯度的变化情况。
以一维函数为例,如果二阶导数的绝对值较小,说明梯度变化缓慢,可能需要较长距离才能使梯度完全变为 0 并达到最小值,因此可以安全地移动较长距离;反之,如果二阶导数的绝对值较大,说明情况变化迅速,应该只移动较小的距离。
在二维情况下,假设在某一点两个维度上的梯度相同,对于最速下降法,我们会在两个维度上移动相同的距离。但如果第一个方向上的二阶导数的绝对值比第二个方向大很多,我们会希望在第二个方向上移动更远。
通过对当前估计值 $\theta[t]$ 进行截断泰勒展开:
$f[\theta] \approx f[\theta[t]] + (\theta - \theta[t])^T \frac{\partial f}{\partial \theta}|
{\theta[t]} + \frac{1}{2}(\theta - \theta[t])^T \frac{\partial^2 f}{\partial \theta^2}|
{\theta[t]} (\theta - \theta[t])$
对 $\theta$ 求导并令结果为 0,可得到局部极值点的表达式:
$\frac{\partial f}{\partial \theta} \approx \frac{\partial f}{\partial \theta}|
{\theta[t]} + \frac{\partial^2 f}{\partial \theta^2}|
{\theta[t]} (\theta - \theta[t]) = 0$
整理后得到最小值 $\hat{\theta}$ 的表达式:
$\hat{\theta} = \theta[t] - (\frac{\partial^2 f}{\partial \theta^2})^{-1} \frac{\partial f}{\partial \theta}$
在实际应用中,牛顿法通过一系列迭代实现:
$\theta[t + 1] = \theta[t] - \lambda (\frac{\partial^2 f}{\partial \theta^2})^{-1} \frac{\partial f}{\partial \theta}$
其中 $\lambda$ 是步长,可以设为 1,也可以通过线搜索找到最优值。
牛顿法的一种解释是,我们在局部将函数近似为二次函数,每次迭代都朝着其极值点移动(如果固定 $\lambda = 1$ 则直接移动到极值点)。但需要注意的是,牛顿法假设我们足够接近正确的解,使得附近的极值点是最小值而不是鞍点或最大值。如果海森矩阵不是正定的,可能会选择一个非下降方向,因此牛顿法不如最速下降法稳健。不过,在收敛速度方面,牛顿法通常比最速下降法更快,但每次迭代需要更多的计算,因为需要求 D × D 海森矩阵的逆。
3.3 高斯 - 牛顿法
在计算机视觉中,成本函数常常具有最小二乘法问题的特殊形式:
$f[\theta] = \sum_{i = 1}^{I} (x_i - g[w_i, \theta])^T (x_i - g[w_i, \theta])$
其中 $g[•, •]$ 是一个将变量 ${w_i}$ 转换到变量 ${x_i}$ 空间的函数,由参数 $\theta$ 进行参数化。我们的目标是找到 $\theta$ 的值,使得 ${w_i}$ 在最小二乘意义下最接近地映射到 ${x_i}$。
高斯 - 牛顿法是用于解决这类最小二乘法问题 $\hat{\theta} = \text{argmin}[f[\theta]]$(其中 $f[\theta] = z[\theta]^T z[\theta]$)的优化技术。
首先,对 $z[\theta]$ 在当前参数估计值 $\theta[t]$ 附近进行泰勒级数展开:
$z[\theta] \approx z[\theta[t]] + J(\theta - \theta[t])$
其中 J 是雅可比矩阵,其第 m 行第 n 列的元素 $j_{mn} = \frac{\partial z_m}{\partial \theta_n}$。
将 $z[\theta]$ 的近似式代入原始成本函数 $f[\theta] = z^T z$ 中,得到:
$f[\theta] \approx (z[\theta[t]] + J(\theta - \theta[t]))^T (z[\theta[t]] + J(\theta - \theta[t]))$
$= z[\theta[t]]^T z[\theta[t]] + 2(\theta - \theta[t])^T J^T z[\theta[t]] + (\theta - \theta[t])^T J^T J(\theta - \theta[t])$
对这个表达式关于参数 $\theta$ 求导并令结果为 0,得到:
$\frac{\partial f}{\partial \theta} \approx 2J^T z[\theta[t]] + 2J^T J(\theta - \theta[t]) = 0$
整理后得到更新规则:
$\theta = \theta[t] - (J^T J)^{-1} J^T z[\theta[t]]$
进一步改写为最终的高斯 - 牛顿更新公式:
$\theta[t + 1] = \theta[t] - \lambda (J^T J)^{-1} \frac{\partial f}{\partial \theta}$
其中导数在 $\theta[t]$ 处计算,$\lambda$ 是步长。
与牛顿法的更新公式相比,高斯 - 牛顿法可以看作是将海森矩阵近似为 $H \approx J^T J$。它在不计算二阶导数的情况下能提供比梯度下降法更好的结果,并且 $J^T J$ 通常是正定的,从而提高了稳定性。
3.4 其他方法
除了上述方法外,还有许多其他选择优化方向的方法,这些方法大多涉及以某种方式近似海森矩阵,目的是确保始终选择下降方向或减少计算负担。例如:
-
对角近似法
:如果计算海森矩阵的成本过高,可以用其对角元素来近似,通常能提供比最速下降法更好的方向。
-
拟牛顿法
:如布罗伊登 - 弗莱彻 - 戈德法布 - 香农(BFGS)方法,通过分析连续的梯度向量来近似海森矩阵。
-
列文伯格 - 马夸尔特算法
:在高斯 - 牛顿算法和最速下降法之间进行插值,旨在找到一种迭代次数少且稳健的方法。
-
阻尼牛顿法和信赖域方法
:试图提高牛顿法的稳健性。
-
非线性共轭梯度算法
:当只有一阶导数可用时,是一种有价值的方法。
4. 线搜索
在使用最速下降法、牛顿法或其他方法选择了合理的搜索方向后,我们需要决定移动的距离,即找到函数在所选方向上的最小值。线搜索方法通常从确定搜索最小值的范围开始,这个范围通常由沿着该线的二阶导数的大小来指导,它能提供有关可能搜索范围的信息。
这里我们介绍直接搜索法:
1. 考虑在区间 [a, d] 上进行搜索,计算区间内两个点 b 和 c(a < b < c < d)的函数值。
2. 如果 f[b] < f[c],则排除区间 [c, d],下一次迭代在新区间 [a, c] 上进行搜索;反之,如果 f[b] > f[c],则排除区间 [a, b],在新区间 [b, d] 上进行搜索。
3. 重复这个过程,直到最小值被紧密包围。通常不需要精确地找到最小值,因为线搜索方向很少是最优的,线搜索的最小值通常离函数的整体最小值很远。
4. 当剩余区间足够小时,可以通过对排除一个区间后剩下的三个点进行抛物线拟合,并选择该抛物线的最小值位置来估计最小值的位置。
5. 重新参数化
在视觉问题中,我们常常需要在一个或多个约束条件下找到最佳参数 $\theta$。例如,优化方差 $\sigma^2$ 时,方差必须为正;优化协方差矩阵时,矩阵必须是正定的;优化表示几何旋转的矩阵时,矩阵必须是正交的。
重新参数化是一种将有约束的优化问题转化为无约束优化问题的技巧。其基本思想是用一组没有约束的新参数 $\varphi$ 来表示参数 $\theta$,即 $\theta = g[\varphi]$,其中 $g[•]$ 是一个经过精心选择的函数。
总结
本文介绍了常用的数学符号、概率分布和集合的表示方法,以及连续非线性优化的相关问题和方法。包括最速下降法、牛顿法、高斯 - 牛顿法等选择搜索方向的方法,线搜索的具体操作,以及重新参数化解决有约束优化问题的思路。这些方法在数学、计算机视觉等领域都有广泛的应用,理解和掌握它们对于解决实际问题具有重要意义。
下面是选择搜索方向和线搜索的流程图:
graph TD
A[开始] --> B[选择搜索方向]
B --> C{方法类型}
C -->|最速下降法| D[计算梯度]
C -->|牛顿法| E[计算梯度和海森矩阵]
C -->|高斯 - 牛顿法| F[计算雅可比矩阵]
D --> G[确定搜索方向 s]
E --> G
F --> G
G --> H[线搜索]
H --> I[计算 f[θ[t] + λs] 的最小值]
I --> J[更新 θ[t+1] = θ[t] + ˆλs]
J --> K{是否满足终止条件}
K -->|否| B
K -->|是| L[结束]
| 方法名称 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 最速下降法 | 直观,易于理解和实现 | 在某些情况下效率低,可能振荡 | 对计算资源要求不高,对收敛速度要求不严格的场景 |
| 牛顿法 | 收敛速度快 | 每次迭代计算量大,需要求海森矩阵的逆,不够稳健 | 函数性质较好,接近最优解时使用 |
| 高斯 - 牛顿法 | 不计算二阶导数,结果较好,稳定性高 | 基于特定的最小二乘形式 | 计算机视觉等领域的最小二乘问题 |
6. 优化方法总结与对比
6.1 各方法性能对比
不同的优化方法在性能上有明显差异,我们可以从收敛速度、计算复杂度、稳定性等方面进行对比。
| 方法名称 | 收敛速度 | 计算复杂度 | 稳定性 | 适用场景 |
|---|---|---|---|---|
| 最速下降法 | 较慢,尤其在复杂地形中可能振荡,导致收敛步数多 | 低,只需计算一阶导数 | 高,因为始终沿着梯度反方向,不易出现不稳定情况 | 对计算资源有限,且对收敛速度要求不高的场景,如初步探索函数性质 |
| 牛顿法 | 较快,通常能在较少的迭代次数内接近最优解 | 高,每次迭代需要计算并求逆海森矩阵 | 低,当海森矩阵不正定时可能选择非下降方向 | 函数具有良好的凸性且接近最优解时,能快速收敛到全局最优 |
| 高斯 - 牛顿法 | 较快,在最小二乘问题中表现良好 | 适中,主要计算雅可比矩阵 | 高,$J^T J$ 通常正定 | 计算机视觉、机器学习等领域的最小二乘优化问题 |
| 对角近似法 | 比最速下降法快 | 低,只需计算海森矩阵对角元素 | 一般,近似可能不够精确 | 计算资源有限,且对精度要求不是极高的场景 |
| 拟牛顿法(如 BFGS) | 较快,能自适应调整搜索方向 | 适中,需要存储和更新近似海森矩阵 | 高,能避免牛顿法的一些稳定性问题 | 大多数非线性优化问题,尤其是无法计算精确海森矩阵的情况 |
| 列文伯格 - 马夸尔特算法 | 适中,结合了高斯 - 牛顿法和最速下降法的优点 | 适中,计算复杂度介于两者之间 | 高,能在不同情况下自适应调整 | 对收敛速度和稳定性都有一定要求的场景 |
| 阻尼牛顿法和信赖域方法 | 适中,能提高牛顿法的稳定性 | 适中,在牛顿法基础上增加了一些调整 | 高,能避免牛顿法的不稳定情况 | 牛顿法可能不稳定的场景,如函数存在鞍点或局部极大值 |
| 非线性共轭梯度算法 | 适中,仅需一阶导数 | 低,计算量相对较小 | 一般,依赖于初始点和函数性质 | 只有一阶导数可用的场景 |
6.2 方法选择建议
在实际应用中,选择合适的优化方法至关重要。以下是一些选择建议:
1.
问题类型
:
- 如果是最小二乘问题,优先考虑高斯 - 牛顿法或列文伯格 - 马夸尔特算法。
- 对于一般的非线性优化问题,拟牛顿法(如 BFGS)是一个不错的选择。
- 若只有一阶导数可用,可考虑非线性共轭梯度算法。
2.
计算资源
:
- 计算资源有限时,最速下降法或对角近似法可能更合适。
- 计算资源充足且函数性质较好时,牛顿法可能能更快收敛。
3.
稳定性要求
:
- 对稳定性要求较高的场景,可选择最速下降法、列文伯格 - 马夸尔特算法或阻尼牛顿法等。
- 若函数性质良好且接近最优解,可尝试牛顿法以提高收敛速度。
7. 优化方法的实际应用案例
7.1 计算机视觉中的最小二乘问题
在计算机视觉中,经常需要解决最小二乘问题,例如相机标定、图像配准等。以相机标定为例,我们的目标是找到相机的内参和外参,使得图像上的特征点与实际场景中的点之间的投影误差最小。
假设我们有一组图像特征点 ${x_i}$ 和对应的实际场景点 ${w_i}$,我们可以定义一个成本函数:
$f[\theta] = \sum_{i = 1}^{I} (x_i - g[w_i, \theta])^T (x_i - g[w_i, \theta])$
其中 $g[•, •]$ 是相机投影模型,由参数 $\theta$ (包括相机内参和外参)进行参数化。
我们可以使用高斯 - 牛顿法来解决这个问题,具体步骤如下:
1. 初始化参数 $\theta[0]$。
2. 计算雅可比矩阵 $J$:
- 对于每个特征点 $i$,计算 $z_i = x_i - g[w_i, \theta]$。
- 计算 $J$ 的元素 $j_{mn} = \frac{\partial z_m}{\partial \theta_n}$。
3. 计算更新量:
- 根据公式 $\theta = \theta[t] - (J^T J)^{-1} J^T z[\theta[t]]$ 计算新的参数 $\theta$。
4. 重复步骤 2 和 3,直到满足终止条件(如成本函数的变化小于某个阈值)。
7.2 机器学习中的参数优化
在机器学习中,我们经常需要优化模型的参数以最小化损失函数。例如,在神经网络训练中,我们使用梯度下降法(最速下降法的一种变体)来更新网络的权重。
假设我们有一个神经网络模型,输入为 $x$,输出为 $y$,真实标签为 $t$,损失函数为 $L(\theta)$,其中 $\theta$ 是网络的权重参数。
梯度下降法的更新步骤如下:
1. 初始化权重参数 $\theta[0]$。
2. 计算损失函数的梯度 $\frac{\partial L}{\partial \theta}$。
3. 根据公式 $\theta[t + 1] = \theta[t] - \lambda \frac{\partial L}{\partial \theta}$ 更新权重参数,其中 $\lambda$ 是学习率。
4. 重复步骤 2 和 3,直到满足终止条件(如损失函数收敛或达到最大迭代次数)。
8. 优化过程中的注意事项
8.1 导数计算
在优化过程中,导数的计算至关重要。对于大多数模型,我们可以找到导数的封闭形式表达式。但如果无法找到,我们可以使用有限差分法进行近似。例如,对于函数 $f[•]$ 关于 $\theta$ 的第 $j$ 个元素的一阶导数,可以近似为:
$\frac{\partial f}{\partial \theta_j} \approx \frac{f [\theta + a e_j] - f [\theta]}{a}$
其中 $a$ 是一个小的正数,$e_j$ 是第 $j$ 个方向的单位向量。
在使用有限差分法时,需要注意 $a$ 的选择。理论上,$a$ 越小,估计越准确,但在实际计算中,由于计算机的浮点精度限制,$a$ 不能太小,否则会引入舍入误差。
8.2 初始点选择
初始点的选择对优化结果有很大影响。在非凸优化问题中,不同的初始点可能导致收敛到不同的局部最小值。为了提高找到全局最优解的概率,我们可以采用以下策略:
1. 多次随机初始化:从不同的初始点开始进行优化,选择成本函数最小的结果作为最终解。
2. 利用先验知识:如果我们对问题有一定的先验知识,可以选择一个接近最优解的初始点。
8.3 终止条件设置
合理设置终止条件可以避免不必要的计算。常见的终止条件包括:
1. 成本函数的变化小于某个阈值:当相邻两次迭代的成本函数差值小于阈值时,认为收敛。
2. 梯度的模小于某个阈值:当梯度的模接近于 0 时,说明已经接近局部最小值。
3. 达到最大迭代次数:为了避免无限循环,设置一个最大迭代次数,当达到该次数时终止优化。
9. 优化方法的未来发展趋势
9.1 结合深度学习
随着深度学习的发展,优化方法也在不断创新。例如,自适应学习率优化算法(如 Adam、Adagrad 等)在深度学习中得到了广泛应用。这些算法能够根据参数的更新情况自适应调整学习率,提高收敛速度和稳定性。
未来,优化方法可能会与深度学习模型的结构设计更加紧密结合,例如设计专门针对特定深度学习架构的优化算法。
9.2 并行计算与分布式优化
随着计算能力的提升,并行计算和分布式优化将成为优化方法的重要发展方向。通过并行计算,可以同时计算多个样本的梯度,加速优化过程。分布式优化则可以将优化任务分配到多个计算节点上,提高计算效率。
9.3 处理大规模数据
在大数据时代,处理大规模数据的优化问题变得越来越重要。现有的优化方法在处理大规模数据时可能会遇到计算资源和内存的瓶颈。未来的优化方法需要能够高效地处理大规模数据,例如采用随机梯度下降的变体(如 Mini - Batch SGD)来减少计算量。
10. 总结
优化方法在数学、计算机科学、工程等领域都有着广泛的应用。本文介绍了常用的数学符号、概率分布和集合的表示方法,以及连续非线性优化的相关问题和方法,包括最速下降法、牛顿法、高斯 - 牛顿法等选择搜索方向的方法,线搜索的具体操作,以及重新参数化解决有约束优化问题的思路。
在实际应用中,我们需要根据问题的特点、计算资源和稳定性要求等因素选择合适的优化方法。同时,在优化过程中需要注意导数计算、初始点选择和终止条件设置等问题。随着技术的发展,优化方法也在不断创新,未来将在深度学习、并行计算和大规模数据处理等方面取得更大的进展。
以下是优化方法选择的流程图:
graph LR
A[问题类型] --> B{是否为最小二乘问题}
B -->|是| C{计算资源是否充足}
C -->|是| D[高斯 - 牛顿法]
C -->|否| E[对角近似法]
B -->|否| F{是否只有一阶导数可用}
F -->|是| G[非线性共轭梯度算法]
F -->|否| H{对稳定性要求高吗}
H -->|是| I[最速下降法/列文伯格 - 马夸尔特算法]
H -->|否| J{接近最优解吗}
J -->|是| K[牛顿法]
J -->|否| L[拟牛顿法(如 BFGS)]
通过本文的介绍,希望读者能够对优化方法有更深入的理解,并能够在实际应用中选择合适的方法解决问题。
优化方法与数学基础综述
超级会员免费看
1601

被折叠的 条评论
为什么被折叠?



