跳转至

线性代数基础

学习目标

  1. 理解向量与矩阵的概念,掌握其基本运算
  2. 理解行列式与逆矩阵的意义,掌握其计算方法
  3. 掌握特征值与特征向量的概念及其计算
  4. 理解各种范数的定义与应用场景

引言

线性代数(Linear Algebra)是人工智能和机器学习最重要的数学基础之一。在神经网络的构建中,数据以向量和矩阵的形式表示,网络的权重可以看作矩阵,而前向传播和反向传播过程本质上就是一系列矩阵运算。理解线性代数能够帮助我们更好地理解模型的工作原理,优化算法的设计,以及理解为什么某些模型架构能够更好地处理特定类型的数据。

本章将系统地介绍线性代数的基础知识,从最基础的向量和矩阵概念开始,逐步深入到矩阵分解、特征值理论以及范数等进阶内容。我们会尽可能通过几何直观来帮助理解抽象的代数概念,并结合人工智能中的实际应用场景来说明每个知识点的重要性。

1 向量与矩阵

1.1 向量的概念与表示

向量(Vector) 是线性代数中最基本的研究对象。从几何角度来看,向量是有大小和方向的量,可以用空间中带有箭头的有向线段来表示。在计算机科学和数据分析中,向量通常被理解为一维数组有序排列而成的数据对象。

向量的定义:一个 n 维向量是由 n 个实数(或其他数域中的数)组成的有序数组,通常记作:

\[\vec{a} = (a_1, a_2, \ldots, a_n)\]

或者用列形式表示为:

\[\vec{a} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix}\]

其中 \(a_i\) 称为向量的第 i 个分量(Component)或元素(Element)。在本书中,我们默认使用列向量表示,但有时为了节省空间也会使用行向量形式。

向量的维度(Dimension)是指它包含的分量个数。一个 n 维向量被称为 n 维向量空间 \(\mathbb{R}^n\) 中的元素。向量的转置(Transpose)是指将行向量变为列向量或将列向量变为行向量的操作,记作 \(\vec{a}^T\)\(\vec{a}^\top\)

向量相等的定义:两个向量相等当且仅当它们的维度相同,且对应位置上的所有分量都相等。这意味着即使两个向量在几何上是相同的箭头,但如果它们位于不同的坐标系中表示,我们也可以认为它们是不同的向量(除非通过坐标变换可以证明它们等价)。

1.2 向量运算

1.2.1 向量加法

向量加法(Vector Addition)是将两个维度相同的向量的对应分量相加,得到一个新的同维度向量。设 \(\vec{a} = (a_1, a_2, \ldots, a_n)\)\(\vec{b} = (b_1, b_2, \ldots, b_n)\),则:

\[\vec{a} + \vec{b} = (a_1 + b_1, a_2 + b_2, \ldots, a_n + b_n)\]

向量加法的几何意义是平移。如果我们将向量 \(\vec{b}\) 的起点平移到向量 \(\vec{a}\) 的终点,则 \(\vec{a} + \vec{b}\) 就是从 \(\vec{a}\) 的起点指向 \(\vec{b}\) 的终点的向量。这在物理上对应力的合成,或者在空间中对应点的平移。

向量加法满足以下运算规律:

  • 交换律(Commutative Law)\(\vec{a} + \vec{b} = \vec{b} + \vec{a}\)
  • 结合律(Associative Law)\((\vec{a} + \vec{b}) + \vec{c} = \vec{a} + (\vec{b} + \vec{c})\)
  • 存在零向量(Zero Vector)\(\vec{a} + \vec{0} = \vec{a}\),其中 \(\vec{0} = (0, 0, \ldots, 0)\)
  • 存在相反向量:对于任意向量 \(\vec{a}\),存在向量 \(-\vec{a}\) 使得 \(\vec{a} + (-\vec{a}) = \vec{0}\)

1.2.2 标量乘法

标量乘法(Scalar Multiplication)是将一个向量与一个标量(实数)相乘,结果是向量的每个分量都与该标量相乘。设标量 \(k \in \mathbb{R}\),向量 \(\vec{a} = (a_1, a_2, \ldots, a_n)\),则:

\[k\vec{a} = (ka_1, ka_2, \ldots, ka_n)\]

标量乘法的几何意义是缩放。当 \(k > 1\) 时,向量被拉伸;当 \(0 < k < 1\) 时,向量被压缩;当 \(k < 0\) 时,向量的方向会反转;当 \(k = 0\) 时,结果是零向量。

标量乘法满足以下运算规律:

  • 结合律\((kl)\vec{a} = k(l\vec{a})\)
  • 分配律(关于标量)\((k + l)\vec{a} = k\vec{a} + l\vec{a}\)
  • 分配律(关于向量)\(k(\vec{a} + \vec{b}) = k\vec{a} + k\vec{b}\)
  • 单位标量\(1\vec{a} = \vec{a}\)

1.2.3 向量内积

向量内积(Inner Product),也称为点积(Dot Product) 或数量积,是两个维度相同的向量的一种重要运算。设 \(\vec{a} = (a_1, a_2, \ldots, a_n)\)\(\vec{b} = (b_1, b_2, \ldots, b_n)\),则它们的内积定义为:

\[\vec{a} \cdot \vec{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n\]

内积的结果是一个标量(数量),而不是向量。这是它与后面将介绍的向量外积(结果仍是向量)的关键区别。

从几何角度来看,向量内积与夹角密切相关。设 \(\theta\) 为向量 \(\vec{a}\)\(\vec{b}\) 之间的夹角(\(0 \leq \theta \leq \pi\)),则:

\[\vec{a} \cdot \vec{b} = \|\vec{a}\| \|\vec{b}\| \cos\theta\]

其中 \(\|\vec{a}\|\)\(\|\vec{b}\|\) 分别是两个向量的模(长度),将在后面范数一节详细讨论。这个公式给出了内积的几何解释:当两个向量垂直(\(\theta = 90^\circ\)\(\pi/2\) 弧度)时,\(\cos\theta = 0\),内积为零;当两个向量同向(\(\theta = 0\))时,内积取得最大值 \(\|\vec{a}\| \|\vec{b}\|\);当两个向量反向(\(\theta = \pi\))时,内积取得最小值 \(-\|\vec{a}\| \|\vec{b}\|\)

内积的性质

  • 交换律\(\vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a}\)
  • 分配律\(\vec{a} \cdot (\vec{b} + \vec{c}) = \vec{a} \cdot \vec{b} + \vec{a} \cdot \vec{c}\)
  • 标量结合\((k\vec{a}) \cdot \vec{b} = k(\vec{a} \cdot \vec{b})\)
  • 正定性\(\vec{a} \cdot \vec{a} \geq 0\),且 \(\vec{a} \cdot \vec{a} = 0\) 当且仅当 \(\vec{a} = \vec{0}\)

在机器学习中,内积有广泛的应用。例如,在支持向量机中,需要计算输入向量与权向量的内积来判断分类边界;在神经网络的线性层中,输入向量与权重矩阵的行向量进行内积运算,得到输出特征。

1.2.4 向量外积

向量外积(Outer Product),也称为叉积(Cross Product)或向量积,是另一种向量运算,但仅在三维空间中定义。设 \(\vec{a} = (a_1, a_2, a_3)\)\(\vec{b} = (b_1, b_2, b_3)\) 是三维向量,则它们的叉积为:

\[\vec{a} \times \vec{b} = \begin{bmatrix} a_2 b_3 - a_3 b_2 \\ a_3 b_1 - a_1 b_3 \\ a_1 b_2 - a_2 b_1 \end{bmatrix}\]

叉积的结果是一个向量,其方向垂直于 \(\vec{a}\)\(\vec{b}\) 所在的平面,遵循右手定则:右手四指从 \(\vec{a}\) 指向 \(\vec{b}\),拇指所指的方向即为 \(\vec{a} \times \vec{b}\) 的方向。

外积的模与两向量的夹角关系为:

\[\|\vec{a} \times \vec{b}\| = \|\vec{a}\| \|\vec{b}\| \sin\theta\]

这意味着当两向量平行(\(\theta = 0\)\(\pi\))时,外积为零;当两向量垂直(\(\theta = \pi/2\))时,外积的模取得最大值。

外积在计算机图形学、机器人学和物理模拟中有重要应用,例如计算力矩、判断旋转方向等。

1.3 矩阵的概念与表示

矩阵(Matrix) 是由 mn 个数排成 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}\]

其中 \(a_{ij}\) 表示矩阵 A 第 i 行第 j 列的元素。矩阵 A 可以记作 \(A \in \mathbb{R}^{m \times n}\),表示它是一个 m 行 n 列的实数矩阵。

矩阵的行数 m 和列数 n 称为矩阵的维度(Dimension)形状(Shape)。一个 m 行 n 列的矩阵称为 m×n 矩阵。当 m = n 时,矩阵称为方阵(Square Matrix)。方阵有特殊的性质,在后面的章节中会重点讨论。

矩阵可以看作是由 n 个列向量拼接而成(列表示)或由 m 个行向量拼接而成(行表示)。这种视角在理解矩阵与向量的乘法时特别有用。

行向量与列向量:只有一行的矩阵称为行向量(Row Vector),只有一列的矩阵称为列向量(Column Vector)。在深度学习中,我们通常将一个样本表示为列向量,例如一个包含 784 个像素值的 MNIST 图像被表示为 \(\mathbb{R}^{784}\) 中的列向量。

1.4 矩阵运算

1.4.1 矩阵加法

矩阵加法(Matrix Addition)要求两个矩阵具有相同的维度,结果是对应位置上的元素相加。设 \(A, B \in \mathbb{R}^{m \times n}\),则:

\[(A + B)_{ij} = a_{ij} + b_{ij}\]

矩阵加法满足交换律和结合律,并且存在零矩阵(所有元素均为 0)作为加法单位元。

1.4.2 标量乘法

矩阵的标量乘法与向量的标量乘法类似,是将标量与矩阵的每个元素相乘。设标量 \(k\) 和矩阵 \(A \in \mathbb{R}^{m \times n}\),则:

\[(kA)_{ij} = k \cdot a_{ij}\]

1.4.3 矩阵乘法

矩阵乘法(Matrix Multiplication)是线性代数中最重要的运算之一,也是深度学习计算的核心。设 \(A \in \mathbb{R}^{m \times p}\)\(B \in \mathbb{R}^{p \times n}\),则它们的乘积 \(C = AB \in \mathbb{R}^{m \times n}\) 定义为:

\[c_{ij} = \sum_{k=1}^{p} a_{ik} b_{kj}\]

也就是说,乘积矩阵 C 的第 i 行第 j 列的元素,等于 A 的第 i 行与 B 的第 j 列的对应元素乘积之和。

理解矩阵乘法的几种视角

  1. 行视图:乘积矩阵的第 i 行是 A 的第 i 行左乘矩阵 B 的结果,即 \(A\) 的第 i 行与 \(B\) 的每个列向量的内积组成的行向量。
  2. 列视图:乘积矩阵的第 j 列是矩阵 A 右乘 B 的第 j 列的结果,即 \(B\) 的第 j 列与 \(A\) 的每个行向量的内积组成的列向量。
  3. 向量对视角:乘积矩阵可以看作 A 的行向量与 B 的列向量的所有可能配对内积的集合。

矩阵乘法的维度规则:只有当左侧矩阵的列数等于右侧矩阵的行数时,乘法才有定义。这是"内维度匹配,外维度决定结果维度"规则的体现:\((m \times p) \cdot (p \times n) = (m \times n)\)

矩阵乘法的性质

  • 结合律\((AB)C = A(BC)\)
  • 分配律\(A(B + C) = AB + AC\)\((A + B)C = AC + BC\)
  • 单位矩阵\(AI = IA = A\),其中 \(I\) 是单位矩阵
  • 一般情况下不满足交换律\(AB \neq BA\)(甚至维度可能不匹配)

这个不满足交换律的性质在深度学习中非常重要。当我们写神经网络的前向传播时,数据的流动顺序是固定的,从输入到输出依次经过各层的线性变换和非线性激活。如果交换任意两层的位置,网络的行为通常会完全改变。

1.4.4 矩阵转置

矩阵转置(Transpose)是将矩阵的行和列互换。设 \(A \in \mathbb{R}^{m \times n}\),则 \(A^\top \in \mathbb{R}^{n \times m}\),且 \((A^\top)_{ij} = a_{ji}\)

转置运算的性质:

  • \((A^\top)^\top = A\)
  • \((A + B)^\top = A^\top + B^\top\)
  • \((AB)^\top = B^\top A^\top\)

1.4.5 矩阵求逆

矩阵的逆(Inverse)将在后面的专门章节详细讨论,这里先简单介绍概念。对于 n 阶方阵 A,如果存在矩阵 B 使得 \(AB = BA = I_n\)(n阶单位矩阵),则称 B 为 A 的逆矩阵,记作 \(A^{-1}\)。不是所有矩阵都有逆矩阵,有逆矩阵的矩阵称为可逆矩阵或非奇异矩阵。

1.5 矩阵在人工智能中的应用

1.5.1 神经网络中的矩阵运算

在神经网络中,矩阵运算无处不在。考虑一个全连接层(也称为线性层或稠密层),假设输入是 m 维向量 \(\vec{x} \in \mathbb{R}^m\),权重矩阵为 \(W \in \mathbb{R}^{n \times m}\),偏置向量为 \(\vec{b} \in \mathbb{R}^n\),则该层的输出为:

\[\vec{y} = W\vec{x} + \vec{b}\]

其中 \(W\vec{x}\) 是矩阵与向量的乘法,\(W\vec{x} + \vec{b}\) 是向量加法。如果我们有批量大小为 batch 的小批量数据,每批数据构成一个矩阵 \(X \in \mathbb{R}^{batch \times m}\),则输出为 \(Y = XW^\top + \vec{b}\),其中 \(XW^\top\) 是矩阵与矩阵的乘法。

1.5.2 卷积操作的矩阵表示

卷积神经网络中的卷积操作也可以用矩阵乘法来表示。通过 im2col(image to column)操作,可以将输入特征图展开成矩阵,将卷积核展开成另一个矩阵,然后使用矩阵乘法来高效实现卷积。这种表示使得卷积操作可以在 GPU 上利用高度优化的矩阵乘法库(如 cuBLAS)来加速计算。

1.5.3 注意力机制中的矩阵运算

Transformer 中的注意力机制可以简洁地表示为矩阵运算。设查询(Query)、键(Key)、值(Value)矩阵分别为 \(Q\)\(K\)\(V\),则注意力输出为:

\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\]

其中 \(QK^\top\) 是查询与键的矩阵乘法,\(\sqrt{d_k}\) 是缩放因子,softmax 是按行应用的。这种表示使得我们可以利用高度优化的矩阵运算来实现注意力机制。

2 行列式与逆矩阵

2.1 行列式的定义

行列式(Determinant) 是方阵的一个重要标量函数,记作 \(\det(A)\)\(|A|\)。行列式最初来源于求解线性方程组的问题,但在线性代数中有着深刻的理论和应用意义。

对于 2×2 矩阵,行列式有简单的计算公式:

\[\det\begin{pmatrix} a & b \\ c & d \end{pmatrix} = ad - bc\]

对于 3×3 矩阵,行列式可以通过展开公式计算:

\[\det\begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix} = a_{11}\det\begin{pmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{pmatrix} - a_{12}\det\begin{pmatrix} a_{21} & a_{23} \\ a_{31} & a_{33} \end{pmatrix} + a_{13}\det\begin{pmatrix} a_{21} & a_{22} \\ a_{31} & a_{32} \end{pmatrix}\]

对于 n×n 矩阵,行列式可以通过按任意行或列展开来递归计算,但这种方法计算复杂度较高。实际中通常使用 LU 分解等高效算法来计算行列式。

行列式的几何意义:在二维空间中,矩阵的行列式的绝对值等于由矩阵行(或列)向量张成的平行四边形的面积;在三维空间中,行列式的绝对值等于由矩阵行(或列)向量张成的平行六面体的体积。

2.2 行列式的性质

行列式具有以下重要性质:

  1. 单位矩阵的行列式为 1\(\det(I) = 1\)
  2. 行列式与转置\(\det(A^\top) = \det(A)\)
  3. 两行交换改变符号:交换矩阵的两行会使得行列式变号
  4. 行倍加不变:将某行的倍数加到另一行上,行列式不变
  5. 倍乘抽出:将某行乘以标量 k,行列式乘以 k(这意味着如果矩阵有两行成比例,行列式为零)
  6. 乘积性质\(\det(AB) = \det(A)\det(B)\)
  7. 可逆性与行列式:矩阵 A 可逆当且仅当 \(\det(A) \neq 0\)

性质 7 是判断矩阵是否可逆的重要依据。在数值计算中,如果行列式的值非常接近零,通常意味着矩阵接近奇异,在求解线性方程组或进行数值计算时可能会遇到数值不稳定的问题。

2.3 逆矩阵的定义与性质

逆矩阵(Inverse Matrix) 的概念在前文已简要提及。对于 n 阶方阵 A,如果存在矩阵 B 使得:

\[AB = BA = I_n\]

则称 A 是可逆的(Invertible)非奇异的(Non-singular),并称 B 为 A 的逆矩阵,记作 \(A^{-1}\)

逆矩阵是唯一的。如果存在两个矩阵 B 和 C 都满足上述条件,则 \(B = BI = B(AC) = (BA)C = IC = C\),因此逆矩阵是唯一的。

逆矩阵的性质

  1. \((A^{-1})^{-1} = A\)
  2. \((AB)^{-1} = B^{-1}A^{-1}\)(注意顺序反转)
  3. \((A^\top)^{-1} = (A^{-1})^\top\)
  4. \((kA)^{-1} = \frac{1}{k}A^{-1}\)(k ≠ 0)

2.4 逆矩阵的计算

2.4.1 伴随矩阵法

对于 2×2 矩阵,其逆矩阵可以直接通过公式计算:

\[\begin{pmatrix} a & b \\ c & d \end{pmatrix}^{-1} = \frac{1}{ad - bc}\begin{pmatrix} d & -b \\ -c & a \end{pmatrix}\]

更一般地,对于 n×n 矩阵,可以通过伴随矩阵(Adjugate Matrix) 来求逆。矩阵 A 的伴随矩阵 \(\text{adj}(A)\) 是由 A 的所有代数余子式的转置组成的矩阵。则:

\[A^{-1} = \frac{1}{\det(A)}\text{adj}(A)\]

这种方法在理论推导中很有价值,但由于计算复杂度为 \(O(n!)\),在实际数值计算中并不使用。

2.4.2 高斯-约旦消元法

高斯-约旦消元法(Gauss-Jordan Elimination)是实际计算逆矩阵的常用方法。其基本思想是将增广矩阵 \([A | I]\) 通过初等行变换化为 \([I | A^{-1}]\) 的形式。

初等行变换包括:

  1. 交换两行
  2. 将某行乘以一个非零标量
  3. 将某行的倍数加到另一行上

通过这些变换,我们可以将 A 化为单位矩阵,同时 I 就被化为了 A 的逆矩阵。

2.4.3 LU 分解法

LU 分解将矩阵 A 表示为下三角矩阵 L 和上三角矩阵 U 的乘积:\(A = LU\)。如果 A 可以进行 LU 分解,则求解 \(Ax = b\) 可以分解为求解 \(Ly = b\)\(Ux = y\),这两个问题都很容易通过前向和后向代换解决。

对于求逆问题,\(Ax = I\) 可以通过 LU 分解高效求解。

2.5 逆矩阵在人工智能中的应用

2.5.1 线性系统的求解

在机器学习中,我们经常需要求解线性系统 \(Ax = b\)。例如,在线性回归的正规方程解中,我们需要计算 \((X^\top X)^{-1}\);在神经网络的权重更新中,可能需要求解某些线性系统。虽然现代深度学习主要使用梯度下降法来优化,但理解逆矩阵的概念对于理解底层算法仍然很重要。

2.5.2 协方差矩阵的逆

在统计学习和机器学习中,协方差矩阵的逆(精度矩阵)有着重要作用。例如,在高斯马尔可夫随机场中,精度矩阵的非零元素表示变量之间的条件独立性。在高维统计中,使用协方差矩阵的逆来进行稀疏估计是常见的做法。

然而,当特征数量很大时,直接计算协方差矩阵的逆是困难的(复杂度为 \(O(p^3)\),其中 p 是特征数)。因此发展出了许多近似方法和稀疏化技术。

2.5.3 矩阵求逆引理

在机器学习中,矩阵求逆引理(Woodbury Matrix Identity)是一个非常有用的工具:

\[(A + UCU^\top)^{-1} = A^{-1} - A^{-1}U(C^{-1} + U^\top A^{-1}U)^{-1}U^\top A^{-1}\]

这个恒等式允许我们用较小的矩阵的逆来近似计算较大矩阵的逆,在处理高维数据时非常有用。例如,在神经网络的循环应用中,可以使用这种技巧来高效地处理长序列数据。

3 特征值与特征向量

3.1 特征值与特征向量的定义

特征值(Eigenvalue)特征向量(Eigenvector) 是矩阵最重要的性质之一,在机器学习、信号处理、量子力学等领域都有广泛应用。

设 A 是一个 n×n 方阵。如果存在非零向量 \(\vec{v} \in \mathbb{R}^n\) 和标量 \(\lambda \in \mathbb{R}\) 使得:

\[A\vec{v} = \lambda\vec{v}\]

则称 \(\lambda\) 是 A 的一个特征值,\(\vec{v}\) 是属于特征值 \(\lambda\) 的一个特征向量。

从几何角度来看,特征向量的含义是:矩阵 A 作用于特征向量 \(\vec{v}\),只是将 \(\vec{v}\) 拉伸或压缩了 \(\lambda\) 倍,而没有改变它的方向(除非 \(\lambda < 0\),此时方向反转)。这是一个非常强的约束条件,大多数向量在矩阵作用后都会改变方向,只有特殊的向量(特征向量)能够保持方向不变。

3.2 特征值与特征向量的计算

将特征值方程 \(A\vec{v} = \lambda\vec{v}\) 改写为:

\[(A - \lambda I)\vec{v} = \vec{0}\]

这是一个齐次线性方程组。要使这个方程组有非零解,系数矩阵必须是奇异的,即:

\[\det(A - \lambda I) = 0\]

这个方程称为特征方程(Characteristic Equation)特征多项式(Characteristic Polynomial)。求解这个 n 次多项式方程,可以得到 n 个特征值(可能包含重根和复数根)。

对于每个特征值 \(\lambda_i\),解方程组 \((A - \lambda_i I)\vec{v} = \vec{0}\) 可以得到对应的特征向量。由于方程组是奇异的,解空间维度至少为 1(可能更高),因此每个特征值至少对应一个特征向量(可能对应无穷多个,因为特征向量的任何非零标量倍仍是特征向量)。

示例:考虑矩阵 \(A = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}\)

特征方程为:

\[\det(A - \lambda I) = \det\begin{pmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{pmatrix} = (2-\lambda)^2 - 1 = \lambda^2 - 4\lambda + 3 = 0\]

解得 \(\lambda_1 = 1\)\(\lambda_2 = 3\)

对于 \(\lambda_1 = 1\):解 \((A - I)\vec{v} = \vec{0}\),即 \(\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}\vec{v} = \vec{0}\),得 \(v_1 = -v_2\),所以特征向量可以取 \(\vec{v}_1 = \begin{pmatrix} 1 \\ -1 \end{pmatrix}\)

对于 \(\lambda_2 = 3\):解 \((A - 3I)\vec{v} = \vec{0}\),即 \(\begin{pmatrix} -1 & 1 \\ 1 & -1 \end{pmatrix}\vec{v} = \vec{0}\),得 \(v_1 = v_2\),所以特征向量可以取 \(\vec{v}_2 = \begin{pmatrix} 1 \\ 1 \end{pmatrix}\)

3.3 特征值的性质

\(A \in \mathbb{R}^{n \times n}\),其特征值为 \(\lambda_1, \lambda_2, \ldots, \lambda_n\)(可能有重复和复数),则:

  1. 特征值之和(迹)\(\text{tr}(A) = \sum_{i=1}^{n} \lambda_i = a_{11} + a_{22} + \cdots + a_{nn}\)

  2. 特征值之积(行列式)\(\det(A) = \prod_{i=1}^{n} \lambda_i\)

  3. 幂的特征值:如果 \(\lambda\) 是 A 的特征值,则 \(\lambda^k\)\(A^k\) 的特征值

  4. 可逆矩阵的特征值:如果 A 可逆,则 \(1/\lambda_i\)\(A^{-1}\) 的特征值

  5. 相似矩阵有相同特征值:如果 B = P^{-1}AP,则 A 和 B 有相同的特征值

这些性质在理论分析和数值计算中都很有用。例如,如果我们只需要特征值的和(迹),可以直接计算矩阵对角线元素之和,而不需要计算所有特征值。

3.4 对称矩阵的特征值

对称矩阵(\(A = A^\top\))的特征值有特别好的性质:

  1. 实特征值:对称矩阵的特征值一定是实数
  2. 正交特征向量:对称矩阵对应不同特征值的特征向量是正交的
  3. 谱分解:对称矩阵可以分解为 \(A = Q\Lambda Q^\top\),其中 Q 是正交矩阵,\(\Lambda\) 是对角矩阵

对于实对称矩阵,一定可以进行特征分解(Eigendecomposition),将矩阵表示为特征向量和特征值的组合。这在主成分分析(PCA)中有着核心的应用。

3.5 特征值与特征向量的应用

3.5.1 主成分分析(PCA)

主成分分析是一种经典的降维方法,其核心就是利用协方差矩阵的特征值和特征向量。给定数据矩阵 X,我们首先计算协方差矩阵 \(C = \frac{1}{n-1}XX^\top\)。然后计算 C 的特征值和特征向量。较大的特征值对应的特征方向是数据方差最大的方向,这些方向称为主成分。通过保留前 k 个最大的特征值对应的特征向量,我们可以将数据投影到低维空间,同时尽可能保留原始数据的信息。

3.5.2 谱聚类

谱聚类(Spectral Clustering)是一类基于图论的聚类算法。其基本思想是:构建数据的相似性图,计算拉普拉斯矩阵的特征向量,将数据映射到由特征向量张成的低维空间,然后在低维空间中使用 k-means 等算法进行聚类。谱聚类的理论基础与图论和矩阵谱理论密切相关。

3.5.3 搜索引擎中的 PageRank

PageRank 算法是 Google 创始人提出的用于网页排名的算法。其核心思想是将互联网抽象为一个有向图,网页之间的链接关系构成图的边。PageRank 值可以通过求解转移概率矩阵的主特征向量来得到。主特征向量(对应特征值为 1)给出了网页的长期访问概率分布,这个分布可以解释为网页的重要性排名。

3.5.4 矩阵幂迭代

在一些机器学习应用中,我们需要计算矩阵的幂,例如在马尔可夫链的平稳分布、图神经网络的消息传递等场景中。幂迭代法(Power Iteration)是一种计算矩阵主特征向量的简单迭代算法:反复用矩阵乘以当前向量,并归一化,直到收敛。这个算法在 PageRank 和主题模型(如 LSA)中都有应用。

4 矩阵分解

4.1 矩阵分解的概念

矩阵分解(Matrix Decomposition) 是将一个矩阵表示为若干个特殊矩阵乘积的形式。矩阵分解在线性代数理论、数值计算和机器学习中都有着核心的地位。通过将复杂的矩阵分解为简单矩阵的组合,我们可以更好地理解矩阵的性质,设计高效的算法,并揭示数据中的潜在结构。

不同的应用场景需要不同的矩阵分解形式。例如,当我们关心的是求解线性方程组时,LU 分解最为高效;当我们关心的是数据的降维表示时,SVD(奇异值分解)最为常用;当我们希望得到稀疏的或低秩的表示时,可能需要使用非负矩阵分解或字典学习等技术。

4.2 LU 分解

LU 分解 将矩阵 A 表示为下三角矩阵 L 和上三角矩阵 U 的乘积:\(A = LU\)

  • L 是下三角矩阵(Lower Triangular Matrix),对角线以上的元素均为零
  • U 是上三角矩阵(Upper Triangular Matrix),对角线以下的元素均为零

LU 分解在求解线性方程组时特别有用。给定 \(Ax = b\),我们首先求 \(A = LU\),然后分别求解 \(Ly = b\)(前向代换)和 \(Ux = y\)(后向代换)。

LU 分解的存在条件:并非所有矩阵都有 LU 分解。一个充分条件是矩阵 A 的所有顺序主子式都不为零。但在实际应用中,我们可以通过行交换(部分主元 LU 分解)来处理一般情况。

部分主元 LU 分解(PA = LU):对于可能病态的矩阵,我们通常先对行进行置换 P,再进行 LU 分解。这种分解在数值计算中更加稳定,是线性代数软件包中求解线性方程组的标准方法。

4.3 QR 分解

QR 分解 将矩阵 A 表示为正交矩阵 Q 和上三角矩阵 R 的乘积:\(A = QR\)

其中 Q 满足 \(Q^\top Q = I\)(正交矩阵),R 是上三角矩阵。

QR 分解有多种计算方法,包括 Gram-Schmidt 正交化、Householder 变换和 Givens 旋转等。其中 Householder 变换是数值最稳定的方法。

QR 分解的应用

  1. 求解最小二乘问题:当方程组 \(Ax = b\) 无解时,我们希望找到最小化 \(\|Ax - b\|\) 的解 x。这可以通过 QR 分解高效求解。

  2. 特征值计算:QR 算法是计算矩阵特征值的主流算法之一。

  3. 正交化:Gram-Schmidt 过程本质上就是 QR 分解。

4.4 奇异值分解(SVD)

奇异值分解(Singular Value Decomposition,简称 SVD) 是最重要和最广泛应用的矩阵分解之一。对于任意 m×n 矩阵 A,SVD 分解为:

\[A = U\Sigma V^\top\]

其中:

  • U 是 m×m 正交矩阵(U 的列向量称为左奇异向量)
  • Σ 是 m×n 对角矩阵,对角线上的元素称为奇异值(non-negative, in descending order)
  • V 是 n×n 正交矩阵(V 的列向量称为右奇异向量)

SVD 的性质

  1. 存在性:任意矩阵都有 SVD 分解(这一点比特征分解更普适)
  2. 几何意义:SVD 将线性变换分解为旋转、缩放、再旋转的过程
  3. 秩的解释:非零奇异值的个数等于矩阵的秩
  4. 能量解释:奇异值的平方和等于矩阵的 Frobenius 范数的平方(Parseval 定理)

截断 SVD:在许多应用中,我们只保留前 k 个最大的奇异值及其对应的奇异向量,得到矩阵的最佳低秩近似。这在降维、去噪和推荐系统等领域有广泛应用。

4.5 SVD 在人工智能中的应用

4.5.1 降维与主成分分析

SVD 与主成分分析(PCA)有着深刻的联系。实际上,PCA 可以看作是对数据协方差矩阵进行 SVD 分解。设数据矩阵 X 的 SVD 为 \(X = U\Sigma V^\top\),则协方差矩阵 \(C = \frac{1}{n-1}XX^\top = U\frac{\Sigma^2}{n-1}U^\top\)。因此,V 的列向量(右奇异向量)给出了数据方差最大的方向,而奇异值的平方给出了各方向上方差的大小。

通过截断 SVD,我们可以找到数据的低维表示,同时最小化重构误差。这正是 PCA 的核心思想。

4.5.2 图像压缩

图像可以表示为像素值矩阵。对图像矩阵进行 SVD 分解,保留前 k 个最大的奇异值,我们可以得到原图像的最佳 k 秩近似。对于自然图像,前几个奇异值通常捕获了大部分的能量,因此使用很少的奇异值就可以获得较好的图像质量。例如,只需要保留 10-20 个奇异值,就可以较好地重构一张 512×512 的图像,实现显著的压缩比。

4.5.3 推荐系统

在推荐系统中,用户-物品交互矩阵通常非常稀疏(大多数用户只与少数物品交互)。矩阵分解技术(如 SVD 及其变体)是协同过滤算法的核心。通过将用户-物品矩阵分解为用户特征矩阵和物品特征矩阵的乘积,我们可以预测用户对未交互物品的偏好。

然而,原始 SVD 无法处理稀疏矩阵(因为未定义元素),因此发展出了各种变体,如 FunkSVD(通过梯度下降学习隐因子)、ALS(交替最小二乘法)等。

4.5.4 伪逆

矩阵的伪逆(Moore-Penrose Pseudoinverse)可以通过 SVD 方便地定义。设 A 的 SVD 为 \(A = U\Sigma V^\top\),则 A 的伪逆为:

\[A^+ = V\Sigma^+ U^\top\]

其中 Σ^+ 是将 Σ 的非零奇异值取倒数并转置后得到的矩阵。

伪逆在求解线性最小二乘问题中非常重要。当矩阵 A 列满秩时,最小二乘问题 \(Ax = b\) 的解可以表示为 \(x = A^+ b\)

4.6 其他矩阵分解

4.6.1 Cholesky 分解

Cholesky 分解是 LU 分解的特殊形式,适用于对称正定矩阵。任何对称正定矩阵 A 都可以分解为 \(A = LL^\top\),其中 L 是下三角矩阵。Cholesky 分解在求解正定系统的线性方程组时比一般 LU 分解快一倍,并且不需要行置换。

4.6.2 特征分解

对于可以对角化的矩阵 A(有多少个线性无关的特征向量就能对角化),可以分解为:

\[A = PDP^{-1}\]

其中 D 是对角矩阵,对角线上的元素是特征值;P 的列向量是对应的特征向量。

特征分解在分析矩阵的幂、指数等问题时非常有用,在微分方程和动力系统分析中有重要应用。

4.6.3 非负矩阵分解(NMF)

非负矩阵分解(Non-negative Matrix Factorization)将非负矩阵分解为两个非负矩阵的乘积:\(V \approx WH\)。与 SVD 不同,NMF 强制分解后的矩阵元素都是非负的,这使得分解结果具有更好的可解释性。在图像处理、文本主题建模、音频分离等领域有广泛应用。

5 范数

5.1 范数的定义

范数(Norm) 是向量和矩阵大小的一种度量。范数的概念来自数学分析中函数极限的思想,是绝对值概念在高维空间的推广。

直观地理解,范数是对向量"长度"的测量。就像在二维空间中我们用欧几里得距离(勾股定理)来测量向量的长度一样,在高维空间中我们需要更一般的"长度"概念,范数就是这样的概念。

向量范数的定义:如果函数 \(\|\cdot\|: \mathbb{R}^n \rightarrow \mathbb{R}\) 满足以下三个条件,则称其为向量范数:

  1. 正定性(Positive Definiteness)\(\|\vec{x}\| \geq 0\),且 \(\|\vec{x}\| = 0\) 当且仅当 \(\vec{x} = \vec{0}\)
  2. 齐次性(Homogeneity)\(\|k\vec{x}\| = |k| \|\vec{x}\|\)(k 为标量)
  3. 三角不等式(Triangle Inequality)\(\|\vec{x} + \vec{y}\| \leq \|\vec{x}\| + \|\vec{y}\|\)

类似地,矩阵范数除了满足上述条件外,还需要满足次乘性(Submultiplicativity)\(\|AB\| \leq \|A\| \|B\|\)

5.2 常见向量范数

5.2.1 L0 范数

L0 范数定义为向量中非零元素的个数:

\[\|\vec{x}\|_0 = \sum_{i=1}^{n} \mathbf{1}(x_i \neq 0)\]

其中 \(\mathbf{1}(\cdot)\) 是指示函数。

L0 范数度量了向量的"稀疏程度"——非零元素越少,向量越稀疏。在压缩感知、稀疏编码等应用中,我们经常希望找到 L0 范数最小的解。然而,L0 范数的优化问题是 NP 难的,因此通常用 L1 范数来近似。

5.2.2 L1 范数

L1 范数(曼哈顿范数或曼哈顿距离)定义为向量元素绝对值之和:

\[\|\vec{x}\|_1 = \sum_{i=1}^{n} |x_i|\]

L1 范数的几何意义是向量各分量绝对值之和,对应于在网格线上移动从原点到点的距离(就像在曼哈顿街区行走)。在机器学习中,L1 范数经常被用作正则化项来促进解的稀疏性。

5.2.3 L2 范数

L2 范数(欧几里得范数)是我们最熟悉的范数,定义为:

\[\|\vec{x}\|_2 = \sqrt{\sum_{i=1}^{n} x_i^2} = \sqrt{\vec{x}^\top \vec{x}}\]

L2 范数的几何意义就是我们通常所说的"距离"或"长度"。在机器学习中,L2 范数(也称为欧几里得距离)是最常用的范数之一,用于度量向量之间的差异。

单位球:在不同的范数下,单位球(满足 \(\|\vec{x}\| \leq 1\) 的点集)有不同的形状:

  • L1 范数的单位球是一个旋转正方形(钻石形)
  • L2 范数的单位球就是我们熟悉的单位圆(球)

这些不同的形状在优化和几何直观理解中很有用。

5.2.4 Lp 范数

更一般地,对于 p ≥ 1,Lp 范数定义为:

\[\|\vec{x}\|_p = \left(\sum_{i=1}^{n} |x_i|^p\right)^{1/p}\]
  • 当 p = 1 时,得到 L1 范数
  • 当 p = 2 时,得到 L2 范数
  • 当 p → ∞ 时,得到 L∞ 范数

5.2.5 L∞ 范数

L∞ 范数(无穷范数或切比雪夫范数)定义为向量元素绝对值的最大值:

\[\|\vec{x}\|_\infty = \max_{i} |x_i|\]

在某些应用中,我们关心的是向量中最大的元素,L∞ 范数提供了这种度量。

5.3 矩阵范数

5.3.1 Frobenius 范数

Frobenius 范数是矩阵最常用的范数之一,定义为:

\[\|A\|_F = \sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n} a_{ij}^2} = \sqrt{\text{tr}(A^\top A)}\]

Frobenius 范数可以理解为将矩阵展成向量后的 L2 范数。它具有旋转不变性:\(\|A\|_F = \|UAV^\top\|_F\) 对于任意正交矩阵 U、V 成立。

在机器学习中,Frobenius 范数经常被用作正则化项来控制模型复杂度,例如在矩阵分解中防止过拟合。

5.3.2 谱范数

矩阵的谱范数(Spectral Norm)是矩阵的最大奇异值:

\[\|A\|_2 = \sigma_{\max}(A) = \sqrt{\lambda_{\max}(A^\top A)}\]

谱范数是算子范数,对应于矩阵作为线性算子将向量映射到向量时的最大放大倍数。对于任意向量 \(\vec{x}\),有 \(\|A\vec{x}\| \leq \|A\|_2 \|\vec{x}\|\)

谱范数在分析迭代算法的收敛性、设计和分析神经网络的表达能力等方面有重要作用。

5.3.3 核范数

矩阵的核范数(Nuclear Norm)定义为奇异值的和:

\[\|A\|_* = \sum_{i=1}^{r} \sigma_i\]

其中 r 是矩阵的秩,\(\sigma_i\) 是奇异值。

核范数在低秩矩阵恢复问题中有重要应用,例如在推荐系统、图像恢复等任务中。核范数是秩函数的凸近似,因此可以用作凸优化问题的正则化项。

5.4 范数在机器学习中的应用

5.4.1 损失函数中的范数

在机器学习中,范数经常被用作损失函数来度量预测值与真实值之间的差异:

  • L2 损失(均方误差)\(\| \vec{y} - \hat{\vec{y}} \|_2^2\),对离群点敏感
  • L1 损失(平均绝对误差)\(\| \vec{y} - \hat{\vec{y}} \|_1\),对离群点更鲁棒
  • L∞ 损失\(\| \vec{y} - \hat{\vec{y}} \|_\infty\),关注最大误差

不同的范数对误差的惩罚方式不同,L2 范数对大误差惩罚更重(平方增长),而 L1 范数对所有误差线性惩罚,L∞ 范数只关心最大的误差。

5.4.2 正则化中的范数

范数在正则化中有广泛应用:

  • L2 正则化(Ridge Regression):在损失函数中加入 \(\|W\|_F^2\),倾向于让权重均匀地小,防止过拟合
  • L1 正则化(Lasso):在损失函数中加入 \(\|W\|_1\),倾向于产生稀疏的权重矩阵
  • 核范数正则化:在矩阵分解问题中加入核范数约束,倾向于产生低秩解

不同的正则化策略会导致不同的解的性质,这在模型压缩、特征选择等场景中非常重要。

5.4.3 梯度下降中的范数

在优化算法的分析中,范数用于度量梯度的"大小"和参数的"尺度"。梯度下降的收敛性分析通常涉及梯度的范数约束。在深度学习中,权重初始化、梯度裁剪等操作都与范数密切相关。

例如,梯度裁剪(Gradient Clipping)是一种防止梯度爆炸的技术,它将梯度的范数限制在一个预设的阈值内:

\[\vec{g} \leftarrow \vec{g} \cdot \min\left(1, \frac{c}{\|\vec{g}\|}\right)\]

其中 c 是阈值。

本章小结

本章系统介绍了线性代数的基础知识,这些知识是理解人工智能算法的数学基础。我们首先学习了向量与矩阵的基本概念和运算,包括向量加法、标量乘法、内积、外积,以及矩阵的加法、乘法、转置等运算。这些运算构成了神经网络的计算基础。

行列式与逆矩阵部分介绍了行列式的定义、性质和计算方法,以及逆矩阵的概念和计算方法。我们了解了矩阵可逆的条件(行列式非零),以及高斯-约旦消元法等实用的求逆算法。

特征值与特征向量是线性代数最核心的概念之一。我们看到特征值刻画了矩阵的"本质"性质,在主成分分析、谱聚类、PageRank 等算法中都有核心应用。

矩阵分解部分介绍了 LU 分解、QR 分解和奇异值分解(SVD)。SVD 尤其重要,它对于任意矩阵都存在,在降维、压缩、推荐系统等领域有广泛应用。

最后,我们介绍了各种范数的概念,包括 L0、L1、L2、L∞ 范数等,以及矩阵的 Frobenius 范数、谱范数和核范数。范数在机器学习中用于度量误差、正则化和分析算法收敛性。

这些数学工具将在后续的机器学习和深度学习算法中不断出现,读者应该熟练掌握这些基础概念,为深入学习更高级的内容打下坚实基础。

思考与练习

  1. 向量运算验证:设 \(\vec{a} = (1, 2, 3)\)\(\vec{b} = (4, 5, 6)\),计算 \(\vec{a} + \vec{b}\)\(3\vec{a}\)\(\vec{a} \cdot \vec{b}\),并解释每种运算的几何意义。

  2. 矩阵乘法维度分析:如果 \(A \in \mathbb{R}^{3 \times 4}\)\(B \in \mathbb{R}^{4 \times 5}\)\(C \in \mathbb{R}^{5 \times 2}\),那么 \(ABC\) 的维度是什么?计算 \(AB\)\((AB)C\) 的复杂度分别是多少(用乘法次数衡量)?

  3. 逆矩阵存在性判断:判断以下矩阵是否可逆,如果可逆,求其逆矩阵:

  4. \(A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}\)
  5. \(B = \begin{pmatrix} 2 & 4 \\ 3 & 6 \end{pmatrix}\)

  6. 特征值与特征向量计算:求矩阵 \(A = \begin{pmatrix} 3 & 1 \\ 0 & 2 \end{pmatrix}\) 的特征值和对应的特征向量,并验证 \(A\vec{v} = \lambda\vec{v}\) 对每个特征对成立。

  7. SVD 的应用思考:考虑一个 100×100 的图像矩阵,如果对其进行 SVD 分解并保留前 10 个奇异值,重构后的矩阵秩是多少?与原矩阵相比可能有什么差异?

  8. 范数的比较:对于向量 \(\vec{x} = (1, -2, 3, -4)\),计算其 L1 范数、L2 范数和 L∞ 范数。如果使用 L1 范数作为正则化项,为什么会倾向于产生稀疏解(提示:考虑单位球的形状)?

  9. 矩阵分解的应用:在推荐系统中,假设用户-物品评分矩阵 R 是 1000×500 的矩阵(共 1000 个用户,500 个物品)。如果使用 SVD 将其分解为 \(R \approx U\Sigma V^\top\),其中 U 是 1000×k,Σ 是 k×k,V 是 500×k,解释这种分解如何用于预测用户对未评分物品的偏好。k 的选择对预测效果可能有什么影响?