数学基础回顾:线性代数核心、概率论基础、信息论
说实话,很多同学一听到「数学基础」四个字就开始头疼。我当年也一样。但做了这么多年决策算法,我越来越觉得:数学不是门槛,而是你的武器库。你不需要成为数学家,但得知道工具箱里有什么、怎么用。
这一章,我们快速过一遍三个核心领域:线性代数、概率论、信息论。我会尽量用「我踩过的坑」来帮你理解,而不是堆公式。
线性代数核心:矩阵运算与特征值
线性代数在决策算法里无处不在。说白了,它就是处理「多维数据」的语言。
矩阵运算:你每天都在用
矩阵乘法,我习惯把它理解为「变换」。比如一个状态向量乘以一个转移矩阵,就得到了下一个状态的概率分布。嗯,马尔可夫决策过程(MDP)里天天干这事。
举个简单的例子:
import numpy as np
# 状态转移矩阵 P
P = np.array([[0.7, 0.3],
[0.4, 0.6]])
# 当前状态分布 [状态0概率, 状态1概率]
state = np.array([0.5, 0.5])
# 下一时刻状态分布
next_state = state @ P
print(next_state) # [0.55, 0.45]
你看,一行代码就完成了状态预测。我在做推荐系统时,经常用矩阵分解来降维。用户-物品交互矩阵,分解成两个低秩矩阵,就能预测用户对未交互物品的偏好。说白了,就是矩阵乘法在背后撑腰。
特征值与特征向量:系统的「命门」
特征值是什么?我理解成「系统的固有频率」。你想想看,一个线性系统,你输入一个向量,它只是被拉伸或压缩,方向不变——这个向量就是特征向量,拉伸倍数就是特征值。
在决策算法里,特征值分析常用于判断算法的收敛性。比如值迭代算法,它的收敛速度就取决于贝尔曼算子(Bellman operator)的谱半径(最大特征值的绝对值)。
我曾经在做一个强化学习项目时,算法死活不收敛。后来一查,发现转移矩阵的谱半径大于1了。嗯,这就是典型的「系统不稳定」。调整了折扣因子后,问题就解决了。
概率论基础:贝叶斯定理与分布
概率论,说白了就是「不确定性的数学」。决策算法里,你永远在和不确定性打交道。
贝叶斯定理:更新你的信念
贝叶斯定理的形式很简单:
P(A|B) = P(B|A) * P(A) / P(B)
但它的思想很深刻:先验信念 P(A),在看到新证据 B 后,更新为后验信念 P(A|B)。
我举个例子。假设你有一个垃圾邮件分类器。先验概率 P(垃圾邮件) = 0.2。如果邮件中包含「免费」这个词,P(包含「免费」|垃圾邮件) = 0.8,P(包含「免费」|正常邮件) = 0.1。那么收到一封含「免费」的邮件,它是垃圾邮件的概率是多少?
P(垃圾|免费) = 0.8 * 0.2 / (0.8*0.2 + 0.1*0.8) = 0.16 / 0.24 ≈ 0.667
你看,从 0.2 更新到了 0.667。这就是贝叶斯更新的力量。
常见分布:你的概率「词汇表」
我建议你至少熟悉这几种分布:
- 伯努利分布:抛硬币,结果只有两种。用于二分类问题。
- 二项分布:抛 n 次硬币,正面朝上的次数。用于多次试验。
- 正态分布:自然界最常见的分布。中心极限定理说,大量独立随机变量的和近似正态分布。
- 狄利克雷分布:分布之上的分布。常用于主题模型和贝叶斯非参数方法。
我记得有一次做 A/B 测试,用正态分布近似了转化率的分布。结果发现样本量不够,近似效果很差。后来改用贝塔分布(Beta distribution),效果就好多了。为什么?因为贝塔分布是二项分布的共轭先验,数学上更优雅。
信息论:熵与 KL 散度
信息论,说白了就是「量化不确定性」的学科。它在决策算法里,常用于衡量信息增益、策略的随机性等。
熵:不确定性的度量
熵的公式:H(X) = -∑ p(x) log p(x)
熵越大,不确定性越大。比如一个公平硬币的熵是 1 bit,而一个总是正面朝上的硬币,熵是 0 bit。
在决策树算法中,我们选择分裂特征时,就是选那个能使「条件熵」最小的特征。说白了,就是让分裂后的子节点更「纯」。
import numpy as np
def entropy(p):
return -np.sum(p * np.log2(p + 1e-10))
# 公平硬币
print(entropy([0.5, 0.5])) # 1.0
# 确定硬币
print(entropy([1.0, 0.0])) # 0.0
KL 散度:两个分布的距离
KL 散度衡量的是:用一个分布 Q 去近似另一个分布 P 时,损失了多少信息。
公式:KL(P||Q) = ∑ p(x) log(p(x)/q(x))
KL 散度不是对称的,所以它不是真正的「距离」。但它非常有用。比如在变分推断中,我们最小化 KL(Q||P),让近似分布 Q 尽量接近真实后验 P。
我曾经在做一个策略梯度算法时,用 KL 散度来约束新旧策略的差异。如果新策略和旧策略差异太大,更新步长就调小。这能防止算法「走偏」。嗯,这就是 TRPO(Trust Region Policy Optimization)的核心思想。
知识体系总览
下面这张图,帮你把本章的知识点串起来。你可以看到,线性代数、概率论、信息论是如何支撑起决策算法的各个模块的。
好了,这一章的内容就到这里。数学基础不是一天能打牢的,但有了这些核心概念,你再看后面的算法,会发现它们其实都是这些数学思想的「具体实现」。
可可精品资料库