强化学习数学原理 - 第1章:基本概念 (Basic Concepts)
1. 为什么需要强化学习?
在进入数学公式之前,我们需要理解强化学习(Reinforcement Learning, RL)解决的是什么核心问题。
与监督学习(Supervised Learning)不同,RL 没有“上帝视角”的标签(Label)。Agent(智能体)是在未知的环境中,通过**试错(Trial-and-Error)**来学习的。这就像一个婴儿学习走路,没有说明书,只有摔倒时的疼痛(负奖励)和站稳时的喜悦(正奖励)。
本章我们将基于 Westlake University 赵世钰老师 的课程,结合配套的 GridWorld 代码,从零构建 RL 的数学大厦——马尔可夫决策过程 (MDP)。
2. 核心图景:Agent 与 Environment 的交互
RL 的世界观可以浓缩为一张图(对应视频中的核心板书):
- Time: Agent 处于状态(State)。
- Decision: Agent 观察到,根据策略选择动作(Action)。
- Interaction: Agent 将施加给 Environment。
- Feedback: Environment 根据物理规则(Dynamics)演变到新状态,并反馈即时奖励(Reward)。
- Loop: 时间来到,循环继续。
这个循环产生的序列称为轨迹 (Trajectory):
3. 马尔可夫决策过程 (MDP) 深度解析
为了用数学描述上述过程,我们定义 MDP 五元组。
\mathcal{S}">3.1 状态空间 (State Space,)
状态是 Agent 做决策的依据。
- GridWorld 实例: 在一个的网格中,状态空间是所有方格的集合。
$$
或者将其展平为索引。 - 代码视角:
在src/grid_world.py中,self.num_states = env_size[0] * env_size[1]定义了状态大小。
\mathcal{A}">3.2 动作空间 (Action Space,)- GridWorld 实例: Agent 可以向四个方向移动或原地不动。
$$ - 代码视角:
1
2
# 动作被编码为坐标的变化量
self.action_space = [(0, -1), (0, 1), (-1, 0), (1, 0), (0, 0)]
$$
1 | # 动作被编码为坐标的变化量 |
\mathcal{P}-——-核心中的核心">3.3 状态转移概率 (State Transition Probability,) —— 核心中的核心
这是环境的“物理定律”。当我们执行动作时,环境并不一定 100% 听话。
- 定义:
$$
它表示:在状态采取动作,跳转到状态的概率。 - 性质:。
- GridWorld 代码逻辑:
虽然书中的数学定义允许随机性(例如:想向右走,但有 10% 概率被风吹向上),但在配套代码grid_world.py的基础实现中,转移是确定性 (Deterministic) 的:注意:理解 MDP 时,必须时刻记住通常是一个概率分布,确定性只是概率为 1 的特例。1
2
3
4def _get_next_state_and_reward(self, state, action):
# 确定性计算:当前坐标 + 动作向量
new_state = tuple(np.array(state) + np.array(action))
# ... (然后进行边界检查,撞墙则弹回)
\mathcal{R}">3.4 奖励函数 (Reward Function,)
奖励是指挥棒,引导 Agent 学习我们期望的行为。
- 定义:
$$
或者更通用的形式,依赖于下一状态。 - GridWorld 设计哲学:
在代码中,Reward 设计不仅是为了告诉 Agent “好坏”,更是为了“引导”。reward_target = 1: 正向激励,到达终点。reward_forbidden = -10: 强负反馈,踩到陷阱(禁区)。reward_step = -0.1(假设值): 生存惩罚。每走一步都扣分,这不仅不是坏事,反而是为了鼓励 Agent 走最短路径(因为走得越久扣得越多)。
\gamma">3.5 折扣因子 (Discount Factor,)
这是一个常数。为什么要它?
- 数学收敛性: 避免无限时间序列求和发散。
- 经济学/心理学: “双鸟在林不如一鸟在手”。未来的奖励充满不确定性,且价值随时间衰减。
4. 回报 (Return) —— 真正要最大化的目标
初学者容易混淆 Reward (即时奖励) 和 Return (回报)。
- Reward (): 这一步走得怎么样?
- Return (): 从这一步开始,未来这一辈子总共能拿多少分?
数学定义(Discounted Return):
从代码看 Return 的计算:
在 example_grid_world.py 的循环中,我们其实是在收集:
1 | state = env.reset() |
\pi">5. 策略 (Policy,)
MDP 给了我们环境规则,Policy 则是 Agent 的玩法。
- 定义:是在状态选择动作的概率分布。
$$ - 代码实战:
在example_grid_world.py中,有一段代码手动添加了一个策略矩阵:可视化的结果是:在每个格子上,会有不同粗细的箭头指向不同方向,箭头越粗代表越大。1
2
3
4
5
6
7# 创建一个随机策略矩阵 (num_states x num_actions)
policy_matrix = np.random.rand(env.num_states, len(env.action_space))
# 归一化:保证每一行的概率和为 1
policy_matrix /= policy_matrix.sum(axis=1)[:, np.newaxis]
env.add_policy(policy_matrix) # 可视化策略箭头
6. 本章总结与下章预告
本章我们构建了 RL 的静态框架:
- 我们有了地图 (State)。
- 我们知道能怎么走 (Action)。
- 我们知道走一步会发生什么 (Transition)。
- 我们知道什么是好的结果 (Reward)。
- 我们定义了终极目标:最大化 Return (),而不是短视地看。
遗留问题:
现在 Agent 只是在“瞎走”(Random Policy)。如果你是 Agent,站在某个格子上,你怎么知道往哪走才是通往高 Return 的路?
你需要一个“地图导航”,告诉你每个格子的价值 (Value)。
这就引出了下一章的核心:状态价值函数 (State Value) 与 贝尔曼方程 (Bellman Equation) —— 它们是 RL 中评估策略好坏的标尺。
下一章:第2章 - 状态值与贝尔曼方程 >>

