特殊矩阵 -- 单位阵、对角阵、对称阵
有些矩阵类型在 AI 中反复出现,它们有特殊的结构和性质。了解它们能帮你快速理解优化器行为、正则化效果和数据变换的含义。
单位矩阵 I
主对角线全是 1,其余全是 0
乘以任何矩阵 = 不变
相当于数字中的「1」
对角矩阵
只有主对角线上有值
每个维度独立缩放
相当于音响均衡器
对称矩阵
转置 = 自身
关于主对角线对称
特征值全是实数
单位矩阵:数学中的「1」
\[ \mathbf{I}_n = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix} \]对任意形状兼容的矩阵 A:\( \mathbf{I}A = A \),\( A\mathbf{I} = A \)。
对角矩阵:独立缩放每个维度
\[ \mathbf{D} = \text{diag}(d_1, d_2, \dots, d_n) = \begin{bmatrix} d_1 & 0 & \cdots & 0 \\ 0 & d_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & d_n \end{bmatrix} \]对角矩阵乘以向量 = 对向量的每个分量独立施加不同的缩放系数。
对称矩阵:转置后还是自己
\( \mathbf{A}^T = \mathbf{A} \),即 \( a_{ij} = a_{ji} \)。
对称矩阵有一个极重要的性质:特征值全是实数,特征向量相互正交。
这使得对称矩阵在优化和统计中极其有用——协方差矩阵和 Hessian 矩阵都是对称矩阵。
生活例子
单位矩阵:什么都不做的操作
你在 PS 中打开一张图片,不做任何编辑直接保存。输入 = 输出。
单位矩阵就是这个「什么都不做」的数学表达。
对角矩阵:音响均衡器
均衡器的每个滑动条独立控制一个频段的音量——高频 +3dB,低频 -2dB,中频不变。
每个频段互不干扰,分别缩放。这就是对角矩阵的行为。
对称矩阵:镜子里的倒影
站在镜子前,你的左手在镜子里对应右手的位置。上下不变,左右互换。
对称矩阵类似——关于主对角线对称,上下位置互换后值不变。
数学定义
| 矩阵类型 | 定义条件 | 记号 |
|---|---|---|
| 单位矩阵 | \( I_{ii}=1, I_{ij}=0 \; (i \neq j) \) | \( \mathbf{I}_n \) |
| 对角矩阵 | \( D_{ij}=0 \) 当 \( i \neq j \) | diag(d₁,...,dₙ) |
| 对称矩阵 | \( A_{ij} = A_{ji} \) 对所有 i,j | \( \mathbf{A} = \mathbf{A}^T \) |
Python 动手实践
实例
# 单位矩阵
I = np.eye(3)
A = np.array([[4,7,2],[3,5,1],[6,8,9]])
print("I @ A == A:", np.allclose(I @ A, A))
# 对角矩阵:独立缩放
D = np.diag([2, 3, 5])
v = np.array([1, 1, 1])
print("D @ [1,1,1] =", D @ v) # [2, 3, 5]
# 对称矩阵
S = np.array([[1,4,5],[4,2,6],[5,6,3]])
print("S 对称:", np.allclose(S.T, S))
eigenvals = np.linalg.eigvals(S)
print("特征值全实数:", np.all(np.isreal(eigenvals)))
# 协方差矩阵天然对称
data = np.random.randn(100, 5)
cov = np.cov(data.T)
print("协方差矩阵对称:", np.allclose(cov, cov.T))
I @ A == A: True D @ [1,1,1] = [2 3 5] S 对称: True 特征值全实数: True 协方差矩阵对称: True
AI 中的应用场景
Adam 优化器 = 对角矩阵自适应缩放
Adam 为每个参数维护梯度平方的指数移动平均 v_t,更新时用 \( \theta_{t+1} = \theta_t - \eta \cdot m_t / \sqrt{v_t} \)。从数学上看,\( 1/\sqrt{v_t} \) 对每个参数分量独立缩放——这就是一个对角矩阵乘以梯度向量。活跃的梯度分量被缩小学习率,不活跃的梯度分量被放大。
协方差矩阵用于 PCA
PCA 降维的第一步:计算数据中心化后的协方差矩阵 \( \Sigma = X^TX/(n-1) \)。这是一个对称矩阵(\Sigma_{ij} = \Sigma_{ji}),它的特征值全为实数。最大的 k 个特征值对应的特征向量就是主成分方向。sklearn 的 PCA 类底层就做这件事。
循环神经网络的恒等初始化
RNN 和 LSTM 的 recurrent 权重矩阵常初始化为单位矩阵。这确保训练初期,隐藏状态的信息能够「原封不动」地传递,避免梯度在时间步上过快衰减。这个技巧被称为 IRNN(Identity RNN)。
Xavier/Glorot 初始化
Xavier 初始化精心选择权重的方差使每层输出的方差保持一致:\( Var(W) = 2/(n_{in} + n_{out}) \)。这等价于从该方差的正态分布中对角矩阵(方差)的约束。
