当前位置:首页 > 手机资讯 > 正文

蘑菇书(EasyRL)学习笔记(3)

        学习(learning)和规划(planning)是序列决策的两个基本问题。如下图所示,在强化学习中,环境初始时是未知的,智能体不知道环境如何工作,它通过不断地与环境交互,逐渐改进策略。

学习

        在规划中,环境是已知的,智能体已经掌握了环境的所有规则和运行机制。它可以在不与环境交互的情况下,通过计算预先模拟出一个完美的模型。也就是说,智能体只需要知道当前的状态,就可以开始推演未来的变化,找到解决问题的最佳方案。 

        例如,如下图所示的游戏中,我们明确知道规则。如果选择左边,环境会发生什么变化是完全确定的。因此,智能体可以通过这些已知规则在脑海中“演练”整个决策过程,而无需实际操作或试验。

        这种方法是强化学习的一种常见思路。首先,智能体需要学习环境的运行方式,构建一个“环境模型”。然后,它利用这个模型来进行规划,模拟出一系列动作,从而找到实现目标的最优路径。简单来说,就是“先弄清规则,再靠模拟找到最优解”。

 规划

2.1、 探索和利用的含义

  • 探索:尝试不同的动作,从而了解哪些动作可能带来更高的奖励。探索的过程通常是通过“试错”来完成的。

        比如,你想找一家好餐馆,就需要去尝试新的餐馆。

  • 利用:选择已经知道可以带来高奖励的动作,而不去尝试新的动作。

        比如,你去了一家自己喜欢的餐馆,因为你知道它的菜很好吃。

2.2、 探索与利用的权衡

  • 探索帮助你发现可能更优的策略,但短期内可能收益较低。

  • 利用可以让你直接获得较高的即时奖励,但可能错过更好的策略。

举个例子:

选择餐馆:探索是尝试新的餐馆,可能会找到一家更好的,也可能踩雷;利用是直接去熟悉的餐馆,确保好吃但少了惊喜。

玩游戏:探索是尝试新策略,可能学到更强的招式;利用是重复使用熟悉的策略,但可能无法应对某些对手。

2.3、 强化学习的探索与利用问题

        强化学习中,奖励往往在多步动作之后才能观察到。为简化讨论,我们先看单步奖励的情形:
        假设有多个动作(如选择不同的餐馆),目标是通过尝试找到能带来最大奖励的动作。

2.4、 K-臂赌博机模型

如下图所示,K-臂赌博机是一种理论模型,用来研究探索与利用的平衡:

  • 有 K 个摇臂,每个摇臂对应一个奖励概率,但你并不知道哪个摇臂奖励最高。

  • 目标是通过有限的尝试次数,尽可能获得更多奖励。

在这种模型中:

  • 纯探索策略:轮流尝试每个摇臂,估计每个摇臂的奖励概率。

    • 优点:能很好地估计摇臂的奖励。

    • 缺点:浪费了很多尝试机会,无法充分利用奖励更高的摇臂。

  • 纯利用策略:总是选择当前奖励最高的摇臂。

    • 优点:能快速获得高奖励。

    • 缺点:可能错过真正最优的摇臂。

2.5、 探索与利用的矛盾

  • 探索需要花时间去“试错”,可能牺牲短期奖励。

  • 利用则专注于当前的最优选择,可能错失长期收益。

  • 在有限的尝试次数中,要想获得最大累计奖励,必须在探索和利用之间找到一个折中。

总结:探索是为了了解环境,利用是为了获得奖励。在强化学习中,如何平衡探索与利用是一个关键问题。

                强化学习是一个结合理论和实践的机器学习分支。要想深入学习强化学习,既需要掌握其算法背后的数学原理,也需要通过实践去实现和验证这些算法的效果。

3.1、 理论与实践相结合

  • 理论部分:理解强化学习中涉及的数学模型(如马尔可夫决策过程、动态规划)和关键算法(如 Q-learning、深度 Q 网络)。
  • 实践部分:通过实验来验证算法是否有效,这也是强化学习学习过程中的重要环节。

3.2、 实践中的工具与实现

        强化学习实践可以通过编程来实现,目前已有许多成熟的深度学习框架和工具可以辅助实现算法:

  • 常用框架

    • PyTorch:灵活、高效,适合快速迭代开发。

    • TensorFlow:功能强大,支持分布式训练,适合大型项目。

    • Keras:易用性高,适合入门。

  • 优势:这些工具封装了底层的数学运算和优化过程,开发者可以专注于算法的实现,而不需要从零开始“造轮子”。

3.3、 如何高效学习和实践

  • 选择框架:熟练掌握两三种框架即可实现大部分强化学习功能,无需全部精通。

  • 动手实践:将强化学习算法应用于不同实验环境,如 OpenAI Gym 提供的标准强化学习环境,进行算法调试和效果评估。

  • 理论验证:在实验中观察算法行为是否符合理论预期,同时改进算法以提升效果。

通过理论与实践的结合,可以更好地理解强化学习的本质,并能灵活应用到实际问题中。

3.4、Gym 的基本介绍

  • Gym 是什么:一个环境仿真库,用于测试和开发强化学习算法。

        提供多种环境,例如 Atari 游戏和机器人控制等。

        包括离散控制(如向上、向下动作)和连续控制(如机器人行走的角度调整)。

  • 版本问题:Gym 0.26.0 及之后的版本可能与旧代码不兼容,因此建议安装 0.25.2 版本:

 
  • 图形界面依赖:需要安装 库来显示图形界面:

 
3.4.1、Gym 的核心功能

        以下是 Gym 的几个关键方法和属性:

  • 初始化环境

     
  • 随机选择动作

     
  • 执行动作

     
  1. :观测到的状态(如屏幕像素值或物置)。
  2. :该动作的即时奖励。
  3. :布尔值,表示游戏是否结束。
  4. :额外调试信息(正式评测时不能使用)。
  • 显示界面

     
  • 关闭环境

     
3.4.2、 完整代码示例

以 环境为例:

 

输出示例:

 
  • 每一行是一个观测状态, 环境的状态是一个四维向量。

 

3.4.3、 环境的注册和查看

Gym 提供了许多预定义的环境,可以用以下代码查看所有已注册的环境:

 

输出示例: 

 
3.4.4、环境的观测空间和动作空间
  • 观测空间:描述环境的状态信息,例如屏幕像素或物置。

        可以是离散的(有限取值)或连续的(无限取值)。

  • 动作空间:描述智能体可以采取的动作,例如左右移动。

        通过 查看动作空间类型。

        通过 从动作空间中随机取样。

3.4.5、 总结
  • Gym 提供了一个标准化的接口,使得我们可以快速进行强化学习算法的实验。

  • 通过 方法可以模拟强化学习的基本流程,即 S→A→R→S′。

  • 学习如何使用 Gym 的各种环境,是强化学习实践的重要基础。

3.5、小车上山任务 (MountainCar-v0)

3.5.1、任务介绍
  • 任务目标:让小车利用左右移动的加速冲上山坡。

  • 观测空间:描述环境状态的值范围和维度。

    • 是一个长度为 2 的数组,表示小车的位置和速度。

    • 类型为 ,即连续值。

  • 动作空间:智能体可以执行的动作。

    • 动作有 3 种,分别为向左加速、保持不动和向右加速。

    • 类型为 ,即离散值。

3.5.2、代码实现与可视化
1. 环境初始化与空间信息打印
 
2. 智能体定义 
 
 3、智能体与环境交互
 
4. 环境交互与轨迹可视化
 
5. 性能评估
 
输出示例
  1. 环境信息

     
  2. 回合奖励

     
  3. 轨迹图

    图表显示了小车在回合中的水平位置变化,红色虚线表示目标位置。
  1. 平均回合奖励

     

总结
  1. 环境操作方法

    • :重置环境。
    • :执行动作,获取反馈。
    • :显示图形界面。
    • :关闭环境。
  2. 性能评估

    • 学术界一般使用连续 100 回合的平均回合奖励作为性能指标。
    • 本例中,智能体在 MountainCar-v0 的表现接近任务解决标准(-110)。

4.1、基本概念

  • 强化学习(Reinforcement Learning, RL):
    智能体与复杂且不确定的环境交互,尝试使获得的奖励最大化的算法。

  • 动作(Action):
    智能体基于当前状态输出给环境的行为。

  • 状态(State):
    智能体从环境中获取的信息,用于感知当前环境。

  • 奖励(Reward):
    环境给予智能体的反馈信号,指示某个动作的价值以及奖励大小。

  • 探索(Exploration):
    尝试新的动作,可能获取更高奖励,也可能失败。

  • 利用(Exploitation):
    重复执行已知能够获得最大奖励的动作。

4.2、扩展概念

  • 深度强化学习(Deep Reinforcement Learning, DRL):
    使用神经网络拟合价值函数或策略网络,端到端学习方法,无需手动设计特征。

  • 全观测和部分观测:

    1. 全部可观测(Full Observability): 智能体的状态等价于环境状态。
    2. 完全可观测(Fully Observed): 智能体可观察到环境的所有状态。
    3. 部分可观测(Partially Observed): 智能体无法观察到环境的全部状态。
  • 部分可观测马尔可夫决策过程(Partially Observable Markov Decision Process, POMDP):
    马尔可夫决策过程的扩展,假设智能体仅能获得部分观测值,但仍满足马尔可夫性质。

4.3、动作空间

  • 动作空间(Action Space):
    环境中智能体可采取的动作。
    1. 离散动作空间(Discrete Action Space): 动作数量有限。
    2. 连续动作空间(Continuous Action Space): 动作数量无限或连续变化。

4.4、算法分类

  • 基于策略的(Policy-based):
    强化学习直接优化策略,制定最优动作以获得最大奖励。

  • 基于价值的(Value-based):
    通过维护价值表或价值函数,选择能使价值最大化的动作,而不显式制定策略。

4.5、模型结构

  • 有模型(Model-based):
    学习状态转移模型,用于决策。

  • 免模型(Model-free):
    不估计状态转移,直接学习价值函数或策略网络来进行决策。

1-1 强化学习的基本结构是什么?
答:强化学习的基本结构包括智能体、环境、状态、动作和奖励。智能体通过与环境交互来学习如何做决策,从而最大化奖励。
例子: 例如,在玩棋类游戏时,智能体(棋手)在每个状态(棋盘布局)下选择一个动作(下棋),并根据对手的反应获得奖励(赢得一局或输掉一局)。

1-2 强化学习相对于监督学习为什么训练过程会更加困难?
答:强化学习的训练过程依赖于与环境的交互,奖励可能延迟且不确定,因此智能体需要通过不断尝试来探索最佳策略。而监督学习使用的是已有的标注数据,训练过程较为直接。
例子: 在强化学习中,智能体可能在多次尝试后才知道是否采取了好的动作,而监督学习则可以通过现成的标签直接进行训练。

1-3 强化学习的基本特征有哪些?
答:强化学习的基本特征包括:探索与利用的平衡、状态与动作的反馈、奖励的延迟性和不确定性、长期决策。
例子: 一个机器人学习如何在迷宫中找到出口时,它需要在“尝试新的路线”与“重复成功的路线”之间做出选择,这就是探索与利用的平衡。

1-4 近几年强化学习发展迅速的原因有哪些?
答:强化学习发展迅速的原因包括计算能力的提升、大规模数据的获取、深度学习的结合以及成功的应用实例(如AlphaGo)。
例子: AlphaGo的成功展示了强化学习在复杂决策中的应用,深度学习技术使得强化学习在大规模游戏和实际应用中得以实现。

1-5 状态和观测有什么关系?
答:状态是环境的真实描述,观测是智能体基于当前状态获取的部分信息。
例子: 在自动驾驶中,状态可能包括车辆的速度、位置和周围环境,而观测则是智能体通过摄像头或传感器得到的部分信息,比如看到的路标或行人。

1-6 一个强化学习智能体由什么组成?
答:一个强化学习智能体由感知器(获取状态或观测)、决策器(选择动作)、执行器(执行动作)和学习机制(调整策略)组成。
例子: 一个玩游戏的AI智能体,感知器是它看到的屏幕,决策器是它的算法,用来选择下一步的动作,执行器是它在屏幕上操作的动作,而学习机制则是它不断调整策略的部分。

1-7 根据强化学习智能体的不同,我们可以将其分为哪几类?
答:强化学习智能体可以分为基于策略的、基于价值的、以及基于模型的智能体。
例子: 基于策略的智能体直接学习如何选择动作(如强化学习中的策略梯度方法);基于价值的智能体通过评估每个状态的价值来做决策(如Q-learning);基于模型的智能体学习环境的模型来进行规划(如深度强化学习中的模型预测控制)。

1-8 基于策略迭代和基于价值迭代的强化学习方法有什么区别?
答:基于策略迭代通过不断优化策略来求解最优策略,而基于价值迭代通过更新每个状态的价值来求解最优策略。
例子: 在基于策略迭代中,智能体先制定一个策略,然后不断改善它;在基于价值迭代中,智能体先估计每个状态的价值,然后根据这些估值来选择动作。

1-9 有模型学习和免模型学习有什么区别?
答:有模型学习通过学习环境的转移模型来做决策,而免模型学习直接通过学习价值函数或策略来做决策,不需要估计环境转移。
例子: 有模型学习就像你预先知道天气变化规律,可以计划未来几天的行动;免模型学习则是你每次都需要根据当前天气直接做出决策,而不考虑未来的天气。

1-10 如何通俗理解强化学习?
答:强化学习是通过智能体与环境的互动,尝试不同的动作来学习如何获得最大奖励。它类似于小孩通过玩游戏、做实验不断调整自己的策略,最终获得更好的结果。
例子: 想象一个小孩在玩一个新游戏,开始时不清楚怎么玩,但随着尝试和获得反馈,他会逐步学会最有效的游戏策略。

1-1 请用一句话谈一下你对于强化学习的认识?
答:强化学习是让智能体通过与环境交互、试错的方式,学习如何最大化长期奖励。
例子: 就像是小孩学会骑自行车,经过多次摔倒和尝试,逐渐掌握了骑行技巧。

1-2 强化学习、监督学习和无监督学习有什么区别?
答:强化学习通过与环境交互学习最优策略,监督学习通过标签数据学习映射关系,无监督学习通过数据中的潜在模式进行学习。
例子: 监督学习就像是老师给出题目和答案,强化学习像是小孩自己通过试错找到答案,而无监督学习像是小孩通过观察现象来自己总结规律。

1-3 强化学习的使用场景有哪些?
答:强化学习常用于需要决策和长期规划的场景,如游戏(如AlphaGo)、机器人控制、自动驾驶、推荐系统等。
例子: 在自动驾驶中,智能体(车)需要根据实时交通情况决定行驶路径,这正是强化学习的应用场景。

1-4 强化学习中所谓的损失函数与深度学习中的损失函数有什么区别?
答:强化学习中的损失函数与奖励信号相关,通过优化策略来最大化长期奖励;而深度学习中的损失函数通常是优化预测误差。
例子: 在深度学习中,我们优化的是预测误差;而在强化学习中,我们优化的是智能体的策略,使得它能够获得更多的奖励。

最新文章