让我们进一步说明在章节概述中谈到的内容。我们已经看到,向量是有序的数字列表。现在,想象一下不仅将数字排成列表,而是排列成矩形网格,就像电子表格或棋盘一样。这基本上就是矩阵。一个矩阵(复数:matrices)是数字、符号或表达式的矩形排列或表格,它们以行(水平线)和列(垂直线)的方式排列。它们是线性代数中的基本工具,并在机器学习中常用于组织数据、表示变换等方面。矩阵的结构:行、列和元素可以将矩阵看作是整齐排列的数字集合。例如,请看这个矩阵:$$ A = \begin{bmatrix} 1 & 0 & 7 \ -3 & 4 & -2 \ 5 & 2 & 0 \end{bmatrix} $$这个矩阵有:行: 三条水平的数字线。第1行: [1 0 7]第2行: [-3 4 -2]第3行: [5 2 0]列: 三条垂直的数字线。第1列: [1 -3 5]ᵀ (T表示转置,通常用于水平书写列向量)第2列: [0 4 2]ᵀ第3列: [7 -2 0]ᵀ元素(或项): 矩阵中的单个数字。这个矩阵有 $3 \times 3 = 9$ 个元素。矩阵的维度或大小由行数和列数给出,通常写为“行数 $\times$ 列数”。上面的矩阵 $A$ 是一个 $3 \times 3$ 矩阵(读作“三乘三”)。这里是另一个例子:$$ B = \begin{bmatrix} 2.1 & -0.5 \ 1.0 & 3.7 \ 0 & 1.1 \ 4.2 & 0 \end{bmatrix} $$这个矩阵 $B$ 有4行2列,所以它是一个 $4 \times 2$ 矩阵。矩阵与向量的联系你可以将向量(我们在上一章讨论过)视为矩阵的特殊情况:列向量是只有一列的矩阵(一个 $m \times 1$ 矩阵)。 $$ \begin{bmatrix} 1 \ -3 \ 5 \end{bmatrix} \quad \text{(这是一个 } 3 \times 1 \text{ 矩阵)} $$行向量是只有一行的矩阵(一个 $1 \times n$ 矩阵)。 $$ \begin{bmatrix} 1 & 0 & 7 \end{bmatrix} \quad \text{(这是一个 } 1 \times 3 \text{ 矩阵)} $$这种联系有助于理解向量和矩阵运算之间如何关联。为什么使用矩阵?矩阵提供了一种强大的方式来同时表示和操作数字集合。在机器学习中,它们经常被使用:数据集: 典型的数据集可以表示为一个矩阵,其中每行对应一个数据样本(例如客户或图像),每列对应一个特征(例如年龄、价格或像素强度)。图像: 灰度图像可以表示为一个矩阵,其中每个元素都是一个像素的强度。彩色图像通常使用多个矩阵(每个颜色通道一个:红、绿、蓝)。线性变换: 矩阵可以表示几何对象(由向量表示)的旋转、缩放和剪切等运算。模型参数: 许多机器学习模型(如线性回归或神经网络)学习到的权重和偏置通常以矩阵形式存储和操作。矩阵的结构化特性使我们能够定义一致的运算(如加法和乘法,我们很快会讲到),这些运算可以高效地应用于整个数据块。通用矩阵的可视化我们通常用大写字母(如 $A$、$B$、$C$)来表示矩阵。为了指代矩阵中的特定元素,我们使用带有两个下标的小写字母:$a_{ij}$。第一个下标 $i$ 指示行号,第二个下标 $j$ 指示列号。因此,对于一个一般的 $m \times n$ 矩阵 $A$(意为 $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_{21}$ 是第二行第一列的元素。$a_{mn}$ 是最后一行($m$)和最后一列($n$)的元素。digraph G { node [shape=plaintext, fontsize=12]; Matrix [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#e9ecef"> <TR><TD>a<SUB>11</SUB></TD><TD>a<SUB>12</SUB></TD><TD>...</TD><TD>a<SUB>1n</SUB></TD></TR> <TR><TD>a<SUB>21</SUB></TD><TD>a<SUB>22</SUB></TD><TD>...</TD><TD>a<SUB>2n</SUB></TD></TR> <TR><TD>...</TD><TD>...</TD><TD>...</TD><TD>...</TD></TR> <TR><TD>a<SUB>m1</SUB></TD><TD>a<SUB>m2</SUB></TD><TD>...</TD><TD>a<SUB>mn</SUB></TD></TR> </TABLE> >, shape=plain]; }一个一般的 $m \times n$ 矩阵 $A$,显示位于第 $i$ 行第 $j$ 列的元素 $a_{ij}$。索引注意事项: 在数学中,矩阵索引通常从1开始(因此左上角的元素是 $a_{11}$)。然而,在许多编程语言中,包括 Python(及其我们将大量使用的NumPy库),索引从0开始。因此,数学中的元素 $a_{11}$ 对应于 NumPy 中的 A[0, 0],而 $a_{ij}$ 对应于 A[i-1, j-1]。这是一个常见的易混淆之处,所以在将数学表示转换为代码时请记住这一点。现在我们明白了矩阵是什么以及它的结构,接下来我们将研究如何更正式地表示矩阵维度,并查看一些主要的特殊类型矩阵。