线性变换与神经网络

本节目标

本节把矩阵从“数字表”提升为输入空间到输出空间的映射。你将理解基向量决定矩阵列、严格线性变换与仿射变换的区别、行样本和列向量两种公式如何对应,以及神经网络为什么必须加入非线性。

线性变换的直觉

线性变换 保持加法与缩放:

有限维情况下可写成 。矩阵的每一列是对应基向量被变换后的结果;因此矩阵不是孤立数字表,而是一个空间变换。

若 是 ,它把 映到 。列空间是所有可能输出,零空间是会被映成零的输入方向。映射升到更高维不自动创造新的独立信息,因为 。

缩放、旋转与投影

二维缩放:

把第一轴放大两倍、第二轴缩小一半。投影可能丢失维度,因此通常不可逆。神经网络中的线性层同样会混合、扩展或压缩特征方向。

仿射变换

严格说 在 时是仿射变换,因为不保持原点。ML 中仍常称“linear layer”:

若 、、,则 。

每个输出分量是输入特征的加权和加偏置。Embedding 投影、分类头和 Attention 的 Q/K/V 映射都使用这种结构。

PyTorch 官方 torch.nn.Linear 使用行样本/末维特征约定,写作 ;其权重 shape 是 out_features × in_features,输入除最后一维外的轴保持不变。不同库或论文可能用列向量 ,实现前要对照 shape,而不是只对照字母。

为什么需要非线性

两个无偏线性层叠加仍是一个线性层:

即使含偏置,多个仿射层也可合并成一个仿射层。激活函数让模型表示弯曲、分段的复杂关系。线性代数负责高效混合特征,非线性负责突破单一线性边界。

带偏置的两层合并为:

因此只堆叠 Linear 而不加激活、门控或其他非线性,深度不会增加这部分映射的表达类别。训练过程和参数化可能不同,但最终仍是一个仿射映射。

基与坐标

同一向量在不同基下坐标不同。Embedding 的单个维度通常没有稳定的人类命名;语义往往分布在多个方向上。对模型做旋转后,只要相对几何与后续权重相应变化,功能可能不变。因此不要随意把“第 137 维”解释为某个单独概念。

批量计算

若样本按行堆成 ,可写:

实现库会用广播把 加到每一行。广播方便但可能隐藏 shape 错误,始终先写预期维度。

例如输入 X: 32×768,层权重 W: 128×768,则 X @ W.T 为 32×128,偏置 b: 128 沿 batch 轴复制。若误用 W @ X.T,结果虽也可能可算,却采用了不同轴顺序,后续接口必须明确转置回来。

常见误区、练习与自测

  • 把 bias 当成“统计偏差”;这里是可训练截距,语义不同。
  • 认为升维必然增加信息;线性映射的有效秩仍有限。
  • 认为可逆变换一定有利;模型可能有意压缩噪声。
  • 把线性层参数多等同于表达任意非线性。
  • 把 Attention 整体称为线性变换;Q/K/V 投影是仿射的,但点积、缩放、softmax 和按权重聚合组成了更完整的计算。

练习:

  1. 为 128×768、输入 batch 32×768,写出行样本约定下的矩阵式和输出 shape。解释为何需用 。
  2. 给定两层 (W1,b1) 与 (W2,b2),写出合并后的权重和偏置。
  3. 构造一个二维投影矩阵,指出其列空间、零空间和秩。
  4. 解释为什么把 2 维线性映射到 100 维不代表得到 100 个独立信息方向。
  • 我能区分线性和仿射变换。
  • 我能解释多层线性变换为何可合并。
  • 我能把 shape 映射到 。
  • 我能从列空间和零空间解释线性层保留或丢失的方向。
  • 我能在论文公式与框架行样本约定之间转换。

参考资料

核验日期:2026-07-14。框架 shape 与接口可能随版本变化,实际实现前应再次查看当前官方页面。

上一节:线性组合、方程组与秩|下一步:正交、投影与最小二乘。