PRINCIPLE LAYER · RANDOM TRAJECTORY
为什么 RL 必须学条件概率与期望?因为训练数据本身是策略参与生成的随机轨迹。
一条轨迹 τ 不是独立样本表中的一行;它由初始状态、策略选的动作和环境连续响应共同产生。用 p0 表示初始状态分布、π 表示策略、P 表示环境转移,则一条有限轨迹的概率可以拆成:
RL 的目标可写成 J(π)=Eτ~pπ[G(τ)]:不是让某一条轨迹的 return 最大,而是让策略诱导出的轨迹分布在平均意义上更好。Bellman、Monte Carlo、policy gradient 只是估计或优化这个期望的不同路径。
监督学习通常把 (x,y) 数据集视作已给定;RL 中你改了策略,就改了明天会看到什么数据。后面探索、off-policy、replay buffer 都是在处理这个闭环。
LEARNING TARGET
学完后,你能把“随机环境”读成可计算的语言。
| 完成目标 | 直接应用 | 后续会在哪反复出现 |
|---|---|---|
| 区分 sₜ、aₜ、rₜ₊₁、s′、π(a|s) 与 P(s′|s,a)。 | 读懂环境 API 返回的 transition,诊断状态/动作/奖励写错的位置。 | MDP、Q-learning、rollout、LLM agent trajectory。 |
| 用期望计算随机动作的平均长期好坏。 | 比较有打滑、失败概率、随机奖励的策略,而非只看“最好一次”。 | Bellman 方程、value、policy evaluation、风险分析。 |
推荐系统点击、机器人传感器、游戏随机掉落、LLM 工具调用失败,都是“同一动作不一定得到同一结果”的环境;概率和期望让这种不确定性可以被建模。
FIRST PRINCIPLE
公式不是另一种语言,它在压缩一句完整的话。
看到 RL 公式先不要急着算。先问三个问题:谁会变?什么时候变?哪些部分不确定?例如:
下标不是乘法,也不是装饰;它是一条时间轴。奖励写成 rₜ₊₁,是因为它由 t 时刻动作的后果产生。
G0 · READ THE SYMBOLS
五个最常见符号,逐个翻译。
| 符号 | 读法 | 它表示什么 | 例子 |
|---|---|---|---|
| sₜ | t 时刻的 state | 当前决策所需的信息。 | s₂=(1,3):第 2 步站在第 1 行第 3 列。 |
| aₜ | t 时刻的 action | 此刻由策略或智能体选的操作。 | a₂=右。 |
| rₜ₊₁ | 下一时刻收到的 reward | 执行 aₜ 后环境的局部反馈。 | 向右走一步,r₃=−1。 |
| s′ | s prime | 泛指一个候选下一状态,不是固定某一时刻。 | 向右后可到右格,也可能打滑。 |
| π(a|s) | 给定 s 时选 a 的概率 | 策略在状态 s 的动作分布。 | π(右|s)=0.8。 |
s 是可能状态的抽象变量;sₜ 是第 t 步实际出现的状态。就像 x 是变量,x₃ 是第 3 次记录到的值。
G1 · PROBABILITY
随机不是“不可理解”,而是结果带概率。
环境随机时,同样的 (s,a) 可以有多个后继。我们写 P(s′|s,a):已知当前状态 s、动作 a 后,下一状态刚好为 s′ 的概率。竖线 | 读作“在……条件下”。
从 s 做 a 永远到同一个 s′。这条后继的概率为 1。
同一动作有多个可能结果;策略应比较平均长期后果,而不是只看最好的一次。
G1 · EXPECTATION
期望不是预测某次结果,而是按概率加权的平均。
若随机变量 X 可能取 x₁、x₂、…,对应概率 p₁、p₂、…,则:
掷公平硬币:正面 reward=+2、反面 reward=−2。E[r]=0.5×2+0.5×(−2)=0。单次不会得到 0,但足够多次后的平均会接近 0。
条件期望:只在已知条件下平均。
WORKED EXAMPLE
手算一个随机动作值。
在状态 s 执行“右”,即时奖励为 0。80% 到宝箱格,V(sgold)=10;20% 到泥潭,V(smud)=−5。取 γ=0.9:
= 7.2 − 0.9 = 6.30.8、0.2 是环境转移概率 P;0.9 是任务折扣 γ。它们都是权重,但职责不同。
| 你在算什么 | 权重来自哪里 | 本例 |
|---|---|---|
| 随机后继的平均 | 环境转移概率 P | 0.8 与 0.2 |
| 未来相对当前的重要性 | 任务折扣 γ | 0.9 |
| 智能体会怎样选动作 | 策略概率 π | 本例固定选右,不需要 π |
CODE READING
把 Σ 映射到最小 Python。
outcomes = [(0.8, 0, 10), (0.2, 0, -5)]
gamma = 0.9
q_right = sum(p * (r + gamma * v) for p, r, v in outcomes)
# q_right == 6.3
这一段没有训练模型。它只是把 Σ 写成 Python 的 sum,把每个可能后继写成一行数据。理解这种映射后,后续 Value Iteration 与 TD 更新就不再是黑箱。
CHECK YOUR UNDERSTANDING
这些错误会贯穿所有后续课。
01 · P(s′|s,a)=0.2 与 π(a|s)=0.2 有什么根本区别?
前者由环境决定:已经选择 a 后会发生什么;后者由策略决定:看到 s 后选不选 a。一个描述世界,一个描述智能体行为。
02 · 为什么 rₜ₊₁ 不写成 rₜ?
常用约定是先处于 sₜ、选 aₜ,再观察 rₜ₊₁ 和 sₜ₊₁。不同教材可用别的记号,关键是全程一致。
03 · 期望为 7,是否代表下一次一定拿到 7?
不代表。7 是重复后的平均;单次可能拿到 10、−5 或其他结果。
NEXT