深度学习的数学基石:线性代数视角

引言

线性代数是深度学习的核心数学工具,它为神经网络的数据表示、运算变换和优化提供了坚实基础。在本篇中,我们将从最基础的向量与矩阵概念出发,逐步深入探讨矩阵运算、特征值分解、奇异值分解(SVD)、范数度量、随机矩阵理论、以及它们在梯度计算、卷积运算、批量归一化、模型压缩、参数初始化等关键环节中的应用。文中既有数学推导,又配以直观图示和 PyTorch/NumPy 代码示例,帮助读者真正掌握“数学基石”的精髓,并能够在实际项目中游刃有余地运用。

向量与矩阵的表示与几何意义

在深度学习中,数据通常以张量(Tensor)的形式存在,而最简单的张量形式即向量(一维张量)与矩阵(二维张量)。

向量 x ∈ R n mathbf{x}inmathbb{R}^n x∈Rn 常表示一个样本在特征空间中的坐标:

x = [ x 1 x 2 ⋮ x n ] . mathbf{x} = egin{bmatrix} x_1\ x_2\ vdots\ x_n end{bmatrix}. x=
​x1​x2​⋮xn​​
​.

在几何上,它对应 R n mathbb{R}^n Rn 中从原点到点 ( x 1 , … , x n ) (x_1,dots,x_n) (x1​,…,xn​) 的有向线段。

矩阵 A ∈ R m × n Ainmathbb{R}^{m imes n} A∈Rm×n 则可视作将 n 维向量线性映射到 m 维向量的函数:

A : R n → R m , y = A   x . A: mathbb{R}^n o mathbb{R}^m,quad mathbf{y} = A,mathbf{x}. A:Rn→Rm,y=Ax.

当我们构建一个全连接层时,实际上便是在执行这样的线性变换再加上平移:

h = A x + b , b ∈ R m . mathbf{h} = Amathbf{x} + mathbf{b},quad mathbf{b}inmathbb{R}^m. h=Ax+b,b∈Rm.

下面通过一个简单例子来说明几何意义:设

A = [ 2 0 0 0.5 ] , x = [ 1 1 ] . A = egin{bmatrix} 2 & 0\ 0 & 0.5 end{bmatrix},quad mathbf{x} = egin{bmatrix}1\1end{bmatrix}. A=[20​00.5​],x=[11​].

那么
y = A   x = [ 2 ,   0.5 ] T mathbf{y} = A,mathbf{x} = [2,,0.5]^T y=Ax=[2,0.5]T。
几何上,这相当于在 x x x-轴方向拉伸 2 倍,在 y y y-轴方向压缩至原来的一半,再从 [ 1 , 1 ] [1,1] [1,1] 映射到 [ 2 , 0.5 ] [2,0.5] [2,0.5]。

矩阵运算与深度网络的前向传播

深度神经网络的前向传播核心即连续的矩阵乘法与非线性映射。例如,两层网络:

h = f ( W ( 1 ) x + b ( 1 ) ) , y ^ = g ( W ( 2 ) h + b ( 2 ) ) . mathbf{h} = f(W^{(1)}mathbf{x} + mathbf{b}^{(1)}),quad hat{mathbf{y}} = g(W^{(2)}mathbf{h} + mathbf{b}^{(2)}). h=f(W(1)x+b(1)),y^​=g(W(2)h+b(2)).

这里, W ( 1 ) ∈ R d h × d x W^{(1)}inmathbb{R}^{d_h imes d_x} W(1)∈Rdh​×dx​、 W ( 2 ) ∈ R d y × d h W^{(2)}inmathbb{R}^{d_y imes d_h} W(2)∈Rdy​×dh​。矩阵乘法满足结合律 ( W ( 2 ) W ( 1 ) ) x = W ( 2 ) ( W ( 1 ) x ) (W^{(2)}W^{(1)})mathbf{x} = W^{(2)}(W^{(1)}mathbf{x}) (W(2)W(1))x=W(2)(W(1)x),这在张量计算库中能自动通过图优化减少中间内存开销。

以 NumPy 为例,可以这样实现两层前向:

import numpy as np

def relu(z):
    return np.maximum(0, z)

# 随机初始化
Wx = np.random.randn(d_h, d_x)
bx = np.zeros((d_h, 1))
Wh = np.random.randn(d_y, d_h)
bh = np.zeros((d_y, 1))

# 前向传播
h = relu(Wx.dot(x) + bx)
y_hat = Wh.dot(h) + bh

在大规模网络中,我们借助 BLAS/cuBLAS 等底层 C++/CUDA 库加速矩阵乘法,使得千万、甚至亿级参数的网络在数小时内即可完成一次训练迭代。

转置、逆与伪逆

矩阵转置 A T A^T AT 的作用之一是将行空间与列空间对调。在反向传播中,梯度沿着权重矩阵的“反方向”传播,经常用到 W T W^T WT 来计算上一层的输入梯度。

对于可逆方阵 A ∈ R n × n Ainmathbb{R}^{n imes n} A∈Rn×n,存在唯一逆矩阵 A − 1 A^{-1} A−1 满足 A − 1 A = I = A   A − 1 A^{-1}A=I=A,A^{-1} A−1A=I=AA−1。尽管深度网络中权重矩阵通常不是方阵,也不会去显式求逆,但逆的思想可以帮助理解网络的可逆性及生成模型的设计(如 NICE、RealNVP)。

Moore–Penrose 伪逆 A + A^+ A+ 定义为满足最小二乘意义上的逆映射:

A + = ( A T A ) − 1 A T . A^+ = (A^T A)^{-1}A^T. A+=(ATA)−1AT.

在自编码器(AutoEncoder)中,如果编码器是线性映射,解码器的最优矩阵即与编码矩阵的伪逆相关。

特征值与特征向量

特征分解将方阵 A A A 写成:

A = V Λ V − 1 , A = VLambda V^{-1}, A=VΛV−1,

其中 Λ = d i a g ( λ 1 , … , λ n ) Lambda=mathrm{diag}(lambda_1,dots,lambda_n) Λ=diag(λ1​,…,λn​) 为特征值矩阵, V = [ v 1 , … , v n ] V=[mathbf{v}_1,dots,mathbf{v}_n] V=[v1​,…,vn​] 列向量为对应特征向量。若 A A A 可对角化,则其幂运算易于计算:

A k = V Λ k V − 1 . A^k = VLambda^k V^{-1}. Ak=VΛkV−1.

在 RNN/LSTM 中,权重矩阵的谱半径( ρ ( A ) = max ⁡ ∣ λ i ∣
ho(A)=max|lambda_i| ρ(A)=max∣λi​∣)直接影响梯度的消失或爆炸:

ρ ( A ) > 1
ho(A)>1 ρ(A)>1 时,前向信号可能随层数增长指数级放大;
ρ ( A ) < 1
ho(A)<1 ρ(A)<1 时,则指数级衰减。

了解这一点后,我们可以通过谱归一化(Spectral Normalization)对权重矩阵进行约束,使其最大奇异值固定在 1,从而提升训练稳定性。

奇异值分解(SVD)与低秩近似

任意矩阵 A ∈ R m × n Ainmathbb{R}^{m imes n} A∈Rm×n 均可分解为

A = U Σ V T , A = USigma V^T, A=UΣVT,

其中

U ∈ R m × m Uinmathbb{R}^{m imes m} U∈Rm×m、 V ∈ R n × n Vinmathbb{R}^{n imes n} V∈Rn×n 都是正交矩阵;
Σ ∈ R m × n Sigmainmathbb{R}^{m imes n} Σ∈Rm×n 对角线上的 σ i sigma_i σi​ 为奇异值,按从大到小排列。

奇异值反映了矩阵沿不同方向的伸缩比;常用截断 SVD(Retaining top‑k singular values)得到低秩近似:

A k = U k Σ k V k T , k ≪ min ⁡ ( m , n ) . A_k = U_k Sigma_k V_k^T,quad kll min(m,n). Ak​=Uk​Σk​VkT​,k≪min(m,n).

在深度网络中,可对全连接层、卷积层权重做低秩分解,实现模型压缩:

# 对权重 W 做 SVD
U, S, Vt = np.linalg.svd(W, full_matrices=False)
# 截断
k = 100
U_k = U[:, :k]
S_k = np.diag(S[:k])
Vt_k = Vt[:k, :]
# 重构近似 W
W_approx = U_k.dot(S_k).dot(Vt_k)

实验证明,常可在保留 90% 能量( ∑ i = 1 k σ i 2 / ∑ i = 1 r σ i 2 ≈ 0.9 sum_{i=1}^ksigma_i^2 / sum_{i=1}^rsigma_i^2 approx 0.9 ∑i=1k​σi2​/∑i=1r​σi2​≈0.9)的前提下,将参数量削减 50–80%。

向量范数与矩阵范数

范数是衡量向量或矩阵“大小”的工具。常见的范数包括:

向量 p p p-范数:
∥ x ∥ p = ( ∑ i ∣ x i ∣ p ) 1 / p |mathbf{x}|_p = (sum_i |x_i|^p)^{1/p} ∥x∥p​=(∑i​∣xi​∣p)1/p,其中 p = 1 , 2 , ∞ p=1,2,infty p=1,2,∞ 常用。
矩阵的 Frobenius 范数:
∥ A ∥ F = ∑ i , j A i j 2 |A|_F = sqrt{sum_{i,j}A_{ij}^2} ∥A∥F​=∑i,j​Aij2​
​。
谱范数(Operator norm):
∥ A ∥ 2 = σ max ⁡ ( A ) |A|_2 = sigma_{max}(A) ∥A∥2​=σmax​(A),即最大奇异值。

在正则化中,L2 正则化(权重衰减)就是使用 ∥ W ∥ 2 2 |W|_2^2 ∥W∥22​ 作为损失项;L1 则促使稀疏化,常用于模型剪枝与特征选择。

线性代数在反向传播中的角色

反向传播本质上是链式法则和矩阵微积分的应用。以单层全连接为例:

L = ℓ ( y ^ , y ) , y ^ = W x + b . L = ell(hat{mathbf{y}}, mathbf{y}),quad hat{mathbf{y}} = Wmathbf{x} + mathbf{b}. L=ℓ(y^​,y),y^​=Wx+b.

目标是求 ∂ L / ∂ W partial L/partial W ∂L/∂W、 ∂ L / ∂ b partial L/partial mathbf{b} ∂L/∂b、 ∂ L / ∂ x partial L/partial mathbf{x} ∂L/∂x。由链式法则:

∂ L ∂ W = ∂ L ∂ y ^   x T , ∂ L ∂ b = ∂ L ∂ y ^ , ∂ L ∂ x = W T ∂ L ∂ y ^ . frac{partial L}{partial W} = frac{partial L}{partial hat{mathbf{y}}},mathbf{x}^T,quad frac{partial L}{partial mathbf{b}} = frac{partial L}{partial hat{mathbf{y}}},quad frac{partial L}{partial mathbf{x}} = W^T frac{partial L}{partial hat{mathbf{y}}}. ∂W∂L​=∂y^​∂L​xT,∂b∂L​=∂y^​∂L​,∂x∂L​=WT∂y^​∂L​.

从中可见,矩阵转置和乘法是反向传播的核心算子。高效实现梯度计算,正是深度学习框架的竞争力所在。

卷积运算等价的矩阵视角

尽管卷积在实现上并不会显式构造大 Toeplitz 矩阵,但理论上可以将 2D 卷积转换为矩阵乘法。设输入特征图 X ∈ R H × W × C in Xinmathbb{R}^{H imes W imes C_{ ext{in}}} X∈RH×W×Cin​,卷积核 K ∈ R k h × k w × C in × C out Kinmathbb{R}^{k_h imes k_w imes C_{ ext{in}} imes C_{ ext{out}}} K∈Rkh​×kw​×Cin​×Cout​。将 X X X 通过 im2col 展开为矩阵 T ∈ R ( k h k w C in ) × ( H W ) Tinmathbb{R}^{(k_hk_wC_{ ext{in}}) imes(HW)} T∈R(kh​kw​Cin​)×(HW),核重排为 K ~ ∈ R C out × ( k h k w C in ) ilde{K}inmathbb{R}^{C_{ ext{out}} imes (k_hk_wC_{ ext{in}})} K~∈RCout​×(kh​kw​Cin​),则输出等价于:

Y col = K ~   T , Y = c o l 2 i m ( Y col ) . Y_{ ext{col}} = ilde{K},T,quad Y = mathrm{col2im}(Y_{ ext{col}}). Ycol​=K~T,Y=col2im(Ycol​).

这一等价帮助我们理解卷积层的参数复杂度与计算量,并为 Winograd、FFT 加速等算法提供理论基础。

批量归一化的矩阵形式

BatchNorm 对一个 mini‑batch 中的特征进行归一化,公式为:

x ^ i j = x i j − μ j σ j 2 + ϵ , y i j = γ j x ^ i j + β j , hat{x}_{ij} = frac{x_{ij} – mu_j}{sqrt{sigma_j^2 + epsilon}},quad y_{ij} = gamma_j hat{x}_{ij} + eta_j, x^ij​=σj2​+ϵ
​xij​−μj​​,yij​=γj​x^ij​+βj​,

其中 μ j mu_j μj​ 和 σ j 2 sigma_j^2 σj2​ 分别为第 j j j 维上的均值与方差。若用矩阵 X ∈ R N × D Xinmathbb{R}^{N imes D} X∈RN×D 表示一个 batch,则均值与方差可写为:

μ = 1 N 1 T X , σ 2 = 1 N ( X − 1 μ ) T ( X − 1 μ ) . oldsymbolmu = frac{1}{N} mathbf{1}^T X,quad oldsymbolsigma^2 = frac{1}{N} (X-mathbf{1}oldsymbolmu)^T (X-mathbf{1}oldsymbolmu). μ=N1​1TX,σ2=N1​(X−1μ)T(X−1μ).

归一化与仿射变换可通过对角矩阵和矩阵乘法、加法批量完成,充分利用 GPU 并行性。

随机矩阵理论与初始化策略

合理的参数初始化可缓解梯度爆炸/消失问题。Xavier(Glorot)初始化针对对称激活函数(如 tanh),令:

W i j ∼ U ( − 6 n in + n out ,   6 n in + n out ) . W_{ij}sim mathcal{U}Bigl(-sqrt{ frac{6}{n_{ ext{in}}+n_{ ext{out}}}},,sqrt{ frac{6}{n_{ ext{in}}+n_{ ext{out}}}}Bigr). Wij​∼U(−nin​+nout​6​
​,nin​+nout​6​
​).

He 初始化针对 ReLU 系列:

W i j ∼ N ( 0 ,   2 n in ) . W_{ij}sim mathcal{N}Bigl(0,, frac{2}{n_{ ext{in}}}Bigr). Wij​∼N(0,nin​2​).

这两种方案均基于保持正向与反向信号方差稳定的随机矩阵谱分析。

主成分分析(PCA)与协方差矩阵

PCA 寻找使数据投影后方差最大的子空间,对中心化后数据矩阵 X ∈ R N × D Xinmathbb{R}^{N imes D} X∈RN×D 构造协方差:

Σ = 1 N X T X = V Λ V T . Sigma = frac{1}{N}X^T X = VLambda V^T. Σ=N1​XTX=VΛVT.

取前 k 个特征向量 V k V_k Vk​ 即列组成的矩阵,则低维表示为 Z = X V k Z = X V_k Z=XVk​。深度学习中,PCA 不仅用于降维,还可作为对抗训练中生成对抗样本的方向搜索工具。

小结与实践建议

通过本篇对线性代数在深度学习中各环节的回顾与延展,建议读者结合以下实践:

用 NumPy 手写并对比矩阵乘法、Toeplitz 展开卷积与框架内置卷积性能差异。
实现单层线性自编码器,验证伪逆与重构误差关系。
对全连接层权重进行 SVD 压缩,评估网络在推理速度与准确率间的折中。
在小型 RNN 模型中,通过谱归一化控制权重谱半径,观察梯度稳定性与收敛速度变化。
用不同初始化方案训练同一网络,绘制训练损失与梯度范数随迭代的变化曲线。

下一篇,我们将继续深入“深度学习的数学基石:概率统计与信息论视角”,在随机过程、极大似然估计、KL 散度、自监督学习等维度,为大家揭开更深层的数学奥秘。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容