凸性与线性代数基础:从理论到应用
1. 引言
在数学和统计学领域,凸性和线性代数是两个至关重要的概念。凸性在优化理论和实践中扮演着基础角色,而线性代数则是研究矩阵和向量的学科,为许多领域提供了强大的工具。本文将深入探讨凸性的相关概念,包括凸集、凸函数、Jensen不等式等,同时介绍线性代数的基本符号和运算。
2. 凸性相关概念
2.1 凸集
若对于集合 (S) 中的任意两点 (x) 和 (x’),都有 (\lambda x + (1 - \lambda)x’ \in S),其中 (\lambda \in [0, 1]),则称集合 (S) 为凸集。简单来说,连接集合内任意两点的线段上的所有点都在该集合内。以下是凸集和非凸集的示例:
| 类型 | 描述 |
| ---- | ---- |
| 凸集 | 连接集合内任意两点的线段上的所有点都在集合内 |
| 非凸集 | 存在连接集合内两点的线段上的点不在集合内 |
2.2 凸函数
如果函数 (f) 的上境图(函数上方的点集)构成一个凸集,则称 (f) 为凸函数。等价地,对于定义在凸集上的函数 (f(x)),若对于任意 (x, y \in S) 和 (0 \leq \lambda \leq 1),都有 (f(\lambda x + (1 - \lambda)y) \leq \lambda f(x) + (1 - \lambda)f(y)),则 (f) 为凸函数。若不等式严格成立,则称 (f) 为严格凸函数。若 (-f(x)) 是凸函数,则 (f(x)) 是凹函数;若 (-f(x)) 是严格凸函数,则 (f(x)) 是严格凹函数。以下是一些一维凸函数的例子:
- (x^2)
- (e^{ax})
- (-\log x)
- (x^a),其中 (a > 1),(x > 0)
- (|x|^a),其中 (a \geq 1)
- (x \log x),其中 (x > 0)
2.3 凸函数的特征
若函数 (f: \mathbb{R}^n \to \mathbb{R}) 在其定义域上二阶可微,则 (f) 为凸函数当且仅当 (H = \nabla^2 f(x)) 对于所有 (x \in \text{dom}(f)) 都是半正定的。若 (H) 是正定的,则 (f) 是严格凸函数。例如,对于二次型 (f(x) = x^T Ax),当 (A) 是半正定时,(f) 是凸函数;当 (A) 是正定时,(f) 是严格凸函数;当 (A) 的特征值有正有负时,(f) 既不是凸函数也不是凹函数。
2.4 强凸函数
若对于函数 (f) 定义域内的所有 (x) 和 (y),都有 ((\nabla f(x) - \nabla f(y))^T (x - y) \geq m |x - y|_2^2),其中 (m > 0),则称函数 (f) 为强凸函数。强凸函数一定是严格凸函数,但反之不成立。若函数 (f) 二阶连续可微,则 (f) 是强凸函数当且仅当 (\nabla^2 f(x) \succeq mI) 对于所有 (x) 在定义域内成立,其中 (I) 是单位矩阵,(\nabla^2 f) 是 Hessian 矩阵。
2.5 保持凸性的运算
虽然判断一个函数是否为凸函数在计算上可能很困难,但有一些运算可以保持凸性,帮助我们从简单的凸函数构建复杂的凸函数:
- 非负加权和 :若 (f_1, \ldots, f_m) 是凸函数,且 (w_1, \ldots, w_m \geq 0),则 (f(x) = \sum_{i = 1}^m w_i f_i(x)) 也是凸函数。
- 与仿射映射的复合 :若 (f: \mathbb{R}^n \to \mathbb{R}) 是凸函数,(\varphi(u) = Au + b) 是仿射函数,其中 (u \in \mathbb{R}^m),(A \in \mathbb{R}^{n \times m}),(b \in \mathbb{R}^n),则 (g(u) = f(\varphi(u))) 是关于 (u) 的凸函数。例如,函数 (g(u) = (u_1 - 2u_2)^4) 是凸函数,因为 ((u_1 - 2u_2) = Au) 是关于 (u) 的仿射函数,且 (f(z) = z^4) 是凸函数。
- 逐点最大值 :若 (f_1, \ldots, f_m) 是凸函数,则它们的逐点最大值 (f(x) = \max(f_1(x), \ldots, f_m(x))) 也是凸函数。例如,合页损失函数 (f(x) = \max(0, 1 - x)) 是凸函数。但逐点最小值不具有此性质。
2.6 Jensen 不等式
对于任意凸函数 (f),有 (f(\sum_{i = 1}^n \lambda_i x_i) \leq \sum_{i = 1}^n \lambda_i f(x_i)),其中 (\lambda_i \geq 0) 且 (\sum_{i = 1}^n \lambda_i = 1)。当 (n = 2) 时,根据凸函数的定义,该不等式显然成立;对于 (n > 2),可以通过归纳法证明。例如,若 (f(z) = \log(z)) 是凹函数,则有 (\log(E_z g(z)) \geq E_z \log(g(z)))。在概率模型中,若 (g(z) = p(z, x)) 是似然函数,其中 (x) 是观测值,(z) 是隐藏变量,则 (\log(E_z g(z)) = \log p(x)) 是观测数据的对数似然,通常难以计算。而 (E_z \log(g(z)) = E_z \log p(x, z)) 通常更容易计算,因此可以通过最大化这个下界来进行最大似然估计,这是 EM 算法的基础。
2.7 次梯度
若函数 (f(x)) 在 (x = a) 处可微,则它在 (a) 处一定连续,但反之不成立。例如,绝对值函数 (f(x) = |x|) 在 (x = 0) 处连续,但不可微。为了处理这种情况,我们引入次梯度的概念。对于多元凸函数 (f: \mathbb{R}^n \to \mathbb{R}),若对于所有 (z \in \text{dom}(f)),都有 (f(z) \geq f(x) + g^T (z - x)),则称 (g \in \mathbb{R}^n) 是 (f) 在 (x \in \text{dom}(f)) 处的次梯度。即使函数在某点不可微,次梯度也可能存在。若函数 (f) 在 (x) 处至少有一个次梯度,则称 (f) 在 (x) 处是次可微的,所有次梯度的集合称为 (f) 在 (x) 处的次微分,记为 (\partial f(x))。例如,绝对值函数 (f(x) = |x|) 的次微分为:
[
\partial f(x) =
\begin{cases}
{-1} & \text{if } x < 0 \
[-1, 1] & \text{if } x = 0 \
{+1} & \text{if } x > 0
\end{cases}
]
2.8 Taylor 级数近似
在很多情况下,函数可能不是全局凸的,但在某点附近可能是局部凸的。我们可以在某点的邻域内计算函数的线性或二次近似,这称为 Taylor 级数展开。设函数 (f: \mathbb{R}^n \to \mathbb{R}) 二阶可微,则可以在点 (a \in \mathbb{R}^n) 附近计算线性近似:
(\hat{f}(x) = f(a) + \nabla f(a)^T (x - a))
若 (f) 是凸函数,则 (\hat{f}) 是 (f) 的线性下界。也可以计算二次近似:
(\hat{f}(x) = f(a) + \nabla f(a)^T (x - a) + \frac{1}{2} (x - a)^T \nabla^2 f(a) (x - a))
2.9 Bregman 散度
设 (f: \Omega \to \mathbb{R}) 是定义在闭凸集 (\Omega) 上的连续可微的严格凸函数,定义与 (f) 相关的 Bregman 散度为:
(D_f(w, v) = f(w) - f(v) - (w - v)^T \nabla f(v))
令 (\hat{f}_v(w) = f(v) + (w - v)^T \nabla f(v)) 是 (f) 在 (v) 处的一阶 Taylor 级数近似,则 Bregman 散度是函数 (f) 与该线性近似的差值:
(D_f(w, v) = f(w) - \hat{f}_v(w))
由于 (f) 是凸函数,所以 (D_f(v, w) \geq 0)。以下是一些重要的 Bregman 散度的特殊情况:
- 若 (f(w) = |w|^2),则 (D_f(w, v) = |w - v|^2) 是欧几里得距离的平方。
- 若 (f(w) = w^T Qw),则 (D_f(w, v)) 是马氏距离的平方。
- 若 (w) 是指数族分布的自然参数,且 (f(w) = \log Z(w)) 是对数归一化因子,则 Bregman 散度与 Kullback-Leibler 散度相同。
2.10 共轭对偶
共轭对偶是一种构造非凸函数线性下界的有用方法,通过最大化这些下界可以更方便地进行优化。
2.10.1 引言
考虑任意连续函数 (f(x)),构造其线性下界 (L(x, \lambda) \triangleq \lambda^T x - f^ (\lambda) \leq f(x)),其中 (\lambda) 是斜率,(f^ (\lambda)) 是截距。对于固定的 (\lambda),可以通过“滑动”直线使其与曲线在 (x_{\lambda}) 处相切,此时下界最紧。在 (x_{\lambda}) 处,函数与下界的距离最小:
(x_{\lambda} \triangleq \arg\min_x f(x) - L(x, \lambda) = \arg\min_x f(x) - \lambda^T x)
由于在该点下界最紧,所以 (f(x_{\lambda}) = L(x_{\lambda}, \lambda) = \lambda^T x_{\lambda} - f^ (\lambda)),从而得到 (f^ (\lambda) = \lambda^T x_{\lambda} - f(x_{\lambda}) = \max_x \lambda^T x - f(x))。函数 (f^ ) 称为 (f) 的共轭函数,也称为 Fenchel 变换。对于可微函数 (f),(f^ ) 称为 Legendre 变换。
2.10.2 示例:指数函数
设 (f(x) = e^{-x}) 是凸函数,考虑其线性下界 (L(x, \lambda) = \lambda x - f^ (\lambda)),其中共轭函数 (f^ (\lambda) = \max_x \lambda x - f(x) = -\lambda \log(-\lambda) + \lambda)。具体推导如下:
定义 (J(x, \lambda) = \lambda x - f(x)),则 (\frac{\partial J}{\partial x} = \lambda - f’(x) = \lambda + e^{-x})。令导数为零,得到 (x_{\lambda} = \arg\max_x J(x, \lambda) = -\log(-\lambda))。因此,(f^*(\lambda) = J(x_{\lambda}, \lambda) = \lambda(-\log(-\lambda)) - e^{\log(-\lambda)} = -\lambda \log(-\lambda) + \lambda)。
2.10.3 共轭的共轭
考虑对共轭函数再取共轭:(f^{ }(x) = \max_{\lambda} \lambda^T x - f^*(\lambda))。若 (f) 是凸函数,则 (f^{ } = f),此时 (f) 和 (f^ ) 称为共轭对偶。以指数函数为例,(f^{ }(x) = \max_{\lambda} \lambda x - f^ (\lambda) = \max_{\lambda} \lambda x + \lambda \log(-\lambda) - \lambda)。定义 (J^ (x, \lambda) = \lambda x - f^ (\lambda) = \lambda x + \lambda \log(-\lambda) - \lambda),对 (\lambda) 求导并令其为零:
(\frac{\partial}{\partial \lambda} J^ (x, \lambda) = x + \log(-\lambda) + \lambda \left(-\frac{1}{-\lambda}\right) - 1 = 0)
解得 (x = -\log(-\lambda)),(\lambda x = -e^{-x})。代入可得 (f^{ }(x) = J^ (x, \lambda_x) = (-e^{-x})x + (-e^{-x})(-x) - (-e^{-x}) = e^{-x} = f(x))。
3. 线性代数基础
3.1 符号定义
3.1.1 向量
向量 (x \in \mathbb{R}^n) 是 (n) 个数的列表,通常写成列向量的形式:
(x =
\begin{bmatrix}
x_1 \
x_2 \
\vdots \
x_n
\end{bmatrix})
全为 1 的向量记为 (\mathbf{1}),全为 0 的向量记为 (\mathbf{0})。单位向量 (e_i) 除了第 (i) 个元素为 1 外,其余元素均为 0,也称为 one-hot 向量。
3.1.2 矩阵
矩阵 (A \in \mathbb{R}^{m \times n}) 是一个 (m) 行 (n) 列的二维数组:
(A =
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \
a_{21} & a_{22} & \cdots & a_{2n} \
\vdots & \vdots & \ddots & \vdots \
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{bmatrix})
若 (m = n),则称矩阵为方阵。矩阵的元素用 (A_{ij}) 或 (A_{i,j}) 表示,第 (i) 行用 (A_{i,:}) 表示,第 (j) 列用 (A_{:,j}) 表示。默认将向量视为列向量。矩阵可以看作是列向量的水平堆叠或行向量的垂直堆叠:
(A =
\begin{bmatrix}
| & | & \cdots & | \
A_{:,1} & A_{:,2} & \cdots & A_{:,n} \
| & | & \cdots & |
\end{bmatrix} = [A_{:,1}, A_{:,2}, \cdots, A_{:,n}])
(A =
\begin{bmatrix}
— & A_{1,:}^T & — \
— & A_{2,:}^T & — \
\vdots & \vdots & \vdots \
— & A_{m,:}^T & —
\end{bmatrix} = [A_{1,:}; A_{2,:}; \cdots; A_{m,:}])
矩阵的转置是将其行和列互换,记为 (A^T),满足 ((A^T) {ij} = A {ji})。转置具有以下性质:
- ((A^T)^T = A)
- ((AB)^T = B^T A^T)
- ((A + B)^T = A^T + B^T)
若方阵 (A) 满足 (A = A^T),则称其为对称矩阵,所有 (n) 阶对称矩阵的集合记为 (S_n)。
3.1.3 张量
在机器学习中,张量是二维数组向更高维度的推广。例如,三维张量的元素用 (A_{ijk}) 表示。张量的维度数称为阶或秩。可以将矩阵重塑为向量,记为 (\text{vec}(A) = [A_{:,1}; \cdots; A_{:,n}] \in \mathbb{R}^{mn \times 1})。反之,也可以将向量重塑为矩阵,有行主序(如 Python 和 C++)和列主序(如 Julia、Matlab、R 和 Fortran)两种方式。
3.2 矩阵运算相关恒等式
3.2.1 二次型相关恒等式
- (\frac{\partial}{\partial X} (a^T X b) = a b^T)
- (\frac{\partial}{\partial X} (a^T X^T b) = b a^T)
3.2.2 矩阵迹相关恒等式
- (\frac{\partial}{\partial X} \text{tr}(AXB) = A^T B^T)
- (\frac{\partial}{\partial X} \text{tr}(X^T A) = A)
- (\frac{\partial}{\partial X} \text{tr}(X^{-1} A) = -X^{-T} A^T X^{-T})
- (\frac{\partial}{\partial X} \text{tr}(X^T A X) = (A + A^T)X)
3.2.3 矩阵行列式相关恒等式
- (\frac{\partial}{\partial X} \det(AXB) = \det(AXB) X^{-T})
- (\frac{\partial}{\partial X} \ln(\det(X)) = X^{-T})
4. 总结
本文详细介绍了凸性和线性代数的相关概念,包括凸集、凸函数、Jensen 不等式、次梯度、Bregman 散度、共轭对偶等凸性相关概念,以及向量、矩阵、张量的符号定义和矩阵运算的恒等式。这些概念在优化理论、概率模型、机器学习等领域都有广泛的应用。通过理解和掌握这些知识,可以更好地进行数学建模和算法设计。
5. 凸性与线性代数的应用示例
5.1 优化问题中的凸性应用
在优化问题中,凸性起着至关重要的作用。由于凸函数的局部最优解就是全局最优解,因此在处理凸优化问题时,我们可以使用各种有效的算法来找到全局最优解。
5.1.1 线性规划
线性规划是一类常见的凸优化问题,其目标函数和约束条件都是线性的。例如,考虑以下线性规划问题:
[
\begin{align }
\max_{x} &\ c^T x \
\text{s.t.} &\ Ax \leq b \
& x \geq 0
\end{align }
]
其中 (c \in \mathbb{R}^n) 是目标系数向量,(A \in \mathbb{R}^{m \times n}) 是约束矩阵,(b \in \mathbb{R}^m) 是约束向量。由于目标函数 (f(x) = c^T x) 是线性函数,约束条件 (Ax \leq b) 和 (x \geq 0) 定义的可行域是凸集,因此该问题是凸优化问题。可以使用单纯形法或内点法等算法来求解。
5.1.2 二次规划
二次规划是目标函数为二次函数,约束条件为线性的优化问题。例如:
[
\begin{align }
\min_{x} &\ \frac{1}{2} x^T Q x + c^T x \
\text{s.t.} &\ Ax \leq b \
& x \geq 0
\end{align }
]
其中 (Q \in \mathbb{R}^{n \times n}) 是对称矩阵。当 (Q) 是半正定时,目标函数是凸函数,该问题是凸二次规划问题。可以使用活动集法或内点法等算法来求解。
5.2 线性代数在数据分析中的应用
线性代数是数据分析中不可或缺的工具,用于处理矩阵和向量的运算。
5.2.1 数据降维
主成分分析(PCA)是一种常用的数据降维方法,它利用线性代数中的特征值分解和奇异值分解来找到数据的主成分。给定一个数据集 (X \in \mathbb{R}^{n \times p}),其中 (n) 是样本数,(p) 是特征数。PCA 的目标是找到一组正交的主成分,使得数据在这些主成分上的投影方差最大。具体步骤如下:
1. 对数据进行中心化,即计算 (X - \bar{X}),其中 (\bar{X}) 是数据的均值矩阵。
2. 计算协方差矩阵 (S = \frac{1}{n - 1} (X - \bar{X})^T (X - \bar{X}))。
3. 对协方差矩阵 (S) 进行特征值分解,得到特征值 (\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_p) 和对应的特征向量 (u_1, u_2, \cdots, u_p)。
4. 选择前 (k) 个最大的特征值对应的特征向量,构成投影矩阵 (U_k = [u_1, u_2, \cdots, u_k])。
5. 将数据投影到投影矩阵上,得到降维后的数据 (Z = (X - \bar{X}) U_k)。
5.2.2 矩阵分解
矩阵分解是将一个矩阵分解为多个矩阵的乘积,常见的矩阵分解方法包括奇异值分解(SVD)和 QR 分解。
- 奇异值分解(SVD) :对于任意矩阵 (A \in \mathbb{R}^{m \times n}),可以分解为 (A = U \Sigma V^T),其中 (U \in \mathbb{R}^{m \times m}) 和 (V \in \mathbb{R}^{n \times n}) 是正交矩阵,(\Sigma \in \mathbb{R}^{m \times n}) 是对角矩阵,其对角元素 (\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0) 是矩阵 (A) 的奇异值。SVD 在数据压缩、推荐系统等领域有广泛应用。
- QR 分解 :对于任意矩阵 (A \in \mathbb{R}^{m \times n})((m \geq n)),可以分解为 (A = QR),其中 (Q \in \mathbb{R}^{m \times n}) 是正交矩阵,(R \in \mathbb{R}^{n \times n}) 是上三角矩阵。QR 分解在求解线性方程组、最小二乘问题等方面有重要应用。
6. 总结与展望
6.1 总结
本文全面介绍了凸性和线性代数的基本概念和相关理论。从凸集、凸函数的定义,到保持凸性的运算、Jensen 不等式、次梯度、Bregman 散度和共轭对偶等凸性相关内容,再到向量、矩阵、张量的符号定义以及矩阵运算的恒等式,最后通过优化问题和数据分析中的应用示例展示了这些理论的实际用途。
6.2 展望
凸性和线性代数在现代科学和工程领域有着广泛的应用,并且不断发展和创新。随着数据量的不断增加和问题复杂度的提高,对凸优化算法的效率和鲁棒性提出了更高的要求。未来的研究方向可能包括:
- 开发更高效的凸优化算法,特别是针对大规模问题的算法。
- 探索凸性在深度学习、强化学习等新兴领域的应用,以提高模型的性能和可解释性。
- 研究线性代数在高维数据处理和复杂网络分析中的新方法和技术。
通过深入研究和应用凸性与线性代数,我们可以更好地解决各种实际问题,推动科学和工程领域的发展。
附录:关键概念总结
| 概念 | 定义 |
|---|---|
| 凸集 | 对于集合 (S) 中的任意两点 (x) 和 (x’),(\lambda x + (1 - \lambda)x’ \in S),(\lambda \in [0, 1]) |
| 凸函数 | (f(\lambda x + (1 - \lambda)y) \leq \lambda f(x) + (1 - \lambda)f(y)),(x, y \in S),(0 \leq \lambda \leq 1) |
| 强凸函数 | ((\nabla f(x) - \nabla f(y))^T (x - y) \geq m |x - y|_2^2),(m > 0) |
| 次梯度 | (f(z) \geq f(x) + g^T (z - x)),(g) 为 (f) 在 (x) 处的次梯度 |
| Bregman 散度 | (D_f(w, v) = f(w) - f(v) - (w - v)^T \nabla f(v)) |
| 共轭函数 | (f^*(\lambda) = \max_x \lambda^T x - f(x)) |
| 向量 | (x \in \mathbb{R}^n),通常写成列向量形式 |
| 矩阵 | (A \in \mathbb{R}^{m \times n}),二维数组 |
| 张量 | 二维数组向更高维度的推广 |
流程图:PCA 算法流程
graph TD;
A[数据中心化] --> B[计算协方差矩阵];
B --> C[特征值分解];
C --> D[选择前 k 个特征向量];
D --> E[数据投影];
流程图:线性规划求解流程
graph TD;
A[定义目标函数和约束条件] --> B[选择求解算法];
B --> C[初始化变量];
C --> D[迭代求解];
D --> E[判断是否收敛];
E -- 是 --> F[输出最优解];
E -- 否 --> D;
超级会员免费看

32

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



