本节摘要:RL 让智能体通过与环境交互、最大化累积奖励来学习策略;无固定标签,靠试错与奖励信号。核心要素:Agent、Environment、State、Action、Reward、Policy、Value。
强化学习(Reinforcement Learning, RL)是机器学习范式:智能体(Agent)在环境(Environment)中执行动作(Action),获得奖励(Reward)与下一状态(State),目标最大化累积奖励(Cumulative Reward)。没有标注的「正确答案」,只有延迟、可能稀疏的回报。
| 概念 | 含义 |
|---|---|
| Agent | 决策者 |
| Environment | 响应动作、返回 s', r |
| State s | 决策所需环境描述 |
| Action a | 离散或连续动作空间 |
| Reward r | 即时反馈,可正可负 |
| Policy π(a|s) | 状态→动作规则 |
| Value V(s), Q(s,a) | 期望累积回报 |
基于模型:学环境转移 P(s'|s,a) 再规划。无模型:直接从经验学 Q 或 π(本教程重点)。
⚠️ 常见坑:奖励设计错误——Agent 会优化你量到的 reward,而非你「以为的」目标。
💡 关键直觉:RL 难在信用分配——哪步动作该为 100 步后的成败负责?
很多初学者混淆"训练时智能体在做什么"和"部署时智能体在做什么",这里用一个最小的交互循环把两者分开。下面是一段概念示意代码,展示一个通用训练回合的样子:
# 概念:一个训练回合(episode)的骨架 s = env.reset() # 观测初始状态 for t in range(horizon): a = policy.sample_action(s) # 按策略选动作(训练时带探索) s2, r, done = env.step(a) # 环境返回下一状态、奖励、是否结束 policy.update(s, a, r, s2) # 用经验更新策略/价值 if done: break s = s2
训练循环 vs 推断循环:训练时"选动作"往往带随机性(探索),"更新"是每步或每回合做一次;部署时没有更新步骤,只剩"观测→选动作→执行"的闭环,且选动作通常是确定性的(选价值最大的动作)。把这条骨架看懂了,再回头看七要素表格,每个要素都有了落点:S/A 是接口的类型,Reward 是 update 的唯一信号,Policy 决定 sample_action 怎么选,Value 是 update 用来估计好坏的工具。
信用分配为什么难:在上面的循环里,一个动作的好坏可能要几十步之后才反映在 reward 里。比如棋类游戏,第 5 步的一个决策,直到第 40 步终局才知道赢没赢。强化学习算法的本质工作,就是把这个"遥远的奖励"一步步回溯到每个动作头上——MDP 的累积回报 G_t 是这个回溯的数学形式,第 2 章的价值函数与 Bellman 方程就是它的递推实现。
奖励设计的例子:假设要让一个机器人学会把球推进球门。如果只在进球时给 +1、其他时刻给 0,奖励极其稀疏,前几百万步机器人学不到任何东西(Q 长期为 0)。更常见的是做奖励塑形(reward shaping):离球门每近一步给一点小正奖励,但仍保留"进球 +1"作为真正的目标。这里有个著名陷阱——如果塑形奖励设计不当(比如"向前移动就给分"),机器人会学会原地转圈"刷分"而不进球。这个例子正好印证本节"常见坑":Agent 优化的是你量到的 reward,不是你心里想要的目标。
动手把三个熟悉的任务拆成七要素,检验你是否真理解了 RL 的定义。任务一:让一只虚拟老鼠走出迷宫找奶酪;任务二:训练智能体下国际象棋;任务三:让机器人学会倒立摆平衡。对每个任务分别写出:状态是什么(老鼠位置?棋盘局面?摆角与角速度?)、动作是什么(上下左右?走哪步棋?施加多大力矩?)、奖励怎么给(找到奶酪 +1?赢棋 +1?摆角保持竖直就 +0.1?)。写完后重点检查奖励设计——如果任务三的奖励只写"倒下就 -1"而没写"保持直立给正奖励",想想智能体要多久才能偶然学会站稳。这个练习把"七要素"从名词变成了你手里的分析工具:拿到任何新问题,先拆七要素,再谈算法。带着这张表进入第 2 章,你会更容易理解 MDP 五元组正是七要素的数学化——S/A/R 原封不动,π 和 V/Q 则是"怎么决策、怎么评估"的展开。