标签

AI算法基石:深入浅出线性代数

发布时间:2026-04-22 07:38来源:微信阅读:4

本文旨在用通俗语言,解析AI中最抽象但至关重要的线性代数概念。摒弃繁琐的公式推导,借助生活常识,帮你构建直观的数学直觉。

阅读指南:

你可以把"张量"看作一个存放数字的容器,其"嵌套层数"决定了张量的阶数,即 Python 中的 ndim。

术语精讲:

核心定义:阶数 = 确定一个数值所需索引的个数。

神经网络训练时,数据通常按批次输入:样本数、通道数、高度和宽度。理解张量阶数,是排查RuntimeError: size mismatch的第一步。

向量在数学教材中常表现为带箭头的线段,但在计算机和 AI 领域,它更多是一串具有特定含义的数字序列。

向量的两大核心属性:

重点辨析:行向量与列向量

在数学运算中,通常默认向量为列向量(竖写):

公式中,矩阵在左侧乘以向量。若满足条件,向量必须是列向量,结果为向量。

易错点:形状为的数组与形状为的矩阵在数学运算上表现迥异。例如:

在深度学习框架的广播机制下,(Batch, 3)和(Batch, 3, 1)的计算结果可能大相径庭,务必明确行列维度。

我们需要两把工具来衡量向量空间。

范数是向量长度的扩展,定义为满足特定条件的函数:

向量内积定义为:

几何含义:内积 = 投影长度 × 向量长度

其中θ为两向量间的夹角。

余弦相似度:剔除长度干扰,仅关注方向一致性

实战应用:注意力机制的内核

Transformer中的Query-Key注意力分数本质就是内积:

其中每个元素都是Query向量与Key向量的内积,衡量“这个词对那个词的关注程度”。

为什么要除以?

当维度较高时,假设变量独立同分布且均值为0、方差为1,它们的点积方差为(项相加)。这意味着点积数值随维度增加而“膨胀”。

若不进行缩放,Softmax输入将变得极大,导致输出趋近于one-hot分布(一个位置接近1,其余接近0),梯度几乎消失,模型难以收敛。除以将方差归一化到1,确保数值稳定。

实战应用:神经元即内积运算器

单个神经元输出:

权重向量决定神经元的“偏好”,内积越大表明输入与偏好匹配度越高。随后通过激活函数(如ReLU、Sigmoid)引入非线性,决定神经元是否“激活”。

矩阵绝非静止的数字表格,而是一台“变换机器”。

给定矩阵A和向量x:

矩阵将n维空间的向量映射到m维空间。

常见变换类型:

表示“先执行变换A,再执行变换B”。

⚠️注意:矩阵乘法不具备交换律

正如“先穿袜子再穿鞋”与“先穿鞋再穿袜子”截然不同,顺序至关重要。这也解释了反向传播求导为何必须按“链式法则”倒序计算。

转置:沿主对角线翻转矩阵

逆矩阵:变换的“撤销键”

若方阵满秩,存在唯一矩阵B,使得:

其中I为单位矩阵(对角线为1)。

不可逆情形:行列式为0或矩阵非方阵。

正交矩阵:转置等于逆

普通矩阵仅能进行固定原点的线性变换。若需平移(如图片右移3格),需引入齐次坐标:

其中t为平移向量。这在计算机图形学和视觉中广泛应用。

传统矩阵乘法需处理转置,Einsum提供了更直观视角:

给每个维度命名,同名维度自动相乘求和。

示例:矩阵乘法

记忆法则:

Transformer中的应用:

注意力分数计算:

Einsum速查表:b=Batch, h=Head, q=Query_len, k=Key_len, d=Head_dim。

输出形状对应(批次, 头数, 查询长度, 键长度),物理意义明确,且避免了混淆被消去的深度维度d。

注意:自注意力中q等于k,但交叉注意力中不等,保留q和k分开命名是良好习惯。

完整Attention输出也可用Einsum一行表示:

输出形状对应(批次, 头数, 查询长度, 头维度),即每个查询位置聚合了所有键位置信息后恢复到原始深度。

处理批量、多头注意力时,Einsum如读自然语言般清晰,且经编译优化后比手动转置+矩阵乘更快、显存占用更少。

这是线性代数中最直观的概念。

想象一块海绵(矩阵),施加变换后。

对于方阵,若存在非零向量v和标量λ,使得:

则λ为特征值,v为对应特征向量。

求解方法:特征方程

PCA核心思想:

为何协方差矩阵特征向量可作为新坐标轴?

因协方差矩阵是实对称矩阵,特征向量方向不变且两两正交,构成新的正交基。PCA降维后新特征线性无关。

注:统计教材常用Σ作无偏估计;机器学习中PCA只关心方向,与Σ等价。

扩展:PCA与SVD等价。对去均值数据做SVD,右奇异向量即协方差矩阵特征向量。SVD数值更稳定,是库中的默认实现。

条件数衡量矩阵求逆的数值稳定性。对于正规矩阵,条件数可表示为特征值之比:

对于非对称矩阵(如Jacobian),特征值不能反映“拉伸倍数”,条件数应基于奇异值:

两者在实对称矩阵上等价。条件数含义:

深度学习中,Hessian条件数决定损失函数“地形”:

数据归一化重要性:将狭长峡谷拉成圆碗,使条件数接近1,优化更稳。

进阶:Adam优化器的“预条件”直觉

即使特征值全正(正定),若最小值极小(如1e-10),数值上仍病态。优化如撒哈拉找最低点——坡度太平缓,优化器易停滞。

Adam本质为对角预条件。利用二阶矩估计的平方根倒数,实时将“狭长峡谷”拉扯成“圆形碗”,使梯度下降更稳。

补充:Adam预条件矩阵为对角,只能矫正坐标轴对齐的狭长谷。若峡谷斜向,矫正有限。但在多数网络中已足够有效。

若特征值分解仅限方阵,SVD则是任何形状矩阵的利器。

任何照片、表格(矩阵)可拆解为三步:

注:U和V是正交矩阵,保持长度和角度不变。D包含旋转(行列式)和反射(行列式)。

对角阵元素为奇异值σ_i。

奇异值衰减速度 = 信息冗余度:

秩-r近似:用前r个奇异值重构矩阵。

这是最优的秩-r近似。

AI启示:LoRA微调大模型原理

大模型原始权重通常满秩。但微调时,权重更新量往往低秩。

LoRA核心思想:

其中,A和B是低秩矩阵。

通过低秩分解模拟更新量,显存降低90%+,消费级显卡可微调千亿模型。

秩选择:是超参数。简单任务取2-4;复杂任务取4-8。研究表明Attention层对低秩敏感,FFN层需更高秩。AdaLoRA可动态调整。

如果说张量是数据容器,矩阵秩就是容器内有效空间大小。

重要定理:列秩=行秩,统称矩阵秩。

计算机浮点运算中,奇异值很少精确为0。例如理论上秩应为的矩阵,计算出的奇异值可能是。

需引入数值秩:将小于阈值的奇异值视为0。更严谨做法:σ_i < ε·σ_max,其中ε为机器精度(Float32约1e-7)。这是 NumPy 等库内部判断矩阵秩的默认逻辑。

矩阵秩表示:

把n维单位立方体放入矩阵,输出体积缩放倍数。

场景1:归一化流生成模型

通过可逆神经网络学习分布,变量替换要求:

若Jacobian行列式为0,说明空间“压塌”,概率质量不守恒,训练崩溃。

场景2:线性回归的生死线

求解正规方程:

若特征线性相关,行列式为0,无法求逆。

解法:岭回归

给矩阵对角线加微小λ,相当于给被压扁的盒子充气,安全求逆。这也被称为Tikhonov 正则化。

一个对称矩阵被称为正定(PD)的,如果对于所有非零向量x:

为何强调“对称”?在AI中Hessian、协方差、Gram矩阵天然对称,非对称影响较小。

等价判定:

放宽为≥0,称半正定。允许0特征值。

性质:任意矩阵Gram矩阵半正定。协方差矩阵由数据构造,天然半正定。

在优化算法(如牛顿法)中,Hessian正定性关键:

澄清:病态正定坑。即使Hessian正定但条件数大(最小特征值接近0),梯度下降会剧烈震荡。需动量或Adam。

为何归一化让“碗”更圆?

归一化使特征尺度一致,Hessian特征值分布均匀,条件数接近1。相当于把狭长峡谷变圆润碗,梯度下降不再震荡。

方阵主对角线元素之和:

性质:

场景1:FID分数(GAN评估)

Fréchet Inception Distance衡量生成图与真图的距离:

其中μ为均值,Σ为协方差。

场景2:强化学习不确定性

若Σ为状态转移协方差,迹为各维度方差和,反映总不确定性。

场景3:矩阵微分与“期望的交换魔法”

迹的循环性质使矩阵求导公式简洁:

此外,VAE和扩散模型中,有重要等式:

其中μ为均值,Σ为协方差。解释了为何计算KL散度或Score Matching时公式中充满trace。

迹运算可将二次型期望拆解为协方差矩阵线性组合,简化概率建模。

AI底层优化(如最小二乘法)常需解方程。

有一串钥匙(矩阵),想开一把锁(向量),问每把钥匙拧多少圈。

超定方程最优解:

即Moore-Penrose伪逆:

欠定方程通解:

其中x_p是特解,N(A)是零空间。

这意味着有无穷多“路”能到达目的地。正则化从中选一条:

解:

AI训练本质是寻找误差下降最快的梯度方向。

站在山上(误差大),手有旋钮(参数),想往哪拧最快下到谷底。

标量损失梯度:

梯度指向损失增长最快方向,反向走(负梯度)即最快下降方向:

其中α为学习率。

神经网络是复合函数,求导需链式法则:

每层梯度涉及Jacobian链乘。即“先穿的后脱”——从输出层向输入层反向传播。

向量值函数Jacobian为:

反向传播中,传递向量-Jacobian积(VJP)。若g为列向量,框架计算的是(与输入同维),而非显式Jacobian。内存占用仅为,非。

警示:标量损失是反向传播默认指挥官。

PyTorch中,标量损失可调用.backward()。若输出向量,需传gradient参数。直接对非标量调用会报错。

法则:标量损失是默认指挥官。需完整Jacobian时用显式函数。

箴言:理解线性代数,是为了在矩阵因数值误差不可逆、梯度消失或爆炸时,知道如何加正则化救回模型。

若将深度网络比作画家:

缺前者画不准,缺后者画不活。

若神经网络仅含矩阵乘法(线性),无论堆多少层,整体仍等价于线性变换:

激活函数(如ReLU)引入非线性,使网络能:

线性代数提供变换工具,激活函数赋予表达复杂世界能力。

线性层堆叠并非完全无意义

虽数学上等价线性变换,但数值不等。多层乘法引入不同舍入误差,中间层维度变化(如bottleneck)影响信息容量。

如输入1000维,输出1000维,中间100维bottleneck限制信息,这是自编码器核心思想。

冷知识:为何BERT向量维度是768?

可能好奇为何是768而非1000。Transformer维度取2的幂或64倍数(512, 768, 1024)。主要适配GPU显存对齐和Tensor Core分块。线性代数是刻在硅片上的算术。

结语:线性代数非背诵学科,而是“看见”学科。脑中“看见”矩阵变换空间、梯度指引下山,即掌握AI底层直觉。