设计机器学习应用系统设计机器学习应用系统
首页
讨论区
首页
讨论区
  • 目录
  • 前言

    • 关于作者
    • 关于本文档
  • 机器学习数学基础

    • 线性代数

      • 引言:机器学习的语言
      • 向量基础
      • 矩阵基础
      • 数据处理实践
    • 微积分

      • 引言:变化与累积
      • 极限、导数与微分
      • 多元函数与复合函数求导
      • 微积分计算实践
    • 统计与概率

      • 引言:概率性思维
      • 概率基础
      • 统计推断
      • 概率统计实践
  • 经典统计学习方法

    • 线性模型

      • 线性回归
      • 逻辑回归
      • 正则化与广义线性模型
    • 贝叶斯方法

      • 朴素贝叶斯
      • 贝叶斯网络
      • EM 算法
    • 支持向量机

      • 支持向量机
      • 核技巧
    • 决策树与集成

      • 决策树
      • 随机森林
      • 提升方法
    • 无监督学习

      • 聚类
      • 降维
  • 神经网络与深度学习

    • 神经网络结构

      • 神经网络基础原理
      • 线性感知机
      • 多层感知机
      • 前向传播
      • 反向传播
      • 激活函数与损失函数
    • 优化神经网络

      • 梯度下降
      • 自适应优化器
    • 深层网络稳定性

      • 权重初始化
      • Dropout 正则化
      • 批归一化
    • 卷积神经网络

      • CNN 基础原理
      • AlexNet 与 CNN 复兴
      • VGG 与 GoogLeNet
      • ResNet 残差网络
      • 工程实训:AlexNet 图像分类实验
    • 生成式模型

      • 变分自编码器
      • 生成式对抗网络
      • 工程实训:DCGAN 图像生成实验
    • 序列模型

      • 词嵌入与表示学习
      • RNN 基础原理
      • LSTM 与 GRU 门控机制
      • Seq2Seq 序列映射
      • 工程实训:LSTM 古诗词生成实验
  • 语言模型的奇点

    • Transformer 架构

      • Transformer 基础原理
      • Transformer 演进与变体
      • 语言模型与分词
      • 工程实训:Transformer 模型训练实验
    • 预训练与微调

      • 预训练数据工程
      • 缩放定律
    • 对齐训练

    • 推理能力

    • 前沿与融合

  • AI Infra & 应用(名字待定)

  • 机器学习经典论文

  • 附录

    • 构建沙箱环境
    • 临时格式测试页面

矩阵基础

矩阵是向量的自然扩展,也是线性代数的核心研究对象。如果说向量是单个数据点,那么矩阵就是数据集或变换规则。本章将系统地介绍矩阵的定义、运算规则及矩阵的几何意义 —— 线性变换。

矩阵的概念与应用

矩阵(Matrix)是由标量按行列排列成的矩形阵列,如同向量将标量从零阶扩展到一阶,矩阵则把向量从一阶扩展到了二阶。习惯上,人们常用粗体、大写字母来表示矩阵。一个 m×nm \times nm×n 的矩阵 A\mathbf{A}A 包含 mmm 行 nnn 列元素。矩阵的维度记为 m×nm \times nm×n,其中 mmm 是行数(rows),nnn 是列数(columns)。矩阵具有相同数量的行和列时被称为方阵(Square Matrix),其形状为正方形。

A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn]\mathbf{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=​a11​a21​⋮am1​​a12​a22​⋮am2​​⋯⋯⋱⋯​a1n​a2n​⋮amn​​​

矩阵 A\mathbf{A}A 的第 iii 行第 jjj 列元素记为 aija_{ij}aij​ 或 (A)ij(\mathbf{A})_{ij}(A)ij​。在 NumPy 中,矩阵可以用二维数组表示,譬如,一个 2×32 \times 32×3 的矩阵有 2 行 3 列:

import numpy as np

# 创建 2×3 矩阵
A = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

print(f"矩阵形状:{A.shape}")     # (2, 3)
print(f"行数:{A.shape[0]}")      # 2
print(f"列数:{A.shape[1]}")      # 3
print(f"元素 a[0,1]: {A[0, 1]}")  # 2(第 0 行第 1 列,0-indexed)
点击 Run 按钮执行代码

矩阵是机器学习和数据科学的基础性工具。可以把矩阵想象成 Excel 的数据表,通过行、列参数就能定位到数据,但它能做的远不止存储数据。这里列举一些矩阵的应用场景:

  • 数据集表示:矩阵是机器学习的"原材料",把矩阵想象成一张数据表格:每行是一个样本(譬如一位用户、一张图片),每列是一个特征(比如年龄、价格、像素值)。这种结构让计算机能高效处理成千上万的数据点。

  • 线性变换:矩阵是数据的"转换器",把矩阵想象成一种数据操作和变形的工具,能把数据从一种形态转换成另一种。譬如把二维平面上的点旋转 45 度,或者把三维物体投影到二维屏幕,这些操作都可以用矩阵乘法表示。m×nm \times nm×n 的矩阵可以将 nnn 维的数据"压缩"或"扩展"成 mmm 维。这在降维中特别有用,将高维复杂数据变成低维简洁表示。

  • 权重矩阵:矩阵是神经网络的"记忆",神经网络的核心就是权重矩阵,人们谈及大模型 8B、32B、671B 等这些百亿、千亿的参数数量,实际所说的就是权重矩阵的长度。想象大脑神经元之间的连接:有的连接强,有的弱。权重矩阵记录了这些连接强度,矩阵的每个元素 wijw_{ij}wij​ 表示"第 iii 个神经元对第 jjj 个神经元的影响有多大"。神经网络学习的过程,本质上就是在调整这些权重矩阵中的数值。

  • 协方差矩阵:矩阵是变量间的"默契度",协方差矩阵可以回答一组变量是怎么一起变动的。它以正数表示正相关,"同进退"(气温和冰淇淋销量);以负数表示负相关,"唱反调"(海拔和气温),以接近零表示不相关,"各玩各的"(智商和鞋码)。

  • 邻接矩阵:矩阵是关系的"地图",社交网络、交通路线、网页链接,等都可以用邻接矩阵表示。矩阵中 aija_{ij}aij​ 表示"从节点 iii 到节点 jjj 是否有连接"。这种表示让图算法(如 PageRank、推荐系统)能够高效计算。

矩阵的运算

同向量一样,矩阵同样支持加法、数乘、乘法运算,但是会有一些前提约束:两个矩阵必须具有相同的维度(相同的行数和列数)才能够进行加法运算,两个矩阵必须满足第一个矩阵的列数必须等于第二个矩阵的行数(内维匹配)才能进行乘法运算。

  • 矩阵加法:矩阵相加的结果是对应元素相加:(A+B)ij=aij+bij(\mathbf{A} + \mathbf{B})_{ij} = a_{ij} + b_{ij}(A+B)ij​=aij​+bij​,矩阵加法满足:

    • 交换律:A+B=B+A\mathbf{A} + \mathbf{B} = \mathbf{B} + \mathbf{A}A+B=B+A
    • 结合律:(A+B)+C=A+(B+C)(\mathbf{A} + \mathbf{B}) + \mathbf{C} = \mathbf{A} + (\mathbf{B} + \mathbf{C})(A+B)+C=A+(B+C)
  • 矩阵数乘:标量与矩阵相乘,结果是原矩阵的每个元素都乘以该标量:(cA)ij=c⋅aij(c\mathbf{A})_{ij} = c \cdot a_{ij}(cA)ij​=c⋅aij​

  • 矩阵乘法:矩阵乘法是矩阵运算的核心。设 A\mathbf{A}A 是 m×pm \times pm×p 矩阵,B\mathbf{B}B 是 p×np \times np×n 矩阵,则它们的乘积 C=AB\mathbf{C} = \mathbf{AB}C=AB 是 m×nm \times nm×n 矩阵:cij=∑k=1paikbkj=ai1b1j+ai2b2j+⋯+aipbpjc_{ij} = \sum_{k=1}^{p} a_{ik} b_{kj} = a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{ip}b_{pj}cij​=∑k=1p​aik​bkj​=ai1​b1j​+ai2​b2j​+⋯+aip​bpj​。即 C\mathbf{C}C 的第 iii 行第 jjj 列元素等于 A\mathbf{A}A 的第 iii 行与 B\mathbf{B}B 的第 jjj 列的内积。矩阵乘法满足:

    • 结合律:(AB)C=A(BC)(\mathbf{AB})\mathbf{C} = \mathbf{A}(\mathbf{BC})(AB)C=A(BC)
    • 数乘结合律:c(AB)=(cA)B=A(cB)c(\mathbf{AB}) = (c\mathbf{A})\mathbf{B} = \mathbf{A}(c\mathbf{B})c(AB)=(cA)B=A(cB)
    • 分配律:A(B+C)=AB+AC\mathbf{A}(\mathbf{B} + \mathbf{C}) = \mathbf{AB} + \mathbf{AC}A(B+C)=AB+AC

    但是,矩阵乘法不满足交换律,一般情况下,AB≠BA\mathbf{AB} \neq \mathbf{BA}AB=BA。甚至于 BA\mathbf{BA}BA 都未必是一个合法的结果,它未必能满足内维匹配要求。下面是一个 3×23 \times 23×2 矩阵与 2×32 \times 32×3 矩阵相乘的具体示例,结果为 3×33 \times 33×3 矩阵:

A=[123456],B=[123456],AB=[1⋅1+2⋅41⋅2+2⋅51⋅3+2⋅63⋅1+4⋅43⋅2+4⋅53⋅3+4⋅65⋅1+6⋅45⋅2+6⋅55⋅3+6⋅6]=[91215192633294051]\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}, \quad \mathbf{AB} = \begin{bmatrix} 1 \cdot 1 + 2 \cdot 4 & 1 \cdot 2 + 2 \cdot 5 & 1 \cdot 3 + 2 \cdot 6 \\ 3 \cdot 1 + 4 \cdot 4 & 3 \cdot 2 + 4 \cdot 5 & 3 \cdot 3 + 4 \cdot 6 \\ 5 \cdot 1 + 6 \cdot 4 & 5 \cdot 2 + 6 \cdot 5 & 5 \cdot 3 + 6 \cdot 6 \end{bmatrix} = \begin{bmatrix} 9 & 12 & 15 \\ 19 & 26 & 33 \\ 29 & 40 & 51 \end{bmatrix}A=​135​246​​,B=[14​25​36​],AB=​1⋅1+2⋅43⋅1+4⋅45⋅1+6⋅4​1⋅2+2⋅53⋅2+4⋅55⋅2+6⋅5​1⋅3+2⋅63⋅3+4⋅65⋅3+6⋅6​​=​91929​122640​153351​​
  • 矩阵外积(Outer Product):向量外积是矩阵乘法的特例,它将一个列向量与一个行向量相乘,得到一个矩阵。设 u\mathbf{u}u 是 mmm 维列向量,v\mathbf{v}v 是 nnn 维列向量,则它们的外积 uvT\mathbf{u} \mathbf{v}^TuvT 是一个 m×nm \times nm×n 矩阵:(uvT)ij=ui⋅vj(\mathbf{u} \mathbf{v}^T)_{ij} = u_i \cdot v_j(uvT)ij​=ui​⋅vj​。外积的每一行都是向量 vT\mathbf{v}^TvT 的标量倍数,因此外积矩阵的秩当两个向量都非零时为 1。外积在机器学习中有广泛应用,如协方差矩阵计算、主成分分析、低秩矩阵近似等。以下是一个 3×13 \times 13×1 列向量与 1×21 \times 21×2 行向量外积的具体示例,结果为 3×23 \times 23×2 矩阵:
u=[123],vT=[45],uvT=[1⋅41⋅52⋅42⋅53⋅43⋅5]=[458101215]\mathbf{u} = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}, \quad \mathbf{v}^T = \begin{bmatrix} 4 & 5 \end{bmatrix}, \quad \mathbf{u} \mathbf{v}^T = \begin{bmatrix} 1 \cdot 4 & 1 \cdot 5 \\ 2 \cdot 4 & 2 \cdot 5 \\ 3 \cdot 4 & 3 \cdot 5 \end{bmatrix} = \begin{bmatrix} 4 & 5 \\ 8 & 10 \\ 12 & 15 \end{bmatrix}u=​123​​,vT=[4​5​],uvT=​1⋅42⋅43⋅4​1⋅52⋅53⋅5​​=​4812​51015​​

从代数角度看,矩阵乘法运算过程是一系列繁琐的加、乘法运算,可是它的几何意义却十分简洁,就是连续的 A\mathbf{A}A、B\mathbf{B}B 两次线性变换(见本文的线性变换一节),这是人类理解矩阵乘法的捷径,代数公式是上帝留给计算机去使用的。

另外,在讲解向量内积时提到过,向量、矩阵的乘法根据上下文可能有不同含义,要注意通过符号写法区分。矩阵乘法的写法就是"AB\mathbf{AB}AB",这里并不是像初等代数乘法那般中间省略了乘号。如果在文献中看到 A∗B\mathbf{A} * \mathbf{B}A∗B 或者 A⊙B\mathbf{A} \odot \mathbf{B}A⊙B,所指的其实是矩阵的 Hadamard 积(逐元素乘积),它是指两个维度完全一样的矩阵,对应位置的元素逐个相乘,形成另一个维度一样的矩阵: (A⊙B)ij=aij⋅bij(1≤i≤m, 1≤j≤n)(\mathbf{A} \odot \mathbf{B})_{ij} = a_{ij} \cdot b_{ij} \quad (1 \leq i \leq m,\ 1 \leq j \leq n)(A⊙B)ij​=aij​⋅bij​(1≤i≤m, 1≤j≤n)

矩阵的转置和逆

除加法、数乘、乘法这些二元运算外,矩阵还有"转置"和"求逆"两种常见的一元运算:

  • 矩阵的转置(Transpose)是一种将矩阵的行列互换的操作。设 A\mathbf{A}A 是 m×nm \times nm×n 矩阵,其转置 AT\mathbf{A}^TAT 是 n×mn \times mn×m 矩阵:(AT)ij=aji(\mathbf{A}^T)_{ij} = a_{ji}(AT)ij​=aji​。转置具备如下性质:

    • (AT)T=A(\mathbf{A}^T)^T = \mathbf{A}(AT)T=A(转置的转置就是原矩阵,就像把表格横着看变成竖着看,再变回横着看,又回到原样)
    • (A+B)T=AT+BT(\mathbf{A} + \mathbf{B})^T = \mathbf{A}^T + \mathbf{B}^T(A+B)T=AT+BT
    • (cA)T=cAT(c\mathbf{A})^T = c\mathbf{A}^T(cA)T=cAT
    • (AB)T=BTAT(\mathbf{AB})^T = \mathbf{B}^T \mathbf{A}^T(AB)T=BTAT(乘积的转置等于转置的反向乘积)

    尤其是第四条性质,是后续学习误差反向传播算法的理论依据,(AB)T=BTAT(\mathbf{AB})^T = \mathbf{B}^T\mathbf{A}^T(AB)T=BTAT 确保了反向传播时梯度能够正确地"逆流"回每一层,保持维度匹配,这是自动微分和深度学习框架(PyTorch、TensorFlow)能够高效计算梯度的数学基础。

    以下是一个 3×33 \times 33×3 矩阵与其转置的具体示例,可以看到,原矩阵的第一行 (1,2,3)(1, 2, 3)(1,2,3) 变成了转置矩阵的第一列,第二行 (4,5,6)(4, 5, 6)(4,5,6) 变成了第二列,第三行 (7,8,9)(7, 8, 9)(7,8,9) 变成了第三列,实现了行列互换。

    A=[123456789],AT=[147258369]\mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}, \quad \mathbf{A}^T = \begin{bmatrix} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{bmatrix}A=​147​258​369​​,AT=​123​456​789​​
  • 矩阵的求逆(Inverse)是一种"撤销"原矩阵的线性变换,回到原始状态的操作。对于方阵 A\mathbf{A}A,如果存在矩阵 B\mathbf{B}B 使得:AB=BA=I\mathbf{AB} = \mathbf{BA} = \mathbf{I}AB=BA=I,则称 A\mathbf{A}A 可逆(Invertible),B\mathbf{B}B 称为 A\mathbf{A}A 的逆矩阵,记为 A−1\mathbf{A}^{-1}A−1。逆矩阵具备如下性质:

    • (A−1)−1=A(\mathbf{A}^{-1})^{-1} = \mathbf{A}(A−1)−1=A(撤销的撤销 = 原样。就像"取消撤销"就是回到最初的样子)
    • (AB)−1=B−1A−1(\mathbf{AB})^{-1} = \mathbf{B}^{-1} \mathbf{A}^{-1}(AB)−1=B−1A−1(先穿袜子再穿鞋,脱的时候要倒过来,先脱鞋再脱袜子)
    • (AT)−1=(A−1)T(\mathbf{A}^T)^{-1} = (\mathbf{A}^{-1})^T(AT)−1=(A−1)T(转置和求逆可以交换顺序)
    • (cA)−1=1cA−1,c≠0(c\mathbf{A})^{-1} = \frac{1}{c}\mathbf{A}^{-1} , c \neq 0(cA)−1=c1​A−1,c=0(放大 ccc 倍的变换操作,其逆就是缩小到原来的 1c\frac{1}{c}c1​)

    以下是一个 2×22 \times 22×2 矩阵与其逆矩阵的具体示例:

    A=[2153],A−1=[3−1−52],AA−1=[2⋅3+1⋅(−5)2⋅(−1)+1⋅25⋅3+3⋅(−5)5⋅(−1)+3⋅2]=[1001]=I2\mathbf{A} = \begin{bmatrix} 2 & 1 \\ 5 & 3 \end{bmatrix}, \quad \mathbf{A}^{-1} = \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix}, \quad \mathbf{A} \mathbf{A}^{-1} = \begin{bmatrix} 2 \cdot 3 + 1 \cdot (-5) & 2 \cdot (-1) + 1 \cdot 2 \\ 5 \cdot 3 + 3 \cdot (-5) & 5 \cdot (-1) + 3 \cdot 2 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \mathbf{I}_2A=[25​13​],A−1=[3−5​−12​],AA−1=[2⋅3+1⋅(−5)5⋅3+3⋅(−5)​2⋅(−1)+1⋅25⋅(−1)+3⋅2​]=[10​01​]=I2​

    不是所有操作都可以撤销,不是所有方阵都可逆。矩阵可逆的条件,需要同时满足行列式不为零(det⁡(A)≠0\det(\mathbf{A}) \neq 0det(A)=0)、满秩(对于 n×nn \times nn×n 方阵有 rank(A)=n\text{rank}(\mathbf{A}) = nrank(A)=n)和所有特征值都不为零这三个条件的方阵才可逆。当矩阵不可逆或索性就不是方阵时,可以使用伪逆(Pseudoinverse)获得一个最接近的近似解。伪逆记为 A+=(ATA)−1AT\mathbf{A}^+ = (\mathbf{A}^T \mathbf{A})^{-1} \mathbf{A}^TA+=(ATA)−1AT(当 ATA\mathbf{A}^T \mathbf{A}ATA 可逆时)。这个公式的含义是先通过 ATA\mathbf{A}^T \mathbf{A}ATA 将 m×nm \times nm×n 矩阵裁剪成 n×nn \times nn×n 方阵,把多余的信息过滤掉,保留核心结构。然后在此基础上找到一个最接近的逆,最后乘以 AT\mathbf{A}^TAT 映射回原始空间。伪逆具备如下性质:

    • AA+A=A\mathbf{A}\mathbf{A}^+\mathbf{A} = \mathbf{A}AA+A=A
    • A+AA+=A+\mathbf{A}^+\mathbf{A}\mathbf{A}^+ = \mathbf{A}^+A+AA+=A+
    • (AA+)T=AA+(\mathbf{A}\mathbf{A}^+)^T = \mathbf{A}\mathbf{A}^+(AA+)T=AA+
    • (A+A)T=A+A(\mathbf{A}^+\mathbf{A})^T = \mathbf{A}^+\mathbf{A}(A+A)T=A+A

    不要靠记忆代数公式来理解矩阵的逆,最好是从逆矩阵的意图上去理解它(不妨看看逆矩阵性质后面的文字注释)。譬如,将矩阵的变换操作想象成你对图片的 PS 的操作,想把图片完全恢复原状这就是求逆矩阵 A−1\mathbf{A}^{-1}A−1。图片能够完美恢复的前提是变换没有产生有效信息丢失:行列式为零就代表把图片的长度或者宽度完全压扁了,有效信息丢了;不满秩就表示部分信息是冗余的,图片中的某些区域被其他位置的相同片段给粘贴覆盖住,有效信息丢了;特征值为零代表某个方向上信息完全"塌陷"掉,图片原本是彩色的,有 RGB 三条通道,现在蓝色和红色通道数值都为零,只剩下绿色的灰度图片,有效信息丢了。无论是哪一类,只要丢失了有效信息,就不再可能完美复原数据。

    类似地,伪逆就可以直观理解为一种"尽量还原信息"的操作,想象你用相机(A\mathbf{A}A)给三维物体拍照,如果使用的是专业三维扫描相机才能保证不丢失信息,完美还原三维物体。如果是普通相机,只能得到一张平面照片,这就是用伪逆找到"最像原物体"的三维重建,虽然不完美,但是在最小二乘意义下的最优解,A+\mathbf{A}^+A+ 就是那个"从照片反推最可能原物体"的操作。

特殊矩阵

在矩阵运算中,有一类矩阵因其简洁的结构而具有特殊的代数性质。它们就像是数字世界中的"标准件",虽然形式简单,却能简化复杂的运算、揭示问题的本质,并在求解线性方程组、坐标变换等场景中扮演关键角色。下面介绍几种最重要的特殊矩阵:

  • 单位矩阵(Identity Matrix):I\mathbf{I}I 是主对角线元素为 1、其余为 0 的方阵,单位矩阵是矩阵乘法的"单位元",满足: AI=IA=A\mathbf{AI} = \mathbf{IA} = \mathbf{A}AI=IA=A。

    In=[10⋯001⋯0⋮⋮⋱⋮00⋯1]\mathbf{I}_n = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix}In​=​10⋮0​01⋮0​⋯⋯⋱⋯​00⋮1​​
  • 对角矩阵(Diagonal Matrix):对角矩阵是除主对角线外,其他元素都为 0 的方阵,对角矩阵左乘向量,相当于对向量的每个分量进行独立缩放。

    D=[d1000d2000d3]\mathbf{D} = \begin{bmatrix} d_1 & 0 & 0 \\ 0 & d_2 & 0 \\ 0 & 0 & d_3 \end{bmatrix}D=​d1​00​0d2​0​00d3​​​
  • 对称矩阵(Symmetric Matrix):对称矩阵满足 A=AT\mathbf{A} = \mathbf{A}^TA=AT,即 aij=ajia_{ij} = a_{ji}aij​=aji​。对称矩阵包含的特征向量可以构成正交基,许多有用的矩阵如协方差矩阵、邻接矩阵、Hessian 矩阵都是对称矩阵。

  • 正交矩阵(Orthogonal Matrix):正交矩阵满足 QTQ=I\mathbf{Q}^T \mathbf{Q} = \mathbf{I}QTQ=I,即其转置等于其逆:Q−1=QT\mathbf{Q}^{-1} = \mathbf{Q}^TQ−1=QT。正交矩阵的作用在于它保持向量的长度和角度不变,只进行旋转或反射。

线性变换的几何直观

假设你有一张印在橡皮膜上的照片,对它进行的各种操作:拉伸、旋转、剪切、翻转。只要不把膜弄皱(保持直线还是直线),不把膜撕裂(保持相邻的点仍然相邻),那么这些操作本质上就都算是线性变换。从代数角度看,线性变换是"一个矩阵乘以一个向量得到另一个向量",虽然从代数公式可以准确地计算出结果,但是并不容易理解矩阵里的数字到底代表什么?每个数字与向量元素的运算又代表了什么?所以,我们继续从几何直观上寻找突破口。

想象你站在原点,面前是坐标系和许多向量,每个向量 v\mathbf{v}v 就像从原点出发的一支箭,指向空间中的某个位置。现在,你要把这整片空间中所有的向量进行"变形",譬如沿着 x 轴拉长,沿着 y 轴方向压扁、再整体旋转 30 度,该怎么描述这个变形操作?一个有价值的洞察是你完全不需要为每个向量独立描述一套操作,只要知道基向量发生了什么变化(拉伸、旋转等),就能确定整个空间中所有向量共同的变形方式,因为一旦空间坐标轴的发生变化,这些向量都会同步被改变。从最简单的在二维平面出发,原来的基向量是 e1=[10]\mathbf{e}_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix}e1​=[10​](沿 x 轴的单位向量)和 e2=[01]\mathbf{e}_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}e2​=[01​](沿 y 轴的单位向量)。

如果变形后,e1\mathbf{e}_1e1​ 被搬到了 [ac]\begin{bmatrix} a \\ c \end{bmatrix}[ac​],e2\mathbf{e}_2e2​ 被搬到了 [bd]\begin{bmatrix} b \\ d \end{bmatrix}[bd​]。那么任意一个向量 v=[xy]=xe1+ye2\mathbf{v} = \begin{bmatrix} x \\ y \end{bmatrix} = x\mathbf{e}_1 + y\mathbf{e}_2v=[xy​]=xe1​+ye2​ 会被搬到哪里呢?由于线性变换保持"线性组合"不变的特性,即一旦基向量(空间中的坐标轴)自被移动了,它们的线性组合也会按同样的比例被移动。所以:

v′=x[ac]+y[bd]=[ax+bycx+dy]\mathbf{v}' = x\begin{bmatrix} a \\ c \end{bmatrix} + y\begin{bmatrix} b \\ d \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix}v′=x[ac​]+y[bd​]=[ax+bycx+dy​]

这正好就矩阵乘法的结果相吻合:

[abcd][xy]=[ax+bycx+dy]\begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix}[ac​bd​][xy​]=[ax+bycx+dy​]

所以,以几何视角来看,矩阵的每一列,记录信息本质是基向量被移动到了哪里去。第一列是 x 轴单位向量的新位置,第二列是 y 轴单位向量的新位置,以此类推。矩阵乘向量,就是"把这个向量用基向量重新组装一次"。将上述思想落实到一个具体的例子,假设有一个矩阵:A=[2101]\mathbf{A} = \begin{bmatrix} 2 & 1 \\ 0 & 1 \end{bmatrix}A=[20​11​],它的几何含义是:

  • 第一列 [20]\begin{bmatrix} 2 \\ 0 \end{bmatrix}[20​]:x 轴被拉长到了原来的 2 倍(从 (1,0)(1,0)(1,0) 搬到 (2,0)(2,0)(2,0))
  • 第二列 [11]\begin{bmatrix} 1 \\ 1 \end{bmatrix}[11​]:y 轴被"倾斜"了(从 (0,1)(0,1)(0,1) 搬到 (1,1)(1,1)(1,1))

这就像是把一张正方形网格,先沿 x 方向拉伸,再向右上方剪切。如果平面中原来一个单位正方形(由 (0,0),(1,0),(1,1),(0,1)(0,0), (1,0), (1,1), (0,1)(0,0),(1,0),(1,1),(0,1) 围成),现在它就变成平行四边形了。

线性变换:正方形变平行四边形

图:线性变换样例 - 正方形变平行四边形

至此,我们可以总结代数公式与几何直观的联系了:矩阵乘法中的每个元素 aija_{ij}aij​,描述的是"第 jjj 个基向量对第 iii 个坐标轴的贡献"。第一行 a,ba, ba,b 控制的是新向量的 x 坐标由哪些基向量的原始分量贡献;第二行 c,dc, dc,d 控制的是 y 坐标。这样,几何上的"拉伸、旋转、剪切"就转化成了代数上的"乘法与加法"。矩阵的每一列代表一个基向量变换后的新位置,整个空间就像一张被拉伸、旋转或剪切的橡皮布,而矩阵记录了每个坐标轴"搬到哪里去了"。

矩阵向量积

矩阵向量积(Matrix-Vector Product)是机器学习中最常见的运算形式,也是线性变换的直接应用。设 A\mathbf{A}A 是 m×nm \times nm×n 矩阵,v\mathbf{v}v 是 nnn 维列向量(可视作 n×1n \times 1n×1 的矩阵),则矩阵向量积 Av\mathbf{Av}Av 是 mmm 维向量。每个元素的计算公式为:

(Av)i=∑j=1naijvj=ai1v1+ai2v2+⋯+ainvn(\mathbf{Av})_i = \sum_{j=1}^{n} a_{ij} v_j = a_{i1}v_1 + a_{i2}v_2 + \cdots + a_{in}v_n(Av)i​=j=1∑n​aij​vj​=ai1​v1​+ai2​v2​+⋯+ain​vn​

即结果向量的第 iii 个元素等于矩阵第 iii 行与向量的内积。从维度匹配角度看,矩阵的列数必须等于向量的维度(内维匹配),这是矩阵向量积唯一的前提约束。以下是一个 2×32 \times 32×3 矩阵与 3 维向量相乘的具体示例:

A=[123456],v=[123],Av=[1⋅1+2⋅2+3⋅34⋅1+5⋅2+6⋅3]=[1432]\mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}, \quad \mathbf{v} = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}, \quad \mathbf{Av} = \begin{bmatrix} 1 \cdot 1 + 2 \cdot 2 + 3 \cdot 3 \\ 4 \cdot 1 + 5 \cdot 2 + 6 \cdot 3 \end{bmatrix} = \begin{bmatrix} 14 \\ 32 \end{bmatrix}A=[14​25​36​],v=​123​​,Av=[1⋅1+2⋅2+3⋅34⋅1+5⋅2+6⋅3​]=[1432​]
import numpy as np

A = np.array([
    [1, 2, 3],
    [4, 5, 6]
])
v = np.array([1, 2, 3])

# 方法一:np.dot
result1 = np.dot(A, v)
print(f"np.dot 结果: {result1}")  # [14 32]

# 方法二:@ 运算符(推荐)
result2 = A @ v
print(f"@ 运算符结果: {result2}")  # [14 32]

# 验证维度变化
print(f"矩阵形状: {A.shape}, 向量形状: {v.shape}, 结果形状: {result2.shape}")
# (2, 3), (3,), (2,)
点击 Run 按钮执行代码

矩阵向量积的几何意义是把线性变换应用到具体向量上。回顾前文线性变换的几何直观一节,矩阵的每一列记录了基向量被移动后的新位置。当矩阵乘以向量 v=(v1,v2,…,vn)T\mathbf{v} = (v_1, v_2, \ldots, v_n)^Tv=(v1​,v2​,…,vn​)T 时,本质上是把向量 v\mathbf{v}v 用新的基向量重新组装,每个分量 vjv_jvj​ 表示"第 jjj 个基向量的原始权重",而矩阵第 jjj 列则告诉这个基向量"搬到了哪里去"。

譬如,在神经网络的前向传播中,每一层的计算核心就是矩阵向量积:

h=Wx+b\mathbf{h} = \mathbf{W}\mathbf{x} + \mathbf{b}h=Wx+b

其中 x\mathbf{x}x 是输入向量(上一层的输出),W\mathbf{W}W 是权重矩阵,b\mathbf{b}b 是偏置向量,h\mathbf{h}h 是本层的输出。权重矩阵 W\mathbf{W}W 把输入从 nnn 维空间"映射"到 mmm 维空间(W\mathbf{W}W 为 m×nm \times nm×n 矩阵),这个映射过程就是一次线性变换。

特征向量与特征值

机器学习领域有一句广为流传的名言:"数据决定了模型的上限,算法只是逼近这个上限"。这句话出自 2009 年 Google 研究员吴恩达(Andrew Ng)在一次机器学习讲座中的总结,它强调了数据质量对模型性能的决定性作用。而特征工程(Feature Engineering)正是提升数据质量的主要手段,它将原始数据转化为更能表达问题本质的特征表示,使模型更容易学习到数据中的规律。

特征值与特征向量的概念已经有很长的历史,18 世纪,欧拉在研究旋转刚体的运动方程时,发现了与特征值相关的数学结构 —— 刚体的旋转轴方向在变换下保持不变。这一发现当时并未引起广泛关注,但随后在微分方程、振动分析等领域反复出现。1904 年,德国数学家大卫·希尔伯特(David Hilbert)正式引入了"Eigen"这一术语(德语意为"自身的"、"固有的"),用以强调这些值和向量是矩阵固有的内在属性,而非偶然的数值巧合。中文将其译为"特征",取"特有征象"之意。

从数学定义看,对于 n×nn \times nn×n 方阵 A\mathbf{A}A,如果存在非零向量 v\mathbf{v}v 和标量 λ\lambdaλ,满足:Av=λv\mathbf{A}\mathbf{v} = \lambda\mathbf{v}Av=λv,则称 v\mathbf{v}v 为 A\mathbf{A}A 的特征向量,λ\lambdaλ 为对应的特征值。用一个具体例子来理解这个定义。考虑矩阵 A=[2112]\mathbf{A} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}A=[21​12​],取向量 v=[11]\mathbf{v} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}v=[11​]。计算 Av\mathbf{A}\mathbf{v}Av:

Av=[2112][11]=[2⋅1+1⋅11⋅1+2⋅1]=[33]=3[11]=3v\mathbf{A}\mathbf{v} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 2 \cdot 1 + 1 \cdot 1 \\ 1 \cdot 1 + 2 \cdot 1 \end{bmatrix} = \begin{bmatrix} 3 \\ 3 \end{bmatrix} = 3 \begin{bmatrix} 1 \\ 1 \end{bmatrix} = 3\mathbf{v}Av=[21​12​][11​]=[2⋅1+1⋅11⋅1+2⋅1​]=[33​]=3[11​]=3v

结果 Av=3v\mathbf{A}\mathbf{v} = 3\mathbf{v}Av=3v 正好符合定义的形式!这说明 v=[11]\mathbf{v} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}v=[11​] 是 A\mathbf{A}A 的特征向量,对应的特征值 λ=3\lambda = 3λ=3。几何上,v\mathbf{v}v 指向第一象限的 45°45°45° 方向,矩阵 A\mathbf{A}A 在这个方向上的作用只是把向量"拉长"了 3 倍,方向不变。再考虑另一个向量 u=[1−1]\mathbf{u} = \begin{bmatrix} 1 \\ -1 \end{bmatrix}u=[1−1​]:

Au=[2112][1−1]=[2⋅1+1⋅(−1)1⋅1+2⋅(−1)]=[1−1]=1u\mathbf{A}\mathbf{u} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \begin{bmatrix} 1 \\ -1 \end{bmatrix} = \begin{bmatrix} 2 \cdot 1 + 1 \cdot (-1) \\ 1 \cdot 1 + 2 \cdot (-1) \end{bmatrix} = \begin{bmatrix} 1 \\ -1 \end{bmatrix} = 1\mathbf{u}Au=[21​12​][1−1​]=[2⋅1+1⋅(−1)1⋅1+2⋅(−1)​]=[1−1​]=1u

同样满足 Au=1u\mathbf{A}\mathbf{u} = 1\mathbf{u}Au=1u!u\mathbf{u}u 也是特征向量,对应特征值 λ=1\lambda = 1λ=1。几何上,u\mathbf{u}u 指向第四象限的 −45°-45°−45° 方向,矩阵 A\mathbf{A}A 在这个方向上保持向量长度不变。这个 2×22 \times 22×2 矩阵恰好有两个正交的特征方向:45°45°45° 方向拉伸 3 倍,−45°-45°−45° 方向保持不变。

特征向量的几何可视化

图:特征向量的几何可视化

图中蓝色向量 v\mathbf{v}v 指向 45°45°45° 方向,经矩阵 A\mathbf{A}A 变换后(红色)被拉伸 3 倍,方向不变;绿色向量 u\mathbf{u}u 指向 −45°-45°−45° 方向,经变换后(橙色)长度保持不变。这正是特征向量的核心特性:在特征方向上,矩阵变换仅表现为缩放。以上例子揭示了一个深刻的事实:在一般情况下,矩阵作用于向量会产生复杂的变化,既改变方向又改变长度;但在特征向量所指示的特殊方向上,矩阵变换收敛为最简单的形式:只进行缩放,方向保持不变。缩放的比例正是特征值 λ\lambdaλ,若 λ>1\lambda > 1λ>1,向量被放大;若 0<λ<10 < \lambda < 10<λ<1,向量被压缩;若 λ<0\lambda < 0λ<0,方向反转后再缩放。

这一几何直觉在物理和工程中有着丰富的对应:振动系统中,特征向量指向"固有振动模式"的方向,特征值决定振动频率;量子力学里,测量算符的特征值就是可观测物理量的可能取值,特征向量对应各量子态;控制理论中,系统矩阵的特征值分布决定了系统是否稳定,所有特征值位于单位圆内意味着系统收敛,任何一个超出则会导致发散。正是这种"捕捉系统本质行为"的能力,使特征值分解成为降维、压缩、稳定性分析等任务的数学核心。

张量

如同向量将标量从零阶扩展到一阶,矩阵将向量从一阶扩展到二阶,张量(Tensor)更一般地扩展到了 nnn 阶。张量是标量、向量、矩阵在高维空间的自然推广,可以描述任意维度的数据及其变换关系。一个 nnn 阶张量包含 nnn 个索引,每个索引对应一个维度。

阶数名称维度描述NumPy 表示
0标量无方向,只有大小x (标量值)
1向量一行或一列shape = (n,)
2矩阵行 × 列shape = (m, n)
3三阶张量行 × 列 × 通道 / 深度shape = (h, w, c)
nnnnnn阶张量维度 1 × 维度 2 × ... × 维度nnnshape = (d₁, d₂, ..., dₙ)

矩阵是张量的特例(二阶张量),因此,张量继承了矩阵的基本运算特性,支持加法、数乘,以及张量缩并(广义矩阵乘法)。张量的每个元素同样通过索引定位,如三阶张量 T\mathcal{T}T 的元素记为 Tijk\mathcal{T}_{ijk}Tijk​。

当然,张量相对于矩阵,也有一些扩展之处,譬如:

  • 多维索引:矩阵需要两个索引定位元素(行和列),而 nnn 阶张量需要 nnn 个索引。这种扩展让张量能表示更复杂的数据结构,如彩色图像(高×宽×三个颜色通道)需要三阶张量,视频序列(帧数×高×宽×通道)需要四阶张量。

  • 多线性映射:如果说矩阵乘法表示"一个线性变换接一个线性变换",那么张量缩并表示的是"多个线性变换的同时作用"。例如,三阶张量可以同时与三个不同维度的向量进行缩并运算,描述多因素耦合的复杂变换。

  • 坐标无关性:张量的本质是在不同坐标系下保持不变的物理量或几何量。同一个张量在不同基底下有不同分量表示,但张量本身(作为几何对象)是不变的。这正是张量这个名字的来源 —— "张"(Stretch)表示它能在不同坐标系下"伸展"出不同的分量表示,"量"本身却保持不变。

在 NumPy 中,张量就是多维数组(ndarray),维度可以是任意正整数:

import numpy as np

# 0 阶张量(标量)
scalar = np.array(5.0)
print(f"标量 shape: {scalar.shape}")  # ()

# 1 阶张量(向量)
vector = np.array([1, 2, 3, 4])
print(f"向量 shape: {vector.shape}")  # (4,)

# 2 阶张量(矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(f"矩阵 shape: {matrix.shape}")  # (2, 3)

# 3 阶张量(例如:2 张 3×4 的图像)
tensor_3d = np.random.rand(2, 3, 4)
print(f"三阶张量 shape: {tensor_3d.shape}")  # (2, 3, 4)

# 4 阶张量(例如:批量图像数据)
tensor_4d = np.random.rand(10, 28, 28, 3)  # 10 张 28×28 的 3 通道图像
print(f"四阶张量 shape: {tensor_4d.shape}")  # (10, 28, 28, 3)
点击 Run 按钮执行代码

深度学习中几乎所有数据都使用张量表示:输入图像是三阶或四阶张量,神经网络权重是矩阵(二阶张量),批处理数据会增加一个批次维度形成更高阶的张量。理解张量的阶数扩展,有助于在更复杂的模型架构(如卷积神经网络、Transformer)中保持对数据维度的清晰认知。

本章小结

本章从矩阵这一向量的自然扩展出发,深入探讨了矩阵的代数运算、几何意义以及张量的概念延伸。

  • 矩阵的本质与应用。矩阵是由标量按行列排列成的矩形阵列,是数据集和变换规则的统一表示。从数据表格到权重矩阵,从协方差矩阵到邻接矩阵,矩阵贯穿机器学习的各个应用场景,它是神经网络的"记忆"存储器,是变量间"默契度"的度量工具,也是关系网络的"地图"绘制者。

  • 矩阵运算的代数规则。矩阵加法、数乘、乘法、转置、求逆构成矩阵运算的基础框架,其中,转置运算的行列互换特性、求逆运算的撤销还原特性是后续理解误差反向传播算法等诸多机器学习知识的理论基础。

  • 逆矩阵与信息还原。逆矩阵代表"撤销"变换的操作,是求解线性方程组、还原原始数据的关键工具。行列式不为零、满秩、特征值非零是矩阵可逆的等价条件。当矩阵不可逆时,伪逆提供了最小二乘意义下的最优近似解,在数据压缩和特征提取中具有重要应用。

  • 特殊矩阵的结构优势。单位矩阵、对角矩阵、对称矩阵、正交矩阵因其简洁的结构而具有特殊的代数性质。单位矩阵是矩阵乘法的单位元,对角矩阵实现独立缩放,对称矩阵的特征向量构成正交基,正交矩阵保持长度和角度不变,这些"标准件"在算法设计和数值计算中扮演着关键角色。

  • 线性变换的几何直观。矩阵的每一列记录了基向量被移动后的新位置,矩阵乘向量就是"用新基向量重新组装该向量"。从代数角度看,矩阵乘法是繁琐的元素运算;从几何角度看,它是拉伸、旋转、剪切等线性变换的简洁描述。理解这种对应关系,是掌握矩阵本质的捷径。

  • 张量:维度的无限延伸。张量是标量、向量、矩阵在高维空间的自然推广。从 0 阶标量到 nnn 阶张量,每一次阶数提升都扩展了数据表示的能力。多维索引、多线性映射、坐标无关性使张量能够描述更复杂的数据结构,是深度学习框架中数据表示的通用语言。

这些概念紧密相连、层层递进:矩阵运算是操作的手段,逆矩阵是还原的工具,特殊矩阵是简化的利器,线性变换是几何的本质,张量则是维度的升华。掌握矩阵的代数运算与几何直观的双重理解,将为后续学习特征分解、奇异值分解以及神经网络优化算法奠定坚实基础。

下一章将介绍如何使用 Python 和 NumPy 进行实际的矩阵操作。

练习题

  1. 为什么矩阵乘法不满足交换律?从线性变换的角度如何理解?

    参考答案 矩阵乘法表示线性变换的复合。AB\mathbf{AB}AB 表示先应用 B\mathbf{B}B 变换,再应用 A\mathbf{A}A 变换;而 BA\mathbf{BA}BA 表示先应用 A\mathbf{A}A 变换,再应用 B\mathbf{B}B 变换。

    譬如,设 A\mathbf{A}A 为旋转 90° 的变换,B\mathbf{B}B 为沿 x 轴拉伸 2 倍的变换。先旋转再拉伸,与先拉伸再旋转,最终结果不同。变换顺序的改变会导致结果不同,这正是矩阵乘法不可交换的几何解释。

  2. 计算矩阵 A=[123456]\mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}A=[14​25​36​] 的转置 AT\mathbf{A}^TAT,并验证 (AT)T=A(\mathbf{A}^T)^T = \mathbf{A}(AT)T=A。

    参考答案 转置: AT=[142536]\mathbf{A}^T = \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix}AT=​123​456​​

    验证: (AT)T=[123456]=A(\mathbf{A}^T)^T = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} = \mathbf{A}(AT)T=[14​25​36​]=A

    转置操作将原矩阵的行变成列、列变成行。原矩阵 2×32 \times 32×3 变成 3×23 \times 23×2,再转置一次又回到 2×32 \times 32×3,这正是"转置的转置等于原矩阵"的性质体现。

  3. 计算矩阵 A=[4726]\mathbf{A} = \begin{bmatrix} 4 & 7 \\ 2 & 6 \end{bmatrix}A=[42​76​] 的逆矩阵 A−1\mathbf{A}^{-1}A−1,并验证 AA−1=I\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}AA−1=I。

    参考答案 对于 2×22 \times 22×2 矩阵 [abcd]\begin{bmatrix} a & b \\ c & d \end{bmatrix}[ac​bd​],逆矩阵公式为 1ad−bc[d−b−ca]\frac{1}{ad-bc}\begin{bmatrix} d & -b \\ -c & a \end{bmatrix}ad−bc1​[d−c​−ba​]。

    计算行列式:det⁡(A)=4×6−7×2=24−14=10\det(\mathbf{A}) = 4 \times 6 - 7 \times 2 = 24 - 14 = 10det(A)=4×6−7×2=24−14=10

    由于行列式不为零,矩阵可逆: A−1=110[6−7−24]=[0.6−0.7−0.20.4]\mathbf{A}^{-1} = \frac{1}{10}\begin{bmatrix} 6 & -7 \\ -2 & 4 \end{bmatrix} = \begin{bmatrix} 0.6 & -0.7 \\ -0.2 & 0.4 \end{bmatrix}A−1=101​[6−2​−74​]=[0.6−0.2​−0.70.4​]

    验证: AA−1=[4726][0.6−0.7−0.20.4]=[2.4−1.4−2.8+2.81.2−1.2−1.4+2.4]=[1001]\mathbf{A}\mathbf{A}^{-1} = \begin{bmatrix} 4 & 7 \\ 2 & 6 \end{bmatrix}\begin{bmatrix} 0.6 & -0.7 \\ -0.2 & 0.4 \end{bmatrix} = \begin{bmatrix} 2.4-1.4 & -2.8+2.8 \\ 1.2-1.2 & -1.4+2.4 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}AA−1=[42​76​][0.6−0.2​−0.70.4​]=[2.4−1.41.2−1.2​−2.8+2.8−1.4+2.4​]=[10​01​]

  4. 解释为什么矩阵 A=[1224]\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 2 & 4 \end{bmatrix}A=[12​24​] 不可逆,并从几何角度说明其含义。

    参考答案 代数角度:行列式 det⁡(A)=1×4−2×2=0\det(\mathbf{A}) = 1 \times 4 - 2 \times 2 = 0det(A)=1×4−2×2=0,行列式为零故不可逆。

    几何角度:观察矩阵的第二行是第一行的 2 倍,这意味着线性变换将二维平面"压扁"成一维直线。具体来说,任何向量 (x,y)(x, y)(x,y) 经过这个变换后都落在同一条直线 y′=2x′y' = 2x'y′=2x′ 上。

    信息丢失的直观理解:就像把一张二维的照片完全压扁成一维的线条,所有垂直于该线条方向的信息都丢失了,无法通过逆向操作恢复原始的二维信息。

  5. 计算矩阵 A=[1236]\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 6 \end{bmatrix}A=[13​26​] 的伪逆 A+\mathbf{A}^+A+,并解释伪逆的作用。

    参考答案 使用伪逆公式 A+=(ATA)−1AT\mathbf{A}^+ = (\mathbf{A}^T \mathbf{A})^{-1} \mathbf{A}^TA+=(ATA)−1AT:

    ATA=[1326][1236]=[10202040]\mathbf{A}^T \mathbf{A} = \begin{bmatrix} 1 & 3 \\ 2 & 6 \end{bmatrix}\begin{bmatrix} 1 & 2 \\ 3 & 6 \end{bmatrix} = \begin{bmatrix} 10 & 20 \\ 20 & 40 \end{bmatrix}ATA=[12​36​][13​26​]=[1020​2040​]

    注意 ATA\mathbf{A}^T \mathbf{A}ATA 的行列式仍为零,需要使用其他方法(如 SVD)计算伪逆。实际计算得到: A+=150[1326]\mathbf{A}^+ = \frac{1}{50}\begin{bmatrix} 1 & 3 \\ 2 & 6 \end{bmatrix}A+=501​[12​36​]

    伪逆的作用:当矩阵不可逆时,伪逆提供最小二乘意义下的最优近似解。在实际应用中,伪逆可用于求解超定方程组(方程数多于变量数)的最优解,如线性回归问题。

  6. 验证矩阵 Q=[12−121212]\mathbf{Q} = \begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}Q=[2​1​2​1​​−2​1​2​1​​] 是正交矩阵,并解释其几何意义。

    参考答案 正交矩阵需要满足 QTQ=I\mathbf{Q}^T \mathbf{Q} = \mathbf{I}QTQ=I:

    QT=[1212−1212]\mathbf{Q}^T = \begin{bmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}QT=[2​1​−2​1​​2​1​2​1​​]

    QTQ=[12+12−12+12−12+1212+12]=[1001]=I\mathbf{Q}^T \mathbf{Q} = \begin{bmatrix} \frac{1}{2}+\frac{1}{2} & -\frac{1}{2}+\frac{1}{2} \\ -\frac{1}{2}+\frac{1}{2} & \frac{1}{2}+\frac{1}{2} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \mathbf{I}QTQ=[21​+21​−21​+21​​−21​+21​21​+21​​]=[10​01​]=I

    几何意义:这是一个旋转 45° 的变换矩阵。正交矩阵的特殊性质是保持向量长度和角度不变,向量经过旋转后,其模长不变,与其他向量的夹角也不变。这就是为什么正交矩阵在坐标变换、信号处理等领域如此重要。

  7. 给定线性变换矩阵 A=[2000.5]\mathbf{A} = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix}A=[20​00.5​],描述这个变换对二维平面的作用,并计算向量 (1,1)(1, 1)(1,1) 变换后的位置。

    参考答案 变换描述:这是一个对角矩阵,表示沿坐标轴方向的独立缩放。第一列 (2,0)(2, 0)(2,0) 表示 x 轴单位向量被拉伸到原来的 2 倍;第二列 (0,0.5)(0, 0.5)(0,0.5) 表示 y 轴单位向量被压缩到原来的一半。

    变换后的平面:原来单位正方形 [0,1]×[0,1][0,1] \times [0,1][0,1]×[0,1] 变成长方形 [0,2]×[0,0.5][0,2] \times [0,0.5][0,2]×[0,0.5]。

    计算变换: A[11]=[2000.5][11]=[2×1+0×10×1+0.5×1]=[20.5]\mathbf{A}\begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix}\begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 2 \times 1 + 0 \times 1 \\ 0 \times 1 + 0.5 \times 1 \end{bmatrix} = \begin{bmatrix} 2 \\ 0.5 \end{bmatrix}A[11​]=[20​00.5​][11​]=[2×1+0×10×1+0.5×1​]=[20.5​]

    向量 (1,1)(1, 1)(1,1) 被变换到 (2,0.5)(2, 0.5)(2,0.5),x 坐标放大 2 倍,y 坐标缩小一半。

  8. 解释为什么神经网络中权重矩阵通常是矩形(非方阵)而非方阵,并举例说明。

    参考答案 神经网络的权重矩阵 W\mathbf{W}W 通常连接不同维度的层:如果输入层有 nnn 个神经元,输出层有 mmm 个神经元,则权重矩阵为 m×nm \times nm×n(非方阵)。

    例如:输入层 784 维(28×28 像素图像),隐藏层 128 维,权重矩阵为 128×784128 \times 784128×784。这个矩阵将 784 维输入"压缩"到 128 维。

    非方阵的意义:

    • 降维:当 m<nm < nm<n 时,矩阵起到压缩信息的作用(如编码器)
    • 升维:当 m>nm > nm>n 时,矩阵扩展特征空间(如解码器)
    • 信息重构:不同维度之间的变换让网络学习更丰富的特征表示

    这也是为什么神经网络能够进行特征提取和维度变换 —— 通过非方阵权重矩阵实现信息的压缩、重构和抽象。

  9. 计算三阶张量(形状为 (2,3,4)(2, 3, 4)(2,3,4))的元素总数、维度数,并解释其在图像处理中可能代表什么数据。

    参考答案 元素总数:2×3×4=242 \times 3 \times 4 = 242×3×4=24

    维度数:3(三阶张量)

    图像处理中的含义:这个张量可以表示 2 张大小为 3×43 \times 43×4 的灰度图像,或者 1 张 3×43 \times 43×4 的 2 通道图像(如某些卫星遥感数据的两个波段)。

    更常见的情况:

    • 形状 (H,W,C)(H, W, C)(H,W,C):一张彩色图像,HHH 为高度,WWW 为宽度,C=3C=3C=3 为 RGB 通道
    • 形状 (N,H,W,C)(N, H, W, C)(N,H,W,C):批量图像数据,NNN 为批次大小(如训练时一次处理 32 张图)

    张量的多维结构让深度学习框架能够高效处理批量数据、多通道特征等复杂结构。

文章字数:10,644
更新于 2026-05-19
Star
Last Updated:
Contributors: icyfenix, Claude Opus 4.7, Claude Opus 4.6
Prev
向量基础
Next
数据处理实践