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 是列数。
行与列的记忆技巧:
- 行 = "行走"时左右移动 → 横着数
- 列 = "列队"时前后站立 → 竖着数
矩阵维度示例:
列1 列2 列3 列4
┌─────┬─────┬─────┬─────┐
行1 │ a₁₁ │ a₁₂ │ a₁₃ │ a₁₄ │
├─────┼─────┼─────┼─────┤
行2 │ a₂₁ │ a₂₂ │ a₂₃ │ a₂₄ │ → 这是一个 2×4 矩阵(2行4列)
└─────┴─────┴─────┴─────┘
编程中的对应:
- 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 = 5 ≠ 0,所以 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 的核心就是矩阵的特征值分解。整个过程大概是这样的:
- 中心化:每个特征减去均值(让数据以原点为中心)
- 算协方差矩阵:C = XᵀX / (n-1),这反映各特征之间的相关性
- 特征值分解:对协方差矩阵做特征值分解,得到特征值和特征向量
- 选主成分:特征值越大,对应的方向越重要。选前 k 个最大的特征向量构成投影矩阵
- 投影:Y = XW,把数据投影到低维空间
为什么要用矩阵?因为这里全是矩阵运算------协方差矩阵是矩阵乘法,特征值分解也是矩阵运算。没有矩阵,这些计算能烦死人。
PCA 在人脸识别、数据可视化、去除噪声等场景用得很多。
PCA 参考资料:
4. 总结 📝
这篇文章我们聊了矩阵的来龙去脉。简单回顾一下:
第一章我们说了矩阵是什么玩意儿------就是一个 m×n 的数表,用来表示线性方程组的系数。矩阵这玩意儿是19世纪英国数学家凯利发明的,最初就是为了更方便地处理方程组。
第二章我们看了矩阵的四则运算:加减乘除、转置、求逆。加减就是对应位置相加减;乘法稍微复杂点,但记住"左列等右行"就能算;转置就是行列互换;逆矩阵就是矩阵世界里的"倒数",只有行列式不为零的矩阵才有逆。
第三章我们重点说了矩阵在机器学习里的应用。搞机器学习,矩阵就是基本功:数据用矩阵表示,线性回归写成 y = Xw + b,神经网络每一层就是 Z = WX + b,PCA 降维本质上是特征值分解。没有矩阵,机器学习根本玩不转。
最后再说一句大实话:咱们搞计算机的,会用 NumPy、Eigen 这些库就行,不需要背公式。重要的是理解概念,知道什么时候该用矩阵、怎么用,这就够了。
最后更新时间:2026-05-02