强化学习实战路线

强化学习(RL)研究智能体如何通过与环境交互,根据奖励信号学习策略。与监督学习不同,动作会影响后续状态和未来可获得的奖励。

1. 核心概念

  • Agent:决策主体。
  • Environment:交互环境。
  • State / Observation:状态或可观测信息。
  • Action:动作。
  • Reward:即时反馈。
  • Policy:策略 。
  • Return:未来奖励的折扣和。
  • Value:状态或动作的长期价值。

马尔可夫决策过程(MDP)通常写作 。折扣回报:

Bellman 最优方程:

2. 算法学习顺序

  1. 多臂老虎机:探索与利用。
  2. 动态规划:Policy Evaluation、Policy Iteration、Value Iteration。
  3. Monte Carlo 与 Temporal Difference。
  4. SARSA 与 Q-Learning。
  5. DQN:经验回放、目标网络。
  6. Policy Gradient:直接优化策略。
  7. Actor-Critic、A2C、PPO。
  8. SAC、TD3 等连续控制方法。
  9. 离线强化学习、模仿学习和 RLHF 等扩展方向。

Q-Learning 更新:

3. 最小实验:FrozenLake Q-Learning

import gymnasium as gym
import numpy as np
 
env = gym.make("FrozenLake-v1", is_slippery=False)
q = np.zeros((env.observation_space.n, env.action_space.n))
rng = np.random.default_rng(42)
alpha, gamma = 0.1, 0.99
episodes, epsilon = 10_000, 0.2
 
for episode in range(episodes):
    state, _ = env.reset(seed=episode)
    done = False
    while not done:
        if rng.random() < epsilon:
            action = env.action_space.sample()
        else:
            action = int(np.argmax(q[state]))
        next_state, reward, terminated, truncated, _ = env.step(action)
        target = reward + gamma * np.max(q[next_state]) * (not terminated)
        q[state, action] += alpha * (target - q[state, action])
        state = next_state
        done = terminated or truncated
 
    epsilon = max(0.02, epsilon * 0.9995)
 
print("Learned policy:", np.argmax(q, axis=1))
env.close()

该示例使用确定性小地图帮助理解更新过程。正式实验应单独评估策略,区分训练回报与测试回报,并用多个随机种子报告均值和波动。

4. 评估与常见陷阱

  • 多随机种子:RL 方差较大,不能只展示最好的一次运行。
  • 样本效率:记录环境交互步数,而不仅是训练轮数。
  • 稳定性:绘制学习曲线和置信区间。
  • 奖励设计:检查奖励是否诱导投机行为。
  • 终止状态:正确区分 terminated 与 truncated。
  • 训练/评估:评估时关闭探索噪声或使用确定性策略(视算法而定)。
  • 泛化:更换初始状态、环境参数和随机扰动进行测试。

5. 环境、课程与代码

6. 项目阶梯

  1. 多臂老虎机比较 epsilon-greedy、UCB 和 Thompson Sampling。
  2. FrozenLake 实现 Q-Learning 与 SARSA。
  3. CartPole 训练 DQN,并比较 Double DQN。
  4. 连续控制环境实现 PPO 或 SAC。
  5. 改变环境参数,评估策略鲁棒性和泛化。
  6. 写出奖励函数设计说明、学习曲线、计算预算和失败案例。

7. 论文阅读

推荐阅读

相关