第三部分 · 强化学习基础概念

目标:建立强化学习的整体思维框架——智能体如何在与环境的交互中学习, 以及贯穿全课程的几对核心概念。

有了第二部分的 MDP 语言,我们现在正式进入强化学习本身: 在不完全了解环境的情况下,通过“试错”学到好策略。


3.1 智能体—环境交互循环

强化学习的一切都发生在这个循环里:

        ┌───────────────► 动作 a_t ───────────────┐
        │                                          ▼
   ┌─────────┐                                 ┌─────────┐
   │  智能体  │                                 │  环境    │
   │ (Agent) │                                 │  (Env)  │
   └─────────┘                                 └─────────┘
        ▲                                          │
        └──── 状态 s_{t+1} , 奖励 r_{t+1} ◄────────┘
  1. 智能体观察状态 s_t
  2. 根据策略选择动作 a_t
  3. 环境返回奖励 r_{t+1}新状态 s_{t+1}
  4. 智能体据此更新策略,循环继续。

目标:最大化长期累积奖励(回报 G_t)。

🎮 王者荣耀里的这一圈:AI 看到战场快照 s_t(我残血、敌在近处)→ 选动作“1技能位移逃”→ 环境返回“成功脱离、略微掉血”的奖励和新战场 s_{t+1} → AI 记住“这种局势下逃是对的”。 一局约 2000+ 步,就是这个循环转 2000+ 次。你在第一课跑通的 test_1v1_random.py 正是这个循环(只是动作随机)。


3.2 强化学习和其他机器学习有什么不同?

范式 数据 学习信号 王者里的例子
监督学习 带标签样本 (x, y) 正确答案 y 给英雄头像分类
无监督学习 无标签样本 x 数据结构本身 把对局录像聚成不同打法
强化学习 交互产生的轨迹 奖励(好/坏) 鲁班学会瞄准命中、打赢 1v1

强化学习的三个独特难点:

  • 反馈是评价性的:只告诉你“这步得几分”,不告诉你“正确动作是什么”;
  • 反馈可能延迟:现在的动作,可能很多步之后才见分晓(信用分配问题);
  • 数据是自己产生的:你的策略决定了你看到什么数据(不是独立同分布)。

3.3 探索 vs 利用 (Exploration vs Exploitation)

这是强化学习最经典的两难:

  • 利用 (Exploitation):选目前已知最好的动作,稳拿收益;
  • 探索 (Exploration):尝试没试过的动作,也许能发现更好的选择。

🎮 王者荣耀里的探索 vs 利用:AI 已经知道“稳稳补刀发育”能得分(利用); 但只有偶尔试试“越塔强杀”“新的连招顺序”(探索),才可能发现更高收益的打法。 全程只利用 → AI 永远学不会 gank 和越塔;全程只探索 → AI 一直乱送。衰减的 ε 让它先浪后稳。

在「鲁班瞄准」里同样如此:一开始要多试不同发射方向(探索), 试出"朝目标扇区打命中率最高"后,就多按这个来(利用)。

最常用的平衡方法是 ε-贪心 (ε-greedy)

import numpy as np

def epsilon_greedy(Q_row, epsilon):
    if np.random.rand() < epsilon:
        return np.random.randint(len(Q_row))   # 探索:随机选
    return int(np.argmax(Q_row))                # 利用:选 Q 最大的

实践中常让 ε 从大到小衰减:初期多探索,后期多利用。


3.4 几对贯穿全课程的概念

预测 (Prediction) vs 控制 (Control)

  • 预测:给定策略 π,评估它的价值 V^π(“这套打法能得多少分?”);
  • 控制:寻找最优策略 π*(“最好的打法是什么?”)。

基于模型 (Model-based) vs 无模型 (Model-free)

  • 基于模型:智能体知道/学习环境的 PR,可以“在脑中推演”(如动态规划、规划);
  • 无模型:不知道 PR,只能靠真实交互采样学习(如 Q-Learning、策略梯度)。

同策略 (On-policy) vs 异策略 (Off-policy)

  • 同策略:用正在执行的策略产生的数据来改进它(如 Sarsa);
  • 异策略:用另一套行为策略采集数据,来学习目标策略(如 Q-Learning、DQN)。

3.5 学习价值的两大思路:MC 与 TD

蒙特卡洛 (Monte Carlo, MC)

玩完整整一局,用真实回报 G_t 来更新价值:

V(s_t) ← V(s_t) + α [ G_t - V(s_t) ]
  • 优点:无偏;缺点:必须等一局结束,方差大。

时序差分 (Temporal Difference, TD)

每走一步就更新,用“估计值”来引导“估计值”(bootstrapping):

V(s_t) ← V(s_t) + α [ r_{t+1} + γ V(s_{t+1}) - V(s_t) ]
                       └────────── TD 目标 ──────────┘
                     └──────────── TD 误差 δ ───────────┘
  • 优点:可在线学习、方差小;缺点:有偏。

🎮 王者荣耀里的 MC vs TD

  • MC:打完整整一局,看最后赢没赢,再回头给这一路的每个决策“算总账”——问题是延迟太久、方差大(赢一局有运气成分)。
  • TD:每一帧都更新——“我刚补到刀、血量还稳,比上一帧稍好一点”,立刻据此调整价值估计,不用等一局打完。 真实的开悟训练用的正是 TD 类方法(PPO 里的优势估计也基于 TD)。

TD 是现代强化学习的基石——第五部分的 Q-Learning、Sarsa、DQN 全都基于它。

其中 α学习率,控制每次更新的步长。


3.6 广义策略迭代 (GPI)

几乎所有 RL 算法都可以看成两个过程的反复交替:

   ┌──────────────────┐        ┌──────────────────┐
   │  策略评估          │        │  策略改进          │
   │ (算出当前策略价值) │ ─────► │ (对价值贪心得新策略)│
   └──────────────────┘        └──────────────────┘
            ▲                              │
            └──────────────────────────────┘
                     不断循环 → 收敛到 π*
  • 策略评估 (Evaluation):让价值函数逼近当前策略的真实价值;
  • 策略改进 (Improvement):根据价值贪心地更新策略。

两者交替,最终收敛到最优策略 π*。这就是广义策略迭代 (Generalized Policy Iteration)


✅ 小结

  • RL = 在智能体—环境循环中,用奖励信号试错学习;
  • 核心难点:评价性反馈、延迟奖励、非独立同分布数据;
  • 探索 vs 利用用 ε-贪心平衡;
  • 记住三对概念:预测/控制、有模型/无模型、同策略/异策略;
  • MC vs TD 是两种学价值的方式,TD 是主流;
  • GPI:评估 + 改进反复交替,通向最优策略。

📝 练习

  1. 举一个王者对局中“延迟奖励”的例子(如埋伏 gank),并说明为什么它让学习变难。
  2. 为「鲁班瞄准」实现一个 ε 从 1.0 线性衰减到 0.05 的函数,并画出衰减曲线。
  3. 用一句话分别概括 MC 与 TD 更新的区别(可用"打完一局算账 vs 每帧算账"作答)。
  4. 判断:Q-Learning 是同策略还是异策略?为什么?(第五部分会验证你的答案)
  5. 王者场景:解释“越塔强杀”为什么是一个典型的延迟奖励 + 信用分配难题——人头奖励在最后一刻才出现,AI 怎么知道是前面哪几步走位的功劳?

📗 延伸参考:ZhiqingXiao/rl-book(MC / TD / Sarsa / Q-Learning 的对照实现,可延伸阅读)

⬅️ 上一部分:第二部分 · 马尔可夫决策过程 ➡️ 下一部分:第四部分 · 应用环境示例

results matching ""

    No results matching ""