References
- Lecture: https://www.stat.cmu.edu/~ryantibs/convexopt-F18/
- Reading: 最优化: 建模算法与理论
1. Complexity of Basic Operations
在进行优化过程中, 要进行大量的线性系统的求解运算. 首先介绍相关的数值计算中的运算的基本复杂度单位: Flops (Floating Point Operations). 粗略地说, 一次 flop 是指一次浮点数运算, 例如加法, 减法, 乘法, 除法等. 我们可以将各种计算操作的复杂度用 flop 来衡量. 下面是一些常见的线性代数操作及其复杂度分析.
对于向量乘法, , 及 , 下面是一些基本的线性代数操作及其复杂度:
- 需要 次加法, 因此复杂度为 flops.
- 标量乘法 需要 次乘法, 因此复杂度为 flops.
- 内积 需要 次乘法和 次加法, 因此复杂度为 flops.
对于矩阵-向量运算 和 , 下面是一些常见的矩阵运算及其复杂度:
- 矩阵-向量乘法 需要 行和 列的乘法, 相当于 个内积, 每个内积是长度为 的向量, 因此复杂度为 flops.
- 特别地, 若 是 -稀疏的, 即整个矩阵中只有 个非零元素, 则矩阵-向量乘法只需要处理这 个非零元素, 大概的复杂度为 flops.
- 若 是 -banded, 即矩阵集中在对角线附近宽度为 的区域内, 则矩阵-向量乘法的复杂度大约为 flops.
- 若 是一个秩为 的 low-rank 矩阵, 其可以拆分为 , 则乘法 可以通过计算 来实现, 相当于 次内积和 次标量乘法, 因此复杂度为 flops.
- 若 是一个 permutation矩阵, 即每行和每列只有一个非零元素, 相当于对向量进行重排, 则没有实际的浮点数运算, 只是相当于在内存中进行数据的重排, 故在 flops 的意义上复杂度为 flops.
对于矩阵乘法 和 , 一般的矩阵乘法需要 行, 列向量分别进行长度为 的内积, 因此复杂度为 flops. 但是对于特殊结构的矩阵, 例如 是 -稀疏的, 则矩阵乘法的复杂度大约为 flops,
对于矩阵-矩阵-向量运算 , 和 , 计算 可以通过先计算 , 然后计算 来实现. 其总的复杂度为 flops. 但若采取错误的计算顺序, 则先计算 的复杂度为 flops, 然后再计算 的复杂度为 flops, 总的复杂度为 flops, 这在 很大的情况下会非常昂贵. 因此选择正确的计算顺序对于优化计算效率非常重要.
2. Solving Linear Systems
给定一个非奇异方阵 和一个向量 , 求解线性系统 .
-
一般而言, 若无特殊结构, 则其通过 Gaussian elimination 等类似方法进行消元的一般复杂度为 flops.
-
若 是纯对角阵, 例如 , 则求解线性系统 只需要进行 次标量除法: for , 因此复杂度为 flops.
-
若 是一个下三角矩阵 (上三角矩阵同理), 则其总的复杂度为 flops. 其 forward substitution (上三角为 backward substitution) 求解流程如下. 给定
则
其总共的计算量为 次乘法和 次除法, 因此复杂度为 flops.
-
若 是一个稀疏矩阵, 则其求解线性系统的复杂度取决于稀疏矩阵的结构. 有些矩阵在进行消元之后仍然很稀疏, 例如 -banded 矩阵, 其求解线性系统的复杂度大约为 flops. 但有些矩阵在进行消元之后会变得非常稠密, 该现象称为 fill-in, 其求解线性系统的复杂度可能会增加到 flops. 因此, 真正影响复杂度的不是原始矩阵的稀疏性,而是在进行分解之后的稀疏性. 这也是为什么在进行矩阵分解时, 需要选择合适的 pivoting strategy 来尽量减少 fill-in 的现象.
-
若 是正交矩阵, 即 , 则其求解线性系统的复杂度为 flops. 这是因为对于正交矩阵 , 求解线性系统 可以通过计算 来实现, 其复杂度为 flops.
2.1 Sherman-Morrison-Woodbury Formula
这里额外补充一个求解逆矩阵的技巧. 其核心在讨论的问题是, 如果我们已经知道了 或已经可以高效求解, 那么当 发生了一个 low-rank 的 perturbation, 例如 后, 我们可以有更高效的方式来求解更新后的线性系统.
Theorem (Sherman-Morrison-Woodbury Formula). 给定 是一个非奇异矩阵, , 和 是任意的矩阵 ( 需要是非奇异的), 则
且其逆矩阵可以通过以下公式计算:
特别地,
-
若 , , 则 可逆当且仅当 , 且其逆矩阵为
-
若 , 则 可逆当且仅当 可逆, 且其逆矩阵为
SMW 分解的核心在于, 对于更新后的系统 , 其总的维度仍然是 , 若直接计算其逆矩阵, 则浪费了大量的关于 low-rank perturbation 的结构信息. 通过 SMW 分解, 我们可以将其逆矩阵的计算转化为对 的计算 (该计算我们已经知道了), 以及对一个 的矩阵 的计算 (该矩阵的维度远小于 ), 从而大大降低了计算的复杂度 (其中 是 perturbation 的秩, 通常远小于 ).
3. Matrix Factorizations for Solving Linear Systems
矩阵分解的思路如下. 在进行求解 的过程中, 我们几乎从不会直接求解 的逆矩阵 来计算. 更常见的做法是先将 分解成一些特殊矩阵的乘积:
则此时我们可以通过依次求解以下线性系统来得到 :
其中, 每一步的求解虽然形式上仍然要处理 , 但由于 的特殊结构, 其求解的复杂度通常会大大降低. 常见的特殊结构就包括前面提到的对角矩阵, 三角矩阵, 稀疏矩阵, 正交矩阵等.
该效应尤其还在当我们要求解多个线性系统 for 的时候更加明显. 因为在这种情况下, 我们只需要进行一次矩阵分解 (该复杂度通常为 flops), 然后对于每个线性系统, 只需要依次求解 个特殊结构的线性系统 (每个复杂度通常为 flops), 因此总的复杂度为 flops, 而如果直接求解每个线性系统, 则总的复杂度为 flops, 当 很大的时候, 前者的效率会远远高于后者.
3.1 QR Decomposition
对于任意的矩阵 , 其都存在如下标准 QR 分解:
其中 是一个正交矩阵, 是一个上三角矩阵. 然而这里, 当 的时候, 的下半部分是全零的, 因此会浪费大量的存储空间. 故在实际的数值计算中, 我们通常会使用一个更为紧凑的 QR 分解形式, 称为 reduced QR decomposition, 其本质在于去除 中的全零部分, 以及 中对应的列. 其形式如下:
其中仍有 , 但 不再是一个方阵; 是一个上三角矩阵. 有数学定理可以保证, 只要 是列满秩的, 且额外要求 的对角线元素都为正, 则 reduced QR 分解是唯一的.
通过 Gram-Schmidt 等方法, 都可以实现 QR 分解. 其总体的复杂度约为 flops.
Example (QR Decomposition for OLS). 给定标签 和特征矩阵 , 考虑如下最小二乘问题:
为求解该问题, 我们可以先对 进行 reduced QR 分解, 得到
由于 还不是一个完整的正交矩阵, 故额外引入一个矩阵 , 得到 是一个完整的正交矩阵, 其满足 . 此时我们有如下观察:
故最小化 等价于最小化 (因为 与 无关). 而由于 是一个上三角矩阵其一定是可逆的, 因此 的最小值为 , 其最优解为 . 不过这里指出, 由于 是一个上三角矩阵, 其求解 的过程可以通过 backward substitution 来实现, 因此不需要显式地计算 来得到 , 从而大大降低了计算的复杂度.
其总体复杂度如下:
- 首先对 进行 reduced QR 分解的复杂度为 flops.
- 计算 的复杂度为 flops.
- 通过 backward substitution 求解 的复杂度为 flops.
因此总的复杂度约为 flops. 该复杂度在 的情况下, 主要由对 进行 reduced QR 分解的复杂度主导, 大约为 flops.
3.2 LU Decomposition & Cholesky Decomposition
3.2.1 LU Decomposition for General Non-Singular Matrices
-
对于一般的非奇异矩阵 , 一个通用的 LU 分解为:
其中 是一个 permutation 矩阵, 用来进行行交换. 是一个下三角矩阵, 其对角线元素为 , 是一个上三角矩阵. 的引入是为了保证在进行 Gaussian elimination 的过程中, 可以通过行交换来避免出现零 pivot 的情况, 从而保证分解的稳定性.
-
在进行 LU 分解之后, 求解线性系统 的流程如下:
故求解可分两步进行:
对于分解后的系统, 求解的复杂度约为 flops.
-
LU 分解本身的一般复杂度为 flops.
3.2.2 Cholesky Decomposition for Symmetric Positive Definite Matrices
-
特别地, 对于 是一个对称正定矩阵的情况 (), 存在一个更为高效的分解方法, 称为 Cholesky 分解, 其形式如下:
其中 是一个下三角矩阵, 其对角线元素为正. 根据待定系数法, 对于一个一般的 的矩阵 , 可以推得其递推公式为:
其中其对角线元素需要进行开方运算.
-
或等价地, 通过引入一个对角矩阵 , 我们可以得到一个不用进行开方运算的 Cholesky 分解形式, 其形式如下:
其中 是一个下三角矩阵, 其对角线元素为 , 是一个对角矩阵, 其对角线元素为正.
-
由于对称性的存在, 我们大概只需要处理一半的信息, 因此 Cholesky 分解的复杂度大约为 flops, 大约是 LU 分解的一半.
-
在进行 Cholesky 分解之后, 求解线性系统 的流程如下:
对于分解之后的线性系统, 求解的复杂度约为 flops.
Example (Cholesky Decomposition for OLS). 给定标签 和特征矩阵 , 考虑如下最小二乘问题:
假设 是列满秩的, 则其闭式解为:
其计算复杂度为:
- 首先计算 的复杂度为 flops.
- 同时计算 的复杂度为 flops.
- 对 进行 Cholesky 分解的复杂度为 flops.
- 通过分解后的系统求解线性系统 , 其复杂度为 flops.
因此总的复杂度为 flops. 该复杂度在 的情况下, 主要由计算 的复杂度主导, 大约为 flops.
3.2.3 Cholesky-like Decomposition for Symmetric Indefinite Matrices
- 对于对称但非定的矩阵 , 其分解的形式如下: 其中 是一个 permutation 矩阵, 是一个下三角矩阵, 其对角线元素为 , 是一个对角矩阵或分块对角矩阵, 其对角线元素可以是正的, 也可以是负的.
4. Matrix Factorizations for Numerical Stability
除了进行求解线性系统之外, 线性代数中另外一大类关心的问题是数值稳定性. 在正式展开之前, 回顾一下相关的代数知识.
4.1 Eigenvalue and Eigenvector
Definition (Eigenvalue and Eigenvector). 对于方阵 , 若存在一个非零向量 和一个标量 , 使得
则称 是 的一个特征值 (eigenvalue), 是 的一个特征向量 (eigenvector).
- 是 的一个特征值当且仅当 是一个奇异矩阵, 即 .
- 被称为 的特征多项式 (characteristic polynomial), 其根就是 的特征值. 对于一个 阶矩阵 其定有 个特征值 (重根算作多个).
- 对于一个对角阵, 其特征值就是其对角线元素, 其特征向量就是标准基向量.
- 对于矩阵 , 其特征值, 行列式和 trace 之间的关系如下: 其中特征值按照重数进行计数.
Definition (Similarity). 对于两个矩阵 , 若存在一个可逆矩阵 , 使得
则称 和 是相似的 (similar).
-
矩阵的相似关系是一种等价关系. 其表示同一个线性变换在不同基下的矩阵表示.
-
相似的矩阵具有相同的特征值, 但不一定具有相同的特征向量.
- , 故 和 的特征多项式相同, 从而具有相同的特征值. 但由于 的特征向量 满足 , 则 的特征向量为 , 从而不一定与 的特征向量相同.
-
如果存在非奇异矩阵 使得 是一个对角矩阵, 则称 是可对角化的 (diagonalizable), 其特征值为 , 其特征向量为 for (其中 是标准基向量).
- 一个矩阵 是可对角化的当且仅当 的全部特征向量 是线性无关的.
4.2 Eigenvalue Decomposition & Singular Value Decomposition
事实上, 上述对角化的过程就是我们在数值线性代数中非常重要的一个工具, 称为 eigenvalue decomposition. 其形式如下.
Theorem (Eigenvalue Decomposition). 对于一个可对角化的矩阵 , 其存在 个线性无关的特征向量 和对应的特征值 , 使得
- 注意, 对于任意的可对角化矩阵, 其分解形式为 若对于实对称矩阵, 其一定是可以被对角化的, 并且更进一步是可被 orthogonally diagonalizable 的, 其分解形式为
- 反过来, 如果对于一个方阵 , 我们已经明确的知道了 的分解形式, 其中 满足 , 是一个对角矩阵, 则我们可以直接得出 的特征值为 , 其特征向量为 的列向量.
然而, 并不是任意矩阵都能进行 eigenvalue decomposition. 其要求矩阵必须是方阵, 可对角化的, 且其特征值必须是实数. 一个更为一般的分解方法是 singular value decomposition, 其形式如下.
Theorem (Singular Value Decomposition). 对于任意的矩阵 , 其存在一个 的正交矩阵 , 一个 的正交矩阵 , 以及一个 的对角型矩阵 , 使得
-
其中 若为方阵, 则 直接为对角矩阵 . 若非方阵, 则相当于一个对角矩阵和一个纯零矩阵的拼接. 例如
-
中的 被称为 的奇异值 (singular value). 事实上, 的奇异值 的平方即为 的特征值, 其关系为
Proof of the singular value relation
因为
则
因此 的特征值为 , 从而 .
- 非零奇异值的个数事实上就相当于衡量了输入空间在经过线性变换 之后的输出空间的维度. 例如, 如果某一个对应的维度的奇异值为 , 则相当于在该维度的信息会被压缩成一个零向量, 从而导致输出空间的维度降低.
- 总的而言, 奇异值是分析一个矩阵的奇异性和稳定性的一个非常重要的工具. 其相比于 rank, 能够提供更为细致的关于矩阵的结构信息. 例如, 对于 , 而 是一个不满秩的矩阵而 是一个满秩的矩阵. 则若用 operator norm 来衡量 和 之间的距离, 并且记 为所有秩不超过 的矩阵的集合, 则我们有如下观察:
- 该观察说明了, 对于一个满秩的矩阵 来说, 其距离所有不满秩的矩阵的距离就是其第 大的奇异值. 因此, 若 非常小, 则说明 非常接近于一个秩为 的矩阵, 从而在数值计算中可能会出现一些不稳定的现象.
-
其对应的几何直观如下. SVD 衡量了任何一个线性变换 对于给定向量 的作用.
- 旋转 / 建系 (): Recall, 给定一个正交矩阵 , 其左乘作用在向量 上的结果就相当于求解向量 在 的空间中的坐标表示. 因此若记 , 则 就是向量 在 的空间中的坐标表示.
- 伸缩 / 缩放 (): 由于 是一个对角型矩阵, 其左乘作用在向量 上的结果就相当于对 的每个坐标进行伸缩. 其中 就是第 个坐标的伸缩因子.
- 旋转 / 摆放 (): 由于 是一个正交矩阵, 其左乘作用在向量 上的结果就相当于对刚刚旋转伸缩后的坐标再翻译回原空间中的坐标表示. 特别地, 若 和 的行列式不同号, 则会发生一个额外的翻转 (flip) 的现象.
-
奇异值分解还是和矩阵压缩密切相关的. 例如, 对于一个矩阵 , 其 SVD 分解为 , 其可以写成:
- 因此, 若只保留前 大的奇异值, 则可以得到一个秩为 的矩阵 , 其是 的一个近似. 该近似在 Frobenius 范数意义下是最优的, 即 . 即为 low-rank approximation 的一个重要工具.
Definition (Condition Number). 对于一个矩阵 , 其 condition number 定义为:
其中 和 分别是 的最大和最小(非零)奇异值.
- 若 可逆, 则可进一步得到 .
- 若 是一个矩形矩阵但满秩 (例如 OLS 中的标准情况), 则类似可以得到 , 其中 是 的 Moore-Penrose pseudo-inverse.
Example (Sensitivity of Linear Systems). 给定一个线性系统 , 记其此时的解为 . 现在, 假设我们对 和 都引入了一个小的扰动, 得到新的线性系统 , 其中 是一个非常小的标量, 和 分别是 和 的扰动矩阵. 记新的线性系统的解为 . 则有如下关系:
Example (Sensitivity Analysis of OLS by Cholesky and QR Decompositions). 考虑同样的最小二乘问题. 这里想要说明, 虽然 Cholesky 分解本身的计算复杂度更快, 但其数值稳定性却不如 QR 分解. 其原因在于, Cholesky 分解需要对 进行分解, 而
因此若原先的 已经是一个比较 ill-conditioned 的矩阵了, 则 会进一步加剧这种 ill-conditioning 的现象, 从而导致 Cholesky 分解的数值稳定性较差. 反过来, QR 分解直接对 进行分解, 因此其数值稳定性更好. 可以推导证明, 对于 QR 分解, 其最终的误差敏感性大约为 , 而后者在 OLS 能够被很好地拟合的情况下将取值较小, 此时的误差敏感性会明显优于 Cholesky 分解的 .
5. Indirect Methods for Solving Linear Systems
前面介绍的诸如 QR, Cholesky, LU 等分解方法, 都是直接方法 (direct method) 的范畴. 其核心思想仍然是通过直接给出一个 closed-form 的解来求解线性系统. 但在一些特定的情况下, 例如当 是一个非常大的稀疏矩阵时, 矩阵分解的方法也会非常昂贵. 此时, 我们可以考虑一些迭代方法 (iterative method) 来求解线性系统. 其核心思想是通过不断地迭代来逐渐逼近线性系统的解.
5.1 Jacobi and Gauss-Seidel Methods
考虑正定矩阵 , Jacobi method 要求解
其推导的迭代公式如下. 在第 轮迭代中, 的第 个坐标的更新公式为:
-
该方法的推导过程如下.
-
考虑线性系统 的第 行:
将 提取则有
-
因此可以用上式来更新 . 由于在第 轮迭代中, 的值还没有被更新, 因此只能使用上一轮迭代的值 来进行更新.
-
-
然而, Jacobi method 并不保证收敛. 一个判断方法如下. 可以将 分解为 , 其中 是 的对角线部分, 是 的非对角线部分. 定义 , 并计算其谱半径 (谱半径为矩阵的特征值的绝对值的最大值). 则 Jacobi method 当且仅当 时收敛. 例如, 当 是一个严格对角占优矩阵时, 则 Jacobi method 一定收敛.
5.2 Gauss-Seidel method
-
Gauss-Seidel method 的迭代公式如下. 在第 轮迭代中, 的第 个坐标的更新公式为:
其中对于 的部分, 使用了当前轮迭代已经更新的值 , 而对于 的部分, 则只能使用上一轮迭代的值 来进行更新.
-
Gauss-Seidel method 的收敛速度通常较快, 但由于具有强序列性, 因此不太适合并行计算.