2. 数学基础回顾:线性代数核心概念、概率论与信息论基础、优化理论入门

各位同学,欢迎来到第二章。说实话,很多搞AI的人一听到「数学基础」四个字就开始头疼。我当年也一样,觉得写代码就完事了,学什么矩阵特征值?

直到我第一次在嵌入式设备上部署ACT模型,发现推理速度慢得像蜗牛爬。排查了半天,问题出在矩阵运算的冗余计算上。嗯,从那以后,我再也不敢小看线性代数了。

这一章,咱们不讲纯数学推导,只讲ACT算法里真正会用到的数学工具。你想想看,搞懂这些,后面部署的时候你就能自己优化计算图了。

2.1 线性代数核心概念:矩阵运算与特征值

ACT算法里,矩阵运算无处不在。说白了,神经网络的前向传播就是一连串的矩阵乘法加激活函数。

2.1.1 矩阵乘法:别小看这个

我见过太多新手在矩阵维度上翻车。一个 (m×n) 的矩阵乘以 (n×p) 的矩阵,结果维度是 (m×p)。这个规则必须刻在脑子里。

# Python示例:矩阵乘法
import numpy as np

A = np.array([[1, 2], [3, 4]])  # 2x2
B = np.array([[5, 6], [7, 8]])  # 2x2
C = np.dot(A, B)  # 结果还是2x2
print(C)
# 输出: [[19 22]
#        [43 50]]
我的经验:在硬件部署时,矩阵乘法的内存访问模式直接影响推理速度。我习惯用「行主序」存储,这样CPU缓存命中率更高。

2.1.2 特征值与特征向量:ACT的「灵魂」

特征值这个东西,你可能会觉得抽象。但ACT算法里,它用来分析注意力机制的「信息流」。

简单说:对于一个方阵 A,如果存在向量 v 和标量 λ,使得 Av = λv,那么 λ 就是特征值,v 就是特征向量。

为什么会这样?因为特征值告诉我们:这个矩阵在哪个方向上「拉伸」了数据。在ACT中,注意力矩阵的特征值分布,直接决定了模型能不能有效捕捉长距离依赖。

避坑指南:我曾经在部署时发现模型精度下降,排查了三天。最后发现是量化后的矩阵特征值分布变了,导致注意力分布偏移。所以,部署前一定要检查特征值的分布范围。

2.2 概率论与信息论基础:熵与KL散度

ACT算法里,概率论不是用来算概率的,而是用来衡量「不确定性」的。你想想看,模型预测一个动作,它到底有多确定?

2.2.1 熵:不确定性的度量

熵的公式:H(X) = -∑ p(x) log p(x)

说白了,熵越大,系统越混乱。一个均匀分布(所有概率相等)的熵最大,一个确定性分布(某个概率为1)的熵为0。

在ACT中,策略网络的输出是一个概率分布。熵值高,说明模型还在探索;熵值低,说明模型已经「拿定主意」了。

我的习惯:训练ACT时,我会监控策略的熵值。如果熵值下降太快,说明模型过早收敛了,容易陷入局部最优。这时候我会调高探索率。

2.2.2 KL散度:两个分布的「距离」

KL散度的公式:D_KL(P||Q) = ∑ p(x) log(p(x)/q(x))

它衡量的是:用分布Q去近似分布P时,损失了多少信息。注意,KL散度不是对称的,D_KL(P||Q) ≠ D_KL(Q||P)。

在ACT算法里,KL散度用来约束策略更新的步长。每次更新策略时,新策略和旧策略的KL散度不能太大,否则训练会不稳定。

注意:KL散度计算时,如果Q(x)=0但P(x)>0,散度会变成无穷大。我在项目中遇到过这个问题,后来加了数值稳定处理(比如给概率加一个很小的epsilon)。

2.3 优化理论入门:梯度下降与变体

ACT算法的核心是优化策略网络。说白了,就是找到一组参数,让期望回报最大。

2.3.1 梯度下降:最朴素的思路

公式:θ_new = θ_old - α * ∇J(θ)

其中 α 是学习率,∇J(θ) 是目标函数对参数的梯度。沿着梯度反方向走,就能找到局部最小值。

但这里有个坑:学习率太大,会震荡;学习率太小,收敛太慢。我刚开始做ACT时,调学习率调了一个星期。

2.3.2 Adam优化器:业界标配

Adam结合了动量和自适应学习率。它维护两个状态:一阶动量(梯度均值)和二阶动量(梯度方差)。

# Adam优化器的核心更新逻辑(简化版)
m_t = beta1 * m_{t-1} + (1 - beta1) * g_t
v_t = beta2 * v_{t-1} + (1 - beta2) * g_t^2
m_hat = m_t / (1 - beta1^t)
v_hat = v_t / (1 - beta2^t)
theta_t = theta_{t-1} - lr * m_hat / (sqrt(v_hat) + epsilon)
我的建议:在硬件部署时,Adam的动量更新涉及多个中间变量,会占用额外内存。如果内存紧张,可以考虑用SGD + 学习率衰减,效果不一定差。

2.3.3 策略梯度中的优化技巧

ACT算法用的是策略梯度方法,优化目标不是简单的损失函数,而是期望回报。这里有个关键点:梯度估计的方差很大。

我常用的技巧:

  • 优势函数归一化:减去均值,除以标准差,降低方差
  • GAE(广义优势估计):平衡偏差和方差,我习惯用 λ=0.95
  • 梯度裁剪:把梯度限制在 [-1, 1] 范围内,防止梯度爆炸
避坑指南:我曾经在部署时发现模型训练不稳定,后来发现是梯度裁剪阈值设得太大了。对于ACT,我建议初始裁剪阈值设为0.5,然后根据训练情况调整。

知识体系总览

下面这张图,是我自己总结的ACT数学基础框架。你把它存下来,后面学具体算法时,随时回来对照。

ACT算法数学基础框架 线性代数 概率论与信息论 优化理论 矩阵乘法 特征值分解 奇异值分解 KL散度 交叉熵 梯度下降 Adam 策略梯度 ACT算法核心:三者结合 矩阵运算实现注意力 → 熵/散度约束策略 → 梯度优化更新参数

好了,数学基础就讲到这里。这些概念你不需要一次性全记住,后面每讲一个ACT的具体模块,我都会回头引用这里的知识点。你只需要知道:矩阵运算是骨架,熵和KL散度是约束,优化方法是引擎。三者缺一不可。


公众号:蓝海资料掘金营,微信deep3321