共计 1847 个字符,预计需要花费 5 分钟才能阅读完成。
为什么新手总在强化学习的第一步卡住?
刚接触强化学习 (Reinforcement Learning) 时,很多人会陷入两个典型误区:

- 把观测 (Observation) 直接当成状态(State):实际上观测可能是状态的局部信息,比如在自动驾驶中摄像头看到的画面只是部分路况
- 忽视折扣因子 (Discount Factor) 的作用 :误认为智能体(Agent) 应该同等看待近期奖励 (Reward) 和远期奖励,导致策略 (Policy) 短视
这就像玩电子游戏时,只盯着当前屏幕却不知道地图全貌,或是为了眼前的小金币反而掉进了陷阱。
一张图看懂强化学习的核心交互
用 Mermaid 绘制的标准交互模型图(建议在支持 Mermaid 的编辑器如 Typora 中查看):
graph LR
A[Agent] -->|Action| B(Environment)
B -->|Reward| A
B -->|New State| A
A -->|State| A
图中清晰地展示了四元组数据流:
- 状态(State):环境当前的特征表示,比如棋盘上棋子的位置
- 动作(Action):智能体采取的行为,如移动某个棋子
- 奖励(Reward):环境对动作的即时反馈,赢了 + 1 分 / 输了 - 1 分
- 新状态(New State):动作执行后的环境状态
用 Python 实现第一个强化学习系统
基础环境搭建
使用 Gymnasium(原 OpenAI Gym 的分支)创建悬崖漫步环境:
import gymnasium as gym
import numpy as np
# 创建环境
env = gym.make('CliffWalking-v0')
state, _ = env.reset() # 初始化环境
# Q-table 初始化(状态数×动作数)q_table = np.zeros((env.observation_space.n, env.action_space.n))
核心交互循环
实现经典的 Q -learning 算法:
# 超参数设置
alpha = 0.1 # 学习率
gamma = 0.9 # 折扣因子
epsilon = 0.1 # 探索概率
for episode in range(1000):
state, _ = env.reset()
done = False
while not done:
# ε-greedy 策略选择动作
if np.random.uniform(0, 1) < epsilon:
action = env.action_space.sample() # 随机探索
else:
action = np.argmax(q_table[state]) # 选择最优动作
# 与环境交互
next_state, reward, done, _, _ = env.step(action)
# Q-table 更新(贝尔曼方程)old_value = q_table[state, action]
next_max = np.max(q_table[next_state])
q_table[state, action] = old_value + alpha * (reward + gamma * next_max - old_value)
state = next_state
代码关键点说明:
env.step()返回的五个值中,我们主要使用前三个gamma * next_max体现了对未来奖励的折现alpha控制新知识覆盖旧知识的速度
新手避坑指南
1. 环境边界处理
在自定义环境时,常忘记检查动作有效性:
# 错误示范
action = 5 # 假设动作空间只有 4 个动作
# 正确做法
assert env.action_space.contains(action), "Invalid action"
2. 奖励稀疏性问题
当奖励非常稀少时(如只有最终胜利才有 + 1 奖励),可以:
- 设计中间奖励(如每存活一步 +0.01)
- 使用 reward shaping 技术
3. 学习率设置不当
常见问题是同时使用:
alpha = 0.9 # 学习率太大导致震荡
alpha = 0.001 # 学习率太小导致收敛慢
建议从 0.1 开始尝试,配合衰减策略:
alpha = max(0.01, alpha * 0.995) # 线性衰减
下一步可以尝试的改进方向
当你能完整运行基础版本后,不妨思考:
- 如果将悬崖掉落的惩罚从 -100 调整为 -10,会对策略产生什么影响?
- 尝试修改
epsilon的衰减曲线,比较不同探索策略的效果 - 用
matplotlib可视化 Q -table 中价值函数 (Value Function) 的变化过程
强化学习就像训练宠物:奖励是零食,状态是当前场景,而策略就是你教它的行为准则。刚开始可能手忙脚乱,但通过反复试错,最终能看到智能体学会优雅地避开所有悬崖,找到最优路径。
正文完
