02a-什么是矩阵

0 阅读15分钟

02a-什么是矩阵

摘要:本文介绍矩阵的基本概念、运算规则(加减乘除、转置、求逆),以及在机器学习中的应用,包括数据表示、线性回归、神经网络和PCA降维。

前言:对于我们搞计算机的人来说,只需要理解矩阵的概念就行,那些公式啊、定理啊,不用去死记硬背。为什么?因为我们写代码的时候,这些计算都可以交给 NumPy(Python 最流行的数值计算库,提供了高效的 N 维数组对象和矩阵运算)、Eigen(C++ 线性代数模板库,提供矩阵、向量运算,无需编译、只需包含头文件就能用)之类的库来完成。我们要做的,只是搞清楚什么时候该用矩阵、怎么用就够了。

1. 矩阵的基本概念 🤔

1.1 矩阵的定义 📝

本节介绍矩阵的基本定义和核心概念

矩阵是一个按照长方阵列排列的数集合。在数学中,矩阵(Matrix)是一个由 m × n 个数排成的 m 行 n 列的矩形表格。

矩阵通常用大写字母表示,如 A、B、C。矩阵中的元素用小写字母表示,如 aᵢⱼ,其中 i 和 j 分别表示元素所在的行和列。

矩阵的数学形式

A = | a₁₁ a₁₂ ... a₁ₙ |
    | a₂₁ a₂₂ ... a₂ₙ |
    | ...  ... ... .. |
    | aₘ₁ aₘ₂ ... aₘₙ |

这个 m × n 的矩阵可以记为 A = [aᵢⱼ]ₘₙ。

矩阵的起源:矩阵最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

矩阵为什么要出现?究竟要解决什么问题?

我们先来看一个简单的线性方程组:

2x + y = 5
x - 3y = -2

以前我们求解方程组,需要一步步消元,过程繁琐且容易出错。数学家们就在思考:有没有一种更简洁的方式来表示和计算?

答案就是矩阵!矩阵的出现主要为了解决以下问题:

1. 简化线性方程组的表示和求解

以前需要写一长串方程,现在只需要把系数提取出来放到一个"表格"里,就能用统一的方式来处理。凯莱创建矩阵理论的核心原因就是为了更简洁、系统地研究线性变换和线性方程组的性质。

2. 描述线性变换

在平面几何中,旋转、缩放、反射等变换都可以用矩阵来表示。例如,平面上的旋转变换 (x, y) → (x·cosθ - y·sinθ, x·sinθ + y·cosθ) 可以表示为矩阵:

| cosθ  -sinθ |
| sinθ   cosθ |

这样,两个变换的复合(先旋转再缩放)只需要把对应的矩阵相乘即可,大大简化了计算。

3. 描述多维数据

在计算机科学、数据分析等领域,矩阵是处理多维数据的基本工具。比如一张图片可以看作像素值构成的矩阵,一次批量处理的数据可以组织成矩阵进行高效计算。

矩阵的历史发展

  • 古代起源:成书于东汉前期的《九章算术》用分离系数法表示线性方程组,得到其增广矩阵,这可以看作是矩阵的雏形。
  • 近代概念:1850年,英国数学家西尔维斯特首先使用"矩阵"一词。1858年,凯莱发表《关于矩阵理论的研究报告》,系统阐述了矩阵的理论,因而被认为是矩阵论的创立者。

矩阵定义参考资料:

1.2 矩阵的维度与形状 📐

本节介绍矩阵的维度概念和不同形状的矩阵类型

矩阵的维度是指矩阵的行数和列数,通常表示为 m × n,其中 m 是行数,n 是列数。

行与列的记忆技巧

  • 行 = "行走"时左右移动 → 横着数
  • 列 = "列队"时前后站立 → 竖着数

矩阵维度示例

1234
    ┌─────┬─────┬─────┬─────┐
行1a₁₁ │ a₁₂ │ a₁₃ │ a₁₄ │
    ├─────┼─────┼─────┼─────┤
行2a₂₁ │ a₂₂ │ a₂₃ │ a₂₄ │  → 这是一个 2×4 矩阵(24列)
    └─────┴─────┴─────┴─────┘

编程中的对应

  • Python/NumPy:matrix.shape 返回 (行数, 列数),如 (3, 2) 表示3行2列
  • 索引访问:matrix[i][j]matrix[i, j] 中,i 是行索引,j 是列索引

特殊形状的矩阵

类型形状说明
行向量1 × n只有一行
列向量m × 1只有一列
方阵n × n行数等于列数

矩阵定义参考资料:

1.3 特殊矩阵类型 🔢

本节介绍常见的特殊矩阵类型及其特点

在矩阵世界中,有一些特殊类型的矩阵经常出现,它们各自具有独特的性质和应用场景。

1. 零矩阵(Zero Matrix)

所有元素都为 0 的矩阵称为零矩阵,记作 O。

O = | 0 0 0 |
    | 0 0 0 |

性质:O + A = A

2. 单位矩阵(Identity Matrix)

主对角线元素全为 1,其余元素为 0 的方阵称为单位矩阵,记作 I。

I = | 1 0 0 |
    | 0 1 0 |
    | 0 0 1 |

性质:AI = IA = A

3. 对角矩阵(Diagonal Matrix)

除了主对角线上的元素外,其余元素都为 0 的方阵。

D = | 3 0 0 |
    | 0 4 0 |
    | 0 0 5 |

4. 对称矩阵(Symmetric Matrix)

满足 A = Aᵀ 的矩阵,即 aᵢⱼ = aⱼᵢ。

A = | 1 2 3 |
    | 2 4 5 |
    | 3 5 6 |

5. 三角矩阵(Triangular Matrix)

  • 上三角矩阵:主对角线以下的元素都为 0
  • 下三角矩阵:主对角线以上的元素都为 0

上三角矩阵示例:

U = | 1 2 3 |
    | 0 4 5 |
    | 0 0 6 |

6. 行向量与列向量

  • 行向量:1 × n 的矩阵(一行)
  • 列向量:m × 1 的矩阵(一列)

矩阵维度参考资料:

2. 矩阵的运算 📐

2.1 矩阵加减法 ➕➖

本节介绍矩阵的加法、减法和数乘运算

矩阵的加法是指两个相同大小的矩阵对应位置元素相加。前提是两个矩阵必须是同型矩阵(即行数和列数均相等)。

加法定义

设 A = (aᵢⱼ)ₘₙ 和 B = (bᵢⱼ)ₘₙ 是两个同型矩阵,则它们的和 C = A + B 定义为:

cᵢⱼ = aᵢⱼ + bᵢⱼ (i=1,...,m; j=1,...,n)

加法示例

A = | 1 2 |    B = | 5 6 |    A + B = | 6  8 |
    | 3 4 |        | 7 8 |            | 10 12 |

矩阵的减法与加法类似,是对应位置元素相减:

A = | 1 2 |    B = | 5 6 |    A - B = | -4 -4 |
    | 3 4 |        | 7 8 |            | -4 -4 |

数乘(标量乘法):用一个数 k 乘以矩阵,就是把矩阵的每个元素都乘以 k:

k = 3,  A = | 1 2 |    kA = | 3  6 |
            | 3 4 |            | 9 12 |

运算规律

规律表达式
交换律A + B = B + A
结合律(A + B) + C = A + (B + C)
数乘结合律k(mA) = (km)A
分配律k(A + B) = kA + kB

矩阵运算参考资料:

2.2 矩阵乘法 ✖️

本节介绍矩阵乘法的定义和计算规则

矩阵乘法是线性代数中的核心操作。与加减法不同,矩阵乘法有严格的条件限制。

乘法前提:只有当左矩阵的列数等于右矩阵的行数时,两个矩阵才能相乘。

结果矩阵大小:若 A 是 m×n 的矩阵,B 是 n×p 的矩阵,则乘积 C = AB 是 m×p 的矩阵。

计算规则:乘积矩阵第 i 行第 j 列的元素,等于左矩阵第 i 行与右矩阵第 j 列对应元素乘积之和。

计算公式

Cᵢⱼ = Σₖ Aᵢₖ · Bₖⱼ

计算示例

A = | 1 2 |    B = | 5 6 |    AB = | 1×5+2×7  1×6+2×8 |
    | 3 4 |        | 7 8 |         | 3×5+4×7  3×6+4×8 |

    = | 5+14   6+16 | = | 19  22 |
      | 15+28  18+32|    | 43  50 |

几何意义:矩阵乘法本质上表示线性变换的复合。例如,先旋转变换再缩放变换,等于对应的矩阵相乘。

重要性质

性质说明
结合律(AB)C = A(BC)
左分配律A(B + C) = AB + AC
右分配律(A + B)C = AC + BC
单位矩阵A×单位矩阵 = 单位矩阵×A = A
不满足交换律AB ≠ BA(一般情况下)

矩阵乘法参考资料:

2.3 矩阵转置 🔄

本节介绍矩阵转置的定义和性质

转置就是把矩阵的行和列互换。把 A 的行换成相应的列,得到的新矩阵称为 A 的转置矩阵,记作 Aᵀ 或 A'。

转置示例

A 是 2×3 矩阵:

A = | 1 2 3 |
    | 4 5 6 |

转置后变成 3×2 矩阵:

Aᵀ = | 1 4 |
     | 2 5 |
     | 3 6 |

转置性质

性质表达式
双转置(Aᵀ)ᵀ = A
加法转置(A + B)ᵀ = Aᵀ + Bᵀ
乘法转置(AB)ᵀ = BᵀAᵀ(注意顺序反转)
数乘转置(kA)ᵀ = kAᵀ
行列式det(Aᵀ) = det(A)

对称矩阵:若 Aᵀ = A,则 A 是对称矩阵

矩阵转置参考资料:

2.4 矩阵的逆 📐

本节介绍矩阵的逆的定义、性质和计算方法

逆矩阵是线性代数中的重要概念。简单来说,逆矩阵就是矩阵世界里的"倒数"。

逆矩阵的定义

对于一个 n 阶方阵 A,如果存在一个 n 阶方阵 B,使得 AB = BA = I(单位矩阵),那么我们称 A 是可逆矩阵,并称 B 为 A 的逆矩阵,记作 A⁻¹。

换句话说,A 的逆矩阵满足:A × A⁻¹ = A⁻¹ × A = I(单位矩阵)

逆矩阵存在条件

方阵 A 可逆的充要条件是 det(A) ≠ 0,即矩阵的行列式不为零。行列式为零的矩阵称为奇异矩阵,是不可逆的。

逆矩阵的性质

性质表达式
逆矩阵唯一性若 A 可逆,则逆矩阵唯一
逆的逆(A⁻¹)⁻¹ = A
转置的逆(Aᵀ)⁻¹ = (A⁻¹)ᵀ
乘积的逆(AB)⁻¹ = B⁻¹A⁻¹(注意顺序反转)
数乘的逆(kA)⁻¹ = (1/k)A⁻¹
逆的行列式det(A⁻¹) = 1/det(A)

2×2 矩阵求逆公式

对于 2×2 矩阵:

A = | a  b |
    | c  d |

A⁻¹ = (1/(ad - bc)) × |  d  -b |
                      | -c   a |

其中 ad - bc 是矩阵的行列式,必须不为零。

计算示例

A = | 2  1 |
    | 1  3 |

det(A) = 2×3 - 1×1 = 6 - 1 = 50,所以 A 可逆

A⁻¹ = (1/5) × |  3  -1 |
              | -1   2 |

   = |  3/5  -1/5 |
     | -1/5   2/5 |

   = |  0.6  -0.2 |
     | -0.2   0.4 |

验证:AA⁻¹ = 单位矩阵

A × A⁻¹ = | 2  1 |   | 0.6  -0.2 | = | 2×0.6+1×(-0.2)  2×(-0.2)+1×0.4 |
          | 1  3 | × | -0.2  0.4 |   | 1×0.6+3×(-0.2)  1×(-0.2)+3×0.4 |

        = | 1.2 - 0.2  -0.4 + 0.4 | = | 1  0 |
          | 0.6 - 0.6  -0.2 + 1.2 |   | 0  1 |

逆矩阵的几何意义

在几何变换中,逆矩阵对应着"反向变换"。如果矩阵 A 表示一个线性变换,那么 A⁻¹ 表示的就是这个变换的逆变换。例如:

  • 如果 A 表示旋转 30°,那么 A⁻¹ 表示旋转 -30°(反向旋转)
  • 如果 A 表示放大 2 倍,那么 A⁻¹ 表示缩小到 1/2

矩阵的逆参考资料:

3. 矩阵在机器学习中的应用 🤖

为什么机器学习离不开矩阵?因为矩阵是数据的天然表达方式。在机器学习中,我们处理的数据往往是多维的,而矩阵正好可以优雅地表示这些多维数据。

神经网络每一层的计算,本质上就是一个线性变换(通过权重矩阵)加上一个激活函数。换句话说,矩阵就是 AI 的"通用语",是理解数据、构建模型、优化算法的基础。

3.1 数据表示 📐

在机器学习中,数据通常以矩阵形式存储。这里的规矩很简单:每一行代表一个样本,每一列代表一个特征

我们来看个例子。假设我们收集了 100 个人的信息,每个人有 3 个特征:年龄、收入、负债。那这个数据就可以用一个 100×3 的矩阵来表示:

X = | 年龄1  收入1  负债1 |  ← 第1个人
    | 年龄2  收入2  负债2 |  ← 第2个人
    |  ...   ...   ...   |  ← ...
    | 年龄100 收入100 负债100 |  ← 第100个人

为什么要用矩阵?为了批量处理。没有矩阵的话,我们可能得写个循环一个个处理;有了矩阵,NumPy 一下就能算完所有样本,效率完全不是一个量级。

不光是表格数据,图片也是矩阵。一张黑白图片就是一个像素值矩阵,每个数字代表一个像素的灰度。彩色图片更复杂,有 RGB 三个通道,每个通道都是一个矩阵。所以你会看到有人把图片叫"像素矩阵"。

数据表示参考资料:

3.2 线性回归 📈

线性回归是机器学习里的"Hello World"。它的目标很简单:找一条直线(或平面、超平面)来拟合数据。

我们用矩阵形式来表示线性回归,就会发现它特别简洁:

y = Xw + b

这里:

  • X 是数据矩阵(m×n,m个样本,n个特征)
  • w 是权重向量(n×1)
  • b 是偏置(一个数)
  • y 是预测结果(m×1)

你可以把 w 理解为每个特征的重要程度,b 理解为基准线。把特征乘以对应权重再加一起,就是预测值。

梯度下降的矩阵形式特别漂亮,一行就搞定:

w = w - η × (Xᵀ(Xw - y)) / m

如果没有矩阵,这一堆公式得写几十行循环。用 NumPy 的话,一行代码就完事了。这就是矩阵的威力。

线性回归参考资料:

3.3 神经网络 🧠

神经网络是深度学习的核心,而矩阵运算是它的灵魂所在。

神经网络每一层的计算,本质上就是一个线性变换加上激活函数。线性变换就是矩阵乘法,公式很简单:

Z = W × X + b
a =激活函数(Z)

这里:

  • X 是输入(可能是上一个神经元的输出)
  • W 是权重矩阵(这就是网络要学习的参数)
  • b 是偏置向量
  • Z 是线性变换的结果
  • a 是激活后的输出

你可以把 W 理解为"特征提取器"。不同的 W 能让网络识别出不同的模式。训练网络的过程,就是不断调整 W,让它学会提取有用的特征。

批量处理是神经网络用矩阵的另一个原因。一次送入 batch_size 个样本一起算,比一个个算快得多。这也就是为什么 GPU 那么适合训练神经网络——GPU 本来就是为矩阵运算设计的。

神经网络参考资料:

3.4 主成分分析(PCA)🔍

PCA(Principal Component Analysis,主成分分析)是机器学习中最常用的降维方法。简单说,它就是找出数据变化最大的方向,用更少的维度来表示数据。

PCA 的核心就是矩阵的特征值分解。整个过程大概是这样的:

  1. 中心化:每个特征减去均值(让数据以原点为中心)
  2. 算协方差矩阵:C = XᵀX / (n-1),这反映各特征之间的相关性
  3. 特征值分解:对协方差矩阵做特征值分解,得到特征值和特征向量
  4. 选主成分:特征值越大,对应的方向越重要。选前 k 个最大的特征向量构成投影矩阵
  5. 投影:Y = XW,把数据投影到低维空间

为什么要用矩阵?因为这里全是矩阵运算——协方差矩阵是矩阵乘法,特征值分解也是矩阵运算。没有矩阵,这些计算能烦死人。

PCA 在人脸识别、数据可视化、去除噪声等场景用得很多。

PCA 参考资料:

4. 总结 📝

这篇文章我们聊了矩阵的来龙去脉。简单回顾一下:

第一章我们说了矩阵是什么玩意儿——就是一个 m×n 的数表,用来表示线性方程组的系数。矩阵这玩意儿是19世纪英国数学家凯利发明的,最初就是为了更方便地处理方程组。

第二章我们看了矩阵的四则运算:加减乘除、转置、求逆。加减就是对应位置相加减;乘法稍微复杂点,但记住"左列等右行"就能算;转置就是行列互换;逆矩阵就是矩阵世界里的"倒数",只有行列式不为零的矩阵才有逆。

第三章我们重点说了矩阵在机器学习里的应用。搞机器学习,矩阵就是基本功:数据用矩阵表示,线性回归写成 y = Xw + b,神经网络每一层就是 Z = WX + b,PCA 降维本质上是特征值分解。没有矩阵,机器学习根本玩不转。

最后再说一句大实话:咱们搞计算机的,会用 NumPy、Eigen 这些库就行,不需要背公式。重要的是理解概念,知道什么时候该用矩阵、怎么用,这就够了。

最后更新时间:2026-05-02