问题与目标
强化学习不是给每条输入一个标准答案,而是让策略在环境中连续行动并从回报学习。本篇使用新版 Gymnasium 跑通 CartPole 轨迹,区分即时奖励、折扣回报、自然终止和时间截断。
核心概念

马尔可夫决策过程通常写成 (S, A, P, R, γ):状态、动作、转移、奖励和折扣因子。策略 π(a|s) 根据状态选择动作;一串交互形成轨迹;从时间 t 开始的折扣回报为:
text
G_t = r_t + γr_(t+1) + γ²r_(t+2) + ...
terminated 表示任务在 MDP 意义下结束,truncated 表示因时间或外部限制被截断。价值目标是否 Bootstrap 要区分二者。
可运行实现
bash
python -m pip install "gymnasium[classic-control]>=1,<2"
python
import gymnasium as gym
def discounted_return(rewards: list[float], gamma: float) -> float:
value = 0.0
for reward in reversed(rewards):
value = reward + gamma * value
return value
env = gym.make("CartPole-v1")
observation, info = env.reset(seed=42)
env.action_space.seed(42)
rewards = []
terminated = truncated = False
while not (terminated or truncated):
action = env.action_space.sample()
observation, reward, terminated, truncated, info = env.step(action)
rewards.append(float(reward))
print({
"steps": len(rewards),
"return_gamma_1": discounted_return(rewards, 1.0),
"return_gamma_099": round(discounted_return(rewards, 0.99), 3),
"terminated": terminated,
"truncated": truncated,
})
env.close()
随机策略只是环境基线。多运行若干 Seed,记录平均回报和标准差,之后训练策略才有可比较对象。
常见问题与排查
沿用旧 Gym 的四返回值
新版 step() 返回五项,reset() 返回观察与 info。训练目标中不要简单把截断当自然终止。
单局回报高就说明策略很好
环境和策略都有随机性。使用固定 Seed 集合报告均值、标准差和最差结果。
奖励等于最终目标
奖励只是优化信号。设计不完整时,策略可能找到取巧路径,需要单独的真实任务指标和约束。
Agent 与第 08 阶段含义相同
这里的 Agent 是环境中的策略主体;第 08 阶段主要讨论运行时规划与工具编排。后者不一定经过强化学习。
小结
强化学习首先是一套交互与评估协议。正确处理轨迹、回报、终止、截断和随机种子,才能继续讨论策略怎样学习。
许可协议:CC BY-NC 4.0
更新于 1 小时前
觉得文章有帮助?点个赞吧!
0 条评论


