强化学习基础交互模型图解析:从零构建智能决策系统

1次阅读
没有评论

共计 1847 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

为什么新手总在强化学习的第一步卡住?

刚接触强化学习 (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

图中清晰地展示了四元组数据流:

  1. 状态(State):环境当前的特征表示,比如棋盘上棋子的位置
  2. 动作(Action):智能体采取的行为,如移动某个棋子
  3. 奖励(Reward):环境对动作的即时反馈,赢了 + 1 分 / 输了 - 1 分
  4. 新状态(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)  # 线性衰减

下一步可以尝试的改进方向

当你能完整运行基础版本后,不妨思考:

  1. 如果将悬崖掉落的惩罚从 -100 调整为 -10,会对策略产生什么影响?
  2. 尝试修改 epsilon 的衰减曲线,比较不同探索策略的效果
  3. matplotlib 可视化 Q -table 中价值函数 (Value Function) 的变化过程

强化学习就像训练宠物:奖励是零食,状态是当前场景,而策略就是你教它的行为准则。刚开始可能手忙脚乱,但通过反复试错,最终能看到智能体学会优雅地避开所有悬崖,找到最优路径。

正文完
 0
评论(没有评论)