菜单

强化学习

相关源文件

本文档概述了 ML-For-Beginners 存储库中的强化学习 (RL) 概念和实现,特别关注 Q-Learning 和 OpenAI Gym 环境。有关监督学习等其他机器学习范例的信息,请参阅核心机器学习概念监督学习

强化学习导论

强化学习代表了与监督学习和无监督学习并列的三大基本机器学习范式之一。RL 的核心是决策制定——使智能体能够通过与环境的互动来学习以达成目标。与需要标记数据的监督学习不同,RL 通过试错来学习。

在 RL 范式中,智能体通过在环境中采取行动来学习做出决策,以最大化累积奖励。这种方法已成功应用于从游戏到机器人技术的各种问题。

RL 组件和工作流程

图示:强化学习的核心组件和信息流

来源:8-Reinforcement/README.md22-44 8-Reinforcement/1-QLearning/README.md6-8

RL 的关键组成部分包括

  1. 智能体 (Agent):学习者或决策者(例如,我们示例中的 Peter)。
  2. 环境 (Environment):智能体与之互动的世界(例如,带有障碍物的游戏棋盘)。
  3. 状态 (State):智能体在环境中的当前情况。
  4. 行动 (Action):智能体可以执行的移动。
  5. 奖励 (Reward):来自环境的关于行动质量的反馈。
  6. 策略 (Policy):智能体根据状态决定行动的策略。

在存储库中,强化学习通过“彼得与狼”(Peter and the Wolf)场景进行演示,该场景灵感来自俄罗斯作曲家谢尔盖·普罗科菲耶夫的音乐童话。“彼得”需要探索周围环境,寻找苹果,并避开狼。

图示:强化学习循环

来源:8-Reinforcement/1-QLearning/README.md28-35 8-Reinforcement/README.md23-44

Q-Learning 算法

Q-Learning 是一种无模型强化学习算法,用于学习在特定状态下采取某个行动的价值。它用于为任何给定的有限马尔可夫决策过程找到最优的行动选择策略。

Q 表结构

在 Q-Learning 中,我们使用 Q 表来存储在给定状态下采取给定行动的预期效用。Q 表本质上是一个查找表,其中

  • 行代表状态
  • 列代表行动
  • 单元格包含 Q 值(预期累积奖励)

图示:代码库中实现的 Q 表结构

来源:8-Reinforcement/1-QLearning/README.md8-Reinforcement/2-Gym/README.md177-191

Bellman 方程

Q-Learning 的核心是 Bellman 方程,它定义了 Q 值如何更新

Q(s,a) ← (1-α) × Q(s,a) + α × (r + γ × max(Q(s',a')))

其中

  • Q(s,a) 是状态 s 和行动 a 的 Q 值
  • α 是学习率
  • r 是获得的奖励
  • γ 是未来奖励的折扣因子
  • max(Q(s',a')) 是下一个状态 s' 所有可能行动 a' 中的最大 Q 值

该方程在代码的 8-Reinforcement/1-QLearning/README.md2558-Reinforcement/2-Gym/README.md254 中实现。

探索与利用

RL 中的一个关键挑战是在探索(尝试新行动以寻找更好的策略)和利用(使用已知的好行动)之间取得平衡。

图示:用于平衡探索与利用的 ε-greedy 策略

来源:8-Reinforcement/1-QLearning/README.md8-Reinforcement/2-Gym/README.md239-246

在代码中,这通常通过 ε-greedy 策略来实现,其中

  • 以 ε (epsilon) 的概率,选择一个随机行动(探索)
  • 以 1-ε 的概率,选择 Q 值最高的行动(利用)

实现可以在 8-Reinforcement/1-QLearning/README.md8-Reinforcement/2-Gym/README.md 中。

Q-Learning 实现示例

该存储库在“彼得与狼”场景中实现了 Q-Learning

  1. 彼得在一个棋盘环境中导航,寻找苹果,同时避开狼和水。
  2. 状态是彼得在棋盘上的位置
  3. 行动是移动(上、下、左、右)
  4. 奖励基于结果定义(找到苹果为正,遭遇狼或水为负)

图示:rlboard.py 中环境实现的核心组件

来源:8-Reinforcement/1-QLearning/rlboard.py8-Reinforcement/1-QLearning/README.md136-154

OpenAI Gym 环境

强化学习部分的第二部分使用了 OpenAI Gym,这是一个用于开发和比较具有标准化环境的 RL 算法的工具包。

Gym 环境结构

Gym 为 RL 任务提供了一个统一的接口

图示:智能体与 Gym 环境的交互

来源:8-Reinforcement/2-Gym/README.md8-Reinforcement/2-Gym/README.md79-90

每个 Gym 环境提供

  • observation_space:定义环境观测的结构
  • action_space:定义可能的行动
  • reset():初始化环境
  • step(action):执行一个行动并返回观测、奖励、完成标志和信息
  • render():可视化当前状态

CartPole 环境

CartPole 环境用于教彼得保持平衡(类似于滑冰以逃离狼)

图示:CartPole 环境结构

来源:8-Reinforcement/2-Gym/README.md8-Reinforcement/2-Gym/README.md18-26

状态离散化

由于 Q-Learning 通常处理离散状态,而 CartPole 环境具有连续的状态值,因此需要进行离散化。

图示:状态离散化过程

来源:8-Reinforcement/2-Gym/README.md8-Reinforcement/2-Gym/README.md137-139

显示了两种离散化方法

  1. 简单除法和四舍五入:8-Reinforcement/2-Gym/README.md136-139
  2. 基于 Bin 的离散化:8-Reinforcement/2-Gym/README.md141-155

Gym 版 Q-Learning

CartPole 的 Q-Learning 算法遵循与基本版本相同的原则,并适应了连续状态空间

  1. Q 表实现为一个字典,键是 (状态, 行动) 元组
  2. 状态从连续观测中离散化
  3. 学习过程使用 Bellman 方程来更新 Q 值
  4. 性能通过杆子保持平衡的时间来衡量

图示:带有 OpenAI Gym 的 Q-Learning 算法流程

来源:8-Reinforcement/2-Gym/README.md8-Reinforcement/2-Gym/README.md177-191

分析学习进程

该存储库包含分析智能体随时间如何改进的方法

图示:学习进度分析流程

来源: 8-Reinforcement/2-Gym/README.md276-288

运行平均值的计算位于 8-Reinforcement/2-Gym/README.md284-285,可视化方法显示在 8-Reinforcement/2-Gym/README.md276-288

应用与扩展

该存储库包含两个强化学习作业,它们扩展了相关概念

  1. 更真实的世界:通过能量和疲劳机制来增强“彼得与狼”场景 8-Reinforcement/1-QLearning/assignment.md

  2. 爬山车问题:使用与 OpenAI Gym 的爬山车环境相同的 Q-Learning 方法 8-Reinforcement/2-Gym/assignment.md

实现挑战

RL 实现中的常见挑战包括

  1. 超参数调整:寻找学习率 (α)、折扣因子 (γ) 和探索率 (ε) 的最优值
  2. 状态空间大小:通过有效的离散化来管理大型状态空间
  3. 奖励稀疏性:处理奖励稀疏的环境
  4. 收敛性问题:确保算法学习到最优策略

代码提供了解决这些挑战的示例,特别是在 8-Reinforcement/2-Gym/README.md292-300 中讨论了超参数调整。

结论

强化学习为涉及顺序决策的问题提供了一种强大的方法。本存储库中的实现展示了

  1. 离散环境(“彼得与狼”)中的基本 Q-Learning
  2. 将 Q-Learning 应用于具有 OpenAI Gym (CartPole) 的连续状态空间
  3. 分析和改进 RL 性能的技术

这些示例为更复杂的 RL 应用和高级算法的进一步探索奠定了基础。

来源: 8-Reinforcement/README.md22-53 8-Reinforcement/2-Gym/README.md337-342