机器学习线代入门

机器学习入门:必须掌握的线性代数基础

机器学习,作为当今科技领域最热门的方向之一,其背后隐藏着深厚的数学理论支撑。在这其中,线性代数无疑是基石中的基石。无论是数据的表示、模型的构建,还是算法的推导与优化,都离不开线性代数的语言。

本文旨在为初入机器学习领域的学习者,系统梳理并解释最重要的线性代数基础概念,力求用简洁明了的语言和例子,帮助大家建立直观理解,为后续深入学习打下坚实基础。

1. 数据的基本载体:标量、向量、矩阵和张量

在机器学习中,数据需要被表示成计算机可以处理的数值形式。线性代数提供了丰富的数据结构来承载这些数值信息。

1.1 标量 (Scalar)

标量是一个单一的数值,没有方向,只有大小。例如,一个房间的温度(25摄氏度)、一个人的年龄(30岁)等都是标量。

在数学中,标量通常用小写斜体字母表示,例如 a, \lambda 等。

1.2 向量 (Vector)

向量是一个有序的数值列表。它可以用来表示具有多个属性的数据点。例如,一个房屋的属性(面积、卧室数量、价格)可以用一个向量表示 (150, 3, 500000)

向量在几何上可以理解为空间中的一个点或者一个从原点出发的带箭头的线段,具有大小和方向。

通常,向量用小写粗体字母表示,例如 \mathbf{v}, \mathbf{x}。一个 n 维列向量通常表示为:

\mathbf{v} = \begin{pmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{pmatrix}

或者为了节省空间写成行向量转置的形式 \mathbf{v} = (v_1, v_2, \ldots, v_n)^T

在机器学习中,一个样本常常被表示为一个向量,向量的每个元素对应样本的一个特征(feature)。

1.3 矩阵 (Matrix)

矩阵是一个二维的数值数组,可以看作是多个向量的组合。例如,一个数据集包含多个样本,每个样本有多个特征,就可以用一个矩阵来表示。

矩阵通常用大写粗体字母表示,例如 \mathbf{A}, \mathbf{M}。一个 mn 列的矩阵表示为:

\mathbf{A} = \begin{pmatrix} 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{pmatrix}

其中 a_{ij} 表示矩阵 \mathbf{A} 中第 i 行第 j 列的元素。

在机器学习中,数据集、模型的权重(weights)和偏置(biases)等常常以矩阵的形式存储。

1.4 张量 (Tensor)

张量是向量和矩阵的推广,是一个多维数组。标量是零维张量,向量是一维张量,矩阵是二维张量。三维张量可以想象成一个立方体,更高维的张量则难以直观可视化,但概念是类似的。

张量通常用大写花体字母表示,例如 \mathcal{T}

在深度学习中,处理图像、视频、自然语言等数据时,常常使用张量。例如,一个彩色图片可以表示为一个三维张量 (高度 \times 宽度 \times 颜色通道)。

2. 向量与矩阵的基本运算

理解向量和矩阵的运算是掌握线性代数应用的关键。

2.1 向量加法与标量乘法

向量加法:两个同维度的向量相加,对应元素相加。
例如:

\mathbf{v} + \mathbf{w} = \begin{pmatrix} v_1 \\ v_2 \end{pmatrix} + \begin{pmatrix} w_1 \\ w_2 \end{pmatrix} = \begin{pmatrix} v_1 + w_1 \\ v_2 + w_2 \end{pmatrix}

标量乘法:标量乘以向量,向量的每个元素都乘以该标量。
例如:

\lambda \mathbf{v} = \lambda \begin{pmatrix} v_1 \\ v_2 \end{pmatrix} = \begin{pmatrix} \lambda v_1 \\ \lambda v_2 \end{pmatrix}

这些运算在机器学习中常用于调整模型的参数或者组合不同的数据特征。

2.2 点积 (Dot Product) 或 内积 (Inner Product)

两个同维度的向量的点积是一个标量,计算方法是对应元素的乘积之和。

对于两个 n 维向量 \mathbf{a} = (a_1, \ldots, a_n)^T\mathbf{b} = (b_1, \ldots, b_n)^T,它们的点积定义为:

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

点积具有重要的几何意义: \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta),其中 \theta 是向量 \mathbf{a}\mathbf{b} 之间的夹角。这使得点积可以用来衡量两个向量的相似性或方向关系(例如,余弦相似度)。

在机器学习中,点积常用于计算向量的长度(范数)、判断向量是否正交、以及在神经网络中计算神经元的加权输入。

2.3 矩阵转置 (Transpose)

矩阵的转置是将矩阵的行变成列,列变成行。矩阵 \mathbf{A} 的转置记为 \mathbf{A}^T

如果 \mathbf{A} 是一个 m \times n 矩阵,则 \mathbf{A}^T 是一个 n \times m 矩阵,且 (\mathbf{A}^T)_{ij} = A_{ji}

例如:

\mathbf{A} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} \implies \mathbf{A}^T = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix}

转置是矩阵运算中非常基础且常用的操作。

2.4 矩阵乘法 (Matrix Multiplication)

矩阵乘法是线性代数中最核心的运算之一。它将一个矩阵的行与另一个矩阵的列进行点积。

对于一个 m \times n 矩阵 \mathbf{A} 和一个 n \times p 矩阵 \mathbf{B},它们的乘积 \mathbf{C} = \mathbf{A}\mathbf{B} 是一个 m \times p 矩阵。矩阵 \mathbf{C} 中第 i 行第 j 列的元素 C_{ij}\mathbf{A} 的第 i 行与 \mathbf{B} 的第 j 列的点积得到:

C_{ij} = \sum_{k=1}^n A_{ik} B_{kj}

例如:

\mathbf{A} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}, \mathbf{B} = \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix}
\mathbf{A}\mathbf{B} = \begin{pmatrix} (1)(5)+(2)(7) & (1)(6)+(2)(8) \\ (3)(5)+(4)(7) & (3)(6)+(4)(8) \end{pmatrix} = \begin{pmatrix} 5+14 & 6+16 \\ 15+28 & 18+32 \end{pmatrix} = \begin{pmatrix} 19 & 22 \\ 43 & 50 \end{pmatrix}

重要提示:

  • 矩阵乘法不满足交换律,即通常情况下 \mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A}
  • 进行矩阵乘法 \mathbf{A}\mathbf{B} 的前提是矩阵 \mathbf{A} 的列数必须等于矩阵 \mathbf{B} 的行数。

矩阵乘法在机器学习中无处不在。例如,在神经网络中,从一层到下一层的信号传递就是通过输入向量与权重矩阵相乘实现的。矩阵乘法也可以解释为一种线性变换,将一个向量空间中的点映射到另一个向量空间。

2.5 矩阵-向量乘法 (Matrix-Vector Multiplication)

矩阵-向量乘法是矩阵乘法的特例,即一个矩阵乘以一个列向量。对于一个 m \times n 矩阵 \mathbf{A} 和一个 n \times 1 列向量 \mathbf{x},它们的乘积 \mathbf{y} = \mathbf{A}\mathbf{x} 是一个 m \times 1 列向量。

\mathbf{y} = \mathbf{A}\mathbf{x} = \begin{pmatrix} 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{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix} = \begin{pmatrix} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n \\ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n \\ \vdots \\ a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n \end{pmatrix}

这可以看作是将向量 \mathbf{x} 通过矩阵 \mathbf{A} 进行线性变换,得到新的向量 \mathbf{y}。在机器学习中,这常用于特征变换或将输入数据映射到不同的空间。

另一种理解是,矩阵-向量乘法 \mathbf{A}\mathbf{x} 是矩阵 \mathbf{A} 的列向量的线性组合,组合系数是向量 \mathbf{x} 的元素。

\mathbf{A}\mathbf{x} = x_1 \begin{pmatrix} a_{11} \\ a_{21} \\ \vdots \\ a_{m1} \end{pmatrix} + x_2 \begin{pmatrix} a_{12} \\ a_{22} \\ \vdots \\ a_{m2} \end{pmatrix} + \cdots + x_n \begin{pmatrix} a_{1n} \\ a_{2n} \\ \vdots \\ a_{mn} \end{pmatrix}

3. 特殊矩阵

有些特殊类型的矩阵在线性代数和机器学习中扮演着重要角色。

3.1 单位矩阵 (Identity Matrix)

单位矩阵是一个方阵(行数等于列数),其主对角线上的元素都是1,其余元素都是0。n \times n 的单位矩阵记为 \mathbf{I}_n 或简写为 \mathbf{I}

例如,3 \times 3 单位矩阵是:

\mathbf{I}_3 = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}

单位矩阵在矩阵乘法中的作用类似于标量乘法中的1:对于任意矩阵 \mathbf{A},如果乘法有意义,则有 \mathbf{A}\mathbf{I} = \mathbf{I}\mathbf{A} = \mathbf{A}

3.2 逆矩阵 (Inverse Matrix)

对于一个方阵 \mathbf{A},如果存在一个方阵 \mathbf{A}^{-1},使得 \mathbf{A}\mathbf{A}^{-1} = \mathbf{A}^{-1}\mathbf{A} = \mathbf{I},则称 \mathbf{A}^{-1}\mathbf{A} 的逆矩阵。

逆矩阵的概念类似于标量中的倒数。如果一个矩阵有逆矩阵,则称该矩阵是可逆的(invertible)或非奇异的(non-singular)。

逆矩阵在求解线性方程组 \mathbf{A}\mathbf{x} = \mathbf{b} 时非常有用。如果 \mathbf{A} 可逆,则可以直接求得解为 \mathbf{x} = \mathbf{A}^{-1}\mathbf{b}

在机器学习中,逆矩阵出现在最小二乘法、卡尔曼滤波等算法中。需要注意的是,不是所有方阵都有逆矩阵。

4. 向量空间与线性相关性

线性代数不仅仅是关于数值的计算,更重要的是关于向量空间的结构及其变换。

4.1 线性组合 (Linear Combination)

给定一组向量 \{\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k\} 和一组标量 \{c_1, c_2, \ldots, c_k\},它们的线性组合定义为:

c_1 \mathbf{v}_1 + c_2 \mathbf{v}_2 + \cdots + c_k \mathbf{v}_k

这是向量加法和标量乘法的结合。

4.2 线性相关性 (Linear Dependence and Independence)

一组向量 \{\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k\} 如果存在一组不全为零的标量 \{c_1, c_2, \ldots, c_k\} 使得它们的线性组合等于零向量:

c_1 \mathbf{v}_1 + c_2 \mathbf{v}_2 + \cdots + c_k \mathbf{v}_k = \mathbf{0}

则称这组向量是线性相关的 (linearly dependent)。这意味着其中至少有一个向量可以表示为其他向量的线性组合。

如果唯一的使得上述等式成立的标量组合是 c_1 = c_2 = \cdots = c_k = 0,则称这组向量是线性无关的 (linearly independent)。这意味着任何一个向量都不能由其他向量的线性组合表示。

线性相关性是理解向量空间维度和基的关键。在机器学习中,特征的线性相关性可能导致模型不稳定或冗余,例如在多元线性回归中。

4.3 生成子空间 (Span)

一组向量 \{\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k\} 的生成子空间 (span) 是由这组向量的所有可能的线性组合所构成的集合。它表示这组向量能够“触达”的所有点的集合。

例如,二维平面上两个不共线的向量能够生成整个二维平面,而两个共线的向量只能生成通过原点的一条直线(一个一维子空间)。

4.4 基 (Basis)

向量空间的一组基是一组线性无关的向量,并且它们能够生成整个向量空间(或其子空间)。基向量的个数是向量空间的维度。

例如,二维平面上的标准基是 \begin{pmatrix} 1 \\ 0 \end{pmatrix}\begin{pmatrix} 0 \\ 1 \end{pmatrix}。任何二维向量都可以表示为它们的线性组合。

理解基和生成子空间有助于理解数据的内在维度,这在降维(如PCA)中非常重要。

5. 向量和矩阵的“大小”:范数 (Norm)

范数是用来衡量向量或矩阵的“大小”或“长度”的函数。

5.1 向量范数

向量范数 \|\mathbf{x}\| 满足非负性、齐次性和三角不等式。常见的向量范数有:

  • L2 范数 (欧几里得范数):衡量向量元素平方和的平方根,即向量的欧几里得长度。

    \|\mathbf{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2}

    在机器学习中,L2范数常用于计算向量之间的距离,或作为正则化项(L2 正则化)以防止模型过拟合。

  • L1 范数 (曼哈顿范数或出租车范数):衡量向量元素绝对值之和。

    \|\mathbf{x}\|_1 = \sum_{i=1}^n |x_i|

    L1 范数常用于稀疏模型(如Lasso回归)中,因为它倾向于使向量中的许多元素变为零。

  • L\infty 范数 (最大范数):衡量向量中元素绝对值的最大值。

    \|\mathbf{x}\|_\infty = \max_{i} |x_i|

5.2 弗罗贝尼乌斯范数 (Frobenius Norm)

矩阵的弗罗贝尼乌斯范数是将矩阵视为一个展平的向量,然后计算其L2范数。

\|\mathbf{A}\|_F = \sqrt{\sum_{i=1}^m \sum_{j=1}^n A_{ij}^2}

它衡量了矩阵中所有元素的“大小”。在机器学习中,也常用作矩阵的正则化项。

范数在机器学习中是衡量误差、模型复杂度、参数大小等的关键工具,它们构成了许多优化算法和损失函数的基础。

6. 矩阵分解 (Matrix Decomposition)

矩阵分解是将一个矩阵拆解为几个更简单的矩阵的乘积。这有助于揭示矩阵的内在结构和属性。

6.1 特征分解 (Eigen decomposition)

特征分解是针对方阵的一种分解。对于一个 n \times n 的方阵 \mathbf{A},如果它可以进行特征分解,则可以表示为:

\mathbf{A} = \mathbf{V} \mathbf{\Lambda} \mathbf{V}^{-1}

其中:

  • \mathbf{V} 是一个由 \mathbf{A} 的特征向量(Eigenvectors)组成的矩阵,每列是一个特征向量 \mathbf{v}_i
  • \mathbf{\Lambda} 是一个由对应的特征值(Eigenvalues)组成的对角矩阵,对角线元素是 \lambda_i

特征向量 \mathbf{v} 是在线性变换 \mathbf{A} 下只发生缩放(方向不变)的非零向量,缩放因子就是对应的特征值 \lambda

\mathbf{A}\mathbf{v} = \lambda \mathbf{v}

特征分解在线性动力系统分析、主成分分析(PCA)、某些优化问题的求解(如二次型优化)中非常重要。它揭示了矩阵主要的变换方向和强度。注意:只有方阵才能进行特征分解,且不是所有方阵都可以特征分解。

6.2 奇异值分解 (Singular Value Decomposition, SVD)

奇异值分解是对任意矩阵(不限于方阵)的分解,是线性代数中最强大的分解方法之一。对于一个 m \times n 的矩阵 \mathbf{A},其奇异值分解为:

\mathbf{A} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^T

其中:

  • \mathbf{U} 是一个 m \times m 的正交矩阵(列向量相互正交且长度为1)。
  • \mathbf{\Sigma} 是一个 m \times n 的对角矩阵,对角线上的元素是奇异值(Singular Values),通常按降序排列,非对角线元素为零。奇异值是非负的。
  • \mathbf{V} 是一个 n \times n 的正交矩阵。

奇异值可以理解为矩阵将空间进行拉伸/压缩的程度,而 \mathbf{U}\mathbf{V} 的列向量分别构成了变换后空间的基和原始空间的基。

SVD的应用极其广泛,包括但不限于:

  • 降维(如在PCA的实现中)
  • 噪声过滤
  • 推荐系统(如协同过滤)
  • 图像压缩
  • 求解线性方程组

奇异值分解比特征分解更通用,因为它适用于任何矩阵。

7. 其他重要概念

7.1 迹 (Trace)

方阵的迹是其主对角线元素的和。对于一个 n \times n 的矩阵 \mathbf{A},其迹记为 \text{Tr}(\mathbf{A})

\text{Tr}(\mathbf{A}) = \sum_{i=1}^n A_{ii}

迹有许多有趣的性质,例如 \text{Tr}(\mathbf{A}+\mathbf{B}) = \text{Tr}(\mathbf{A}) + \text{Tr}(\mathbf{B}),以及 \text{Tr}(\mathbf{A}\mathbf{B}) = \text{Tr}(\mathbf{B}\mathbf{A})(即使 \mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A},只要乘法有意义)。

在机器学习中,迹出现在某些损失函数或矩阵计算的简化中。

7.2 行列式 (Determinant)

行列式是仅对方阵定义的标量值,记为 \text{det}(\mathbf{A})|\mathbf{A}|。它反映了线性变换(由矩阵表示)对空间体积的缩放因子。

  • 对于 2 \times 2 矩阵 \begin{pmatrix} a & b \\ c & d \end{pmatrix},行列式为 ad - bc
  • 对于更高维矩阵,计算更复杂,但概念相似。

行列式的一个关键性质是:一个方阵可逆当且仅当其行列式不为零 (\text{det}(\mathbf{A}) \neq 0)。

在机器学习中,行列式有时用于判断矩阵是否可逆,或者在概率密度函数中(如多元高斯分布)作为协方差矩阵的属性出现。

8. 线性代数在机器学习中的应用示例:主成分分析 (PCA)

主成分分析 (PCA) 是一种常用的降维技术,其核心完全基于线性代数。

目标: 将高维数据投影到低维子空间,同时保留数据中最重要的信息(即方差最大的方向)。

线性代数作用:

  1. 数据表示: 数据集表示为一个矩阵。
  2. 协方差矩阵: 计算数据的协方差矩阵(Covariance Matrix),这是一个方阵,描述了数据各维度之间的相关性。协方差矩阵包含了数据方差和协方差信息。
  3. 特征分解: 对协方差矩阵进行特征分解,得到特征值和特征向量。
    • 特征向量表示了数据方差最大的方向(即主成分)。
    • 特征值表示了对应主成分方向上的方差大小。
  4. 选择主成分: 根据特征值的大小,选择最大的 k 个特征值对应的特征向量,这些特征向量构成了新的低维空间的基。
  5. 数据投影: 将原始数据投影到由选定的特征向量构成的子空间上,得到降维后的数据表示。这个投影过程就是矩阵乘法。

通过特征分解,PCA找到了数据最主要的“骨架”方向,并用这些方向来重构或简化数据表示,从而达到降维的目的。

总结

本文概述了机器学习入门所需的基础线性代数知识,包括数据的表示(标量、向量、矩阵、张量)、基本运算(点积、矩阵乘法、转置)、特殊矩阵(单位矩阵、逆矩阵)、向量空间概念(线性相关性、生成子空间、基)、衡量大小的范数、强大的矩阵分解技术(特征分解、奇异值分解),以及迹和行列式等。

这些概念是理解和实现各种机器学习算法(如线性回归、逻辑回归、支持向量机、神经网络、主成分分析、奇异值分解等)的基石。掌握它们不仅有助于理解算法原理,也能为后续学习更高级的数学工具(如微积分、概率论)打下基础。

线性代数的世界广阔而深刻,本文仅触及其冰山一角。鼓励学习者在实践中不断回顾和深化这些概念的理解,结合编程练习,将抽象的数学符号与具体的代码实现联系起来。

祝您在机器学习的学习旅程中顺利前行!


机器学习线代入门
http://localhost:8090/archives/linear-algebra
作者
Administrator
发布于
2025年05月08日
许可协议