稀疏奖励问题解决方案总览

news2025/5/12 4:53:01

方案简介

HER (Hindsight Experience Replay) - 2017年

思想

HER(Hindsight Experience Replay)是一种特别设计用于解决稀疏奖励问题的强化学习算法。它主要用于那些具有高度稀疏奖励和延迟奖励的任务,特别是在连续动作空间中,如机械臂抓取、路径规划等。

工作原理

  1. 经验回放:HER在经验回放(Experience Replay)的基础上进行了扩展。经验回放是一种将过去的经验(状态、动作、奖励等)存储在一个回放缓冲区(Replay Buffer)中,以供后续训练的方法。
  2. 目标重标定:在每个回合结束后,HER会重新解释该回合中智能体的行为,将实际到达的状态作为新的目标,并据此重新计算奖励。
  3. 多样性:通过这种方式,HER实际上生成了多种不同目标下的经验,增加了训练样本的多样性,从而提高了样本效率。

适用范围

  1. 具有明确目标状态的任务(例如,机器人抓取、路径规划等)。
  2. 高度稀疏和延迟奖励的任务。
  3. 连续动作空间。

不适用范围

  1. 离散状态和动作空间

HER 主要设计用于连续状态空间,并且最有效的应用通常发生在这样的环境中。在离散状态和动作空间中,HER 可能不是最佳选择,因为在这些设置下其他方法(如表格学习或模型搜索)可能更有效。

2. 无明确目标的任务

HER 主要用于具有明确目标的任务,这些任务通常有一个状态或状态子集作为目标。对于没有明确目标的任务(比如,不是到达某个特定状态,而是最大化某种度量,如在平衡车问题中维持平衡),HER 可能不适用。

3. 完全观察不到的环境

在一些问题中,你可能无法观察到足够的信息来明确地定义一个“已经实现的目标”。在这些情况下,使用 HER 可能会很困难。

4. 高计算复杂性

HER 通常需要存储额外的转换和进行额外的学习步骤,这可能会增加算法的计算复杂性。对于计算资源有限的应用,这可能是一个问题。

5. 非稀疏奖励问题

虽然 HER 可以在非稀疏奖励设置下使用,但它可能不是最有效的解决方案,因为其他方法(如基于值的方法或策略梯度方法)可能更适合这种类型的问题。

6. 需要细致调优

根据问题的特性,HER 的有效性可能会受到如何采样“实现的目标”的影响。这可能需要进行大量的实验和调优,才能找到最有效的方式来使用 HER。

总体而言,尽管 HER 是一个非常有用的工具,但在选择是否使用它之前,最好先仔细考虑问题的特性和需求。

举例:在Atari游戏中的应用

  • 不适用性:由于Atari游戏通常没有清晰定义的“目标状态”,HER在这类游戏中不太适用。HER更多地应用于那些有明确目标状态的任务,如机器人学习。
  • 离散动作空间:Atari游戏大多在离散的动作空间中运行,而HER通常在连续的动作空间中表现得更好。

实现步骤

  1. 执行一个回合,收集 ** (s, a, r, s', g)**(状态、动作、奖励、新状态、目标)。
  2. 存储这些经验到经验回放缓冲区。
  3. 在回合结束后,选取一些实际达到的状态作为新的目标 ** g'**。
  4. 用新的目标 g' 重新计算奖励,并生成新的经验 ** (s, a, r', s', g')**。
  5. 将新生成的经验也存储到经验回放缓冲区。

目标如何设定

  1. 环境本身:像“抓取”或“推动”这样的任务通常有明确的目标状态,比如机械臂需要抓住某个物体。这些目标通常是由环境定义的。
  2. 任务定义:在多任务环境中,目标可能是动态分配的。例如,一个机器人可能有多个可选择的目标位置。
  3. 子任务:在分层或多任务学习中,子任务本身可能有各自的目标。
  4. 人为指定:在一些应用场景中,你可能需要人为地定义目标,尤其是在环境不直接提供目标的情况下。

ICM (Intrinsic Curiosity Module) - 2017年

思想

ICM 旨在通过生成内在奖励来促进智能体(agent)的探索行为。这些内在奖励是基于智能体对环境的模型(或预测)的不确定性或误差来计算的。简而言之,如果智能体无法准确地预测其动作的结果,那么该动作会得到高的内在奖励,以鼓励智能体进一步探索。

工作原理

ICM 主要由两部分组成:

前向模型(Forward Model)

  • 作用:

    1. 状态预测:前向模型尝试从当前状态和执行的动作预测下一个状态(或其特征表示)。

    2. 内在奖励生成:当预测与实际观察到的下一个状态有误差时,该误差用作内在奖励。预测越不准确,误差越大,意味着该状态-动作对更值得探索,因此生成更高的内在奖励。

  • 实际应用:

    1. 在环境中稀缺或完全没有外部奖励的情况下,前向模型的预测误差为代理提供了有用的探索信号。

逆向模型(Inverse Model)

  • 作用:
    1. 动作预测:逆向模型从当前状态 和下一个状态 预测应执行的动作
    2. 特征学习:通过逆向模型的训练,模型学习抽取对任务有用的状态特征,这有助于前向模型进行更有效的预测。
  • 实际应用:
    1. 逆向模型有助于学习状态表示,这是有效预测和决策所必需的。
    2. 两个模型合作生成内在奖励,并有助于在稀疏奖励和高度探索需求的环境中进行有效学习。逆向模型提供有关哪些状态特征对动作选择重要的信息,而前向模型使用这些特征以及执行的动作来生成内在奖励,从而推动探索。

适用范围

  • 高维、连续状态空间
  • 稀疏奖励问题
  • 复杂、非明确目标的任务

不适用范围

  1. 确定性环境

在确定性(或接近确定性)环境中,模型很快就能准确预测下一个状态,从而导致内在奖励降为零或接近零。这在实际应用中可能导致不足够的探索。

2. 资源消耗

ICM 需要训练额外的环境模型并进行在线预测,这会增加计算成本。在资源受限的设置中,这可能是一个问题。

3. 无法处理多模态结果

对于一个给定的状态和动作,如果有多种可能的下一个状态(即,多模态分布),基于误差的内在奖励可能不是最佳选择,因为模型可能会对其中一个模态进行过度拟合。

4. 高噪音环境

在高噪音环境中,即使模型能很好地捕获环境的一般动态,预测误差也可能会很高。这可能会导致不合适或不相关的探索。

5. 奖励稀疏但明确的目标

对于具有明确目标和奖励稀疏性但不需要复杂探索策略的任务,使用 ICM 可能是过度设计。在这种情况下,简单的基于目标的方法或者传统的强化学习方法可能更有效。

6. 需要细致的调优

ICM 的效果可能会受到超参数(例如,内在与外在奖励的权重、模型结构等)的影响,需要花费大量时间进行调优。

7. 对于无模型任务不是最优

ICM 需要建立一个环境模型。对于一些无模型或者模型不易获取的复杂任务,这可能是一个限制。

总的来说,在选择使用 ICM 之前,最好先考虑任务和环境的具体需求和特性。这将帮助你判断 ICM 是否适用,以及如何可能需要调整或改进它以适应特定的应用场景。

实现步骤

  1. 模型初始化:初始化策略网络和环境模型网络。
  2. 数据收集:运行智能体以收集经验(状态、动作、下一状态)。
  3. 模型预测:使用当前的环境模型来预测下一个状态。
  4. 计算内在奖励:内在奖励是预测下一状态和实际下一状态之间的差异。
  5. 策略更新:用内在奖励和外在奖励(如果有的话)来更新策略。
  6. 模型更新:用收集的经验来更新环境模型。

效果

alt

RND (Random Network Distillation) - 2018年

思想:

RND 也是用于生成内在奖励的算法,但其机制与 ICM 不同。RND 通过训练一个固定的随机网络(即“目标网络”)和一个可训练的网络(即“预测网络”),并使用两者之间的输出差异作为内在奖励。

工作原理:

  1. 目标网络与预测网络:初始化两个相同结构的网络。其中一个(目标网络)的权重是随机初始化并固定不变的,而另一个(预测网络)是可训练的。

  2. 内在奖励生成:在与环境交互过程中,智能体观察到的状态(或状态的某种特征)被送入这两个网络。内在奖励计算为两个网络输出之间的差异,通常使用平方误差。

  3. 预测网络更新:与环境交互产生的数据用于更新预测网络,以减小与目标网络之间的输出差异。

  4. 策略更新:使用内在奖励(可能与外在奖励一起)来更新智能体的策略。

适用范围:

  1. 奖励稀疏环境:当外在奖励非常少或者完全没有时。
  2. 高维和连续状态空间:适用于处理复杂的状态空间。
  3. 长期任务:适用于需要长期探索的任务。

不适用范围:

  1. 确定性或低复杂性环境:在这类环境中,内在奖励可能不够有用。
  2. 计算资源有限:RND 需要额外的网络和计算,可能不适用于计算资源有限的情况。
  3. 需要精确任务定义的环境:RND 鼓励探索,但可能不是最优的解决方案,如果任务有明确的目标或限制。

实现步骤:

  1. 初始化:创建并初始化目标网络和预测网络。
  2. 与环境交互:智能体与环境进行交互,收集状态和外在奖励。
  3. 计算内在奖励:使用目标网络和预测网络的输出来计算内在奖励。
  4. 更新预测网络:使用最新的数据来更新预测网络。
  5. 策略更新:根据内在奖励(和外在奖励)来更新智能体的策略。

通过这样的流程,RND 能够有效地驱动智能体在各种各样的环境中进行探索。

Go-Explore算法 - 2019年

思想

Go-Explore 的核心思想是解决探索与利用(exploration-exploitation)问题的一种新方法。该算法分为两个主要阶段:首先是一个“去探索(Go)”阶段,智能体被鼓励去探索新的、未访问过的状态;其次是一个“探究(Explore)”阶段,在这里,智能体从之前标记为“有趣”的状态出发进行更深一层的探索。

工作原理

  1. Cell Representation: 将高维状态空间分解为低维的“单元(cells)”,通常通过一种哈希函数实现。
  2. Go Phase: 智能体前往之前标记为有趣或未访问的单元。
  3. Explore Phase: 从这些有趣的单元出发,智能体尝试执行随机动作以探索更多的状态空间。
  4. Trajectory Collection: 记录到达有趣状态的轨迹。
  5. Policy Improvement: 使用这些轨迹进行策略改进,通常使用像PPO或A3C这样的强化学习算法。

适用范围

Go-Explore 在处理具有高度稀疏奖励和大状态空间的环境方面表现出色。例如,在Atari游戏如Montezuma's Revenge中,它能够获得迄今为止最高的得分。

不适用范围

  1. Stochastic Environments: 在高度随机或噪音很大的环境中,Go-Explore的效果可能会下降。
  2. Real-Time Decision Making: 由于需要存储和回放轨迹,Go-Explore可能不适用于需要实时决策的应用。
  3. Simple Tasks: 对于奖励信号丰富或状态空间小的任务,Go-Explore 可能是过度复杂的。

实现步骤

  1. 初始化单元格数据库和轨迹缓存。
  2. 使用随机策略进行初步探索,存储达到的单元和轨迹。
  3. Go阶段: 从数据库中选择一个单元,使用保存的轨迹重新访问该单元。
  4. Explore阶段: 从选定的单元开始,执行随机动作进行探索,更新单元数据库和轨迹缓存。
  5. 重复步骤3和4直到满足某种停止准则(例如,达到预定的迭代次数或得分)。
  6. 使用收集的轨迹进行策略优化。

Never Give Up (NGU) 算法 - 2019年

思想

NGU算法主要目标是解决强化学习中稀疏和非稳态奖励环境下的探索问题。其核心思想是通过使用一组内在奖励机制,以及自适应地调整这些机制,来鼓励智能体更加全面和高效地探索环境。

工作原理

  1. 多奖励信号: NGU使用一组内在奖励信号,而不仅仅是单一的奖励。
  2. 自适应调整: 通过观察智能体与环境的互动,NGU能自适应地调整各个内在奖励的权重。
  3. 时间尺度: 通过在不同时间尺度上观察奖励,算法能更好地理解短期和长期目标之间的关系。

适用范围

NGU在处理具有稀疏、延迟、或者非稳态奖励的复杂环境中表现良好。

不适用范围

  1. 简单任务: 在奖励信号丰富或者任务简单的环境中,NGU的复杂性可能是不必要的。
  2. 计算成本: 由于需要维护和计算多个内在奖励,这增加了算法的计算负担。

实现步骤

  1. 初始化一组内在奖励机制和其对应的权重。
  2. 在每个时间步,观察外部奖励以及内在奖励。
  3. 根据观察到的奖励和当前状态,用强化学习算法(如Q-learning或PPO)更新策略。
  4. 自适应地调整内在奖励的权重。
  5. 根据新的策略执行动作。
  6. 重复步骤2-5直至满足某个终止条件。

ICM与RND的对比

  1. 计算复杂性:ICM通常比RND更为计算密集,因为它需要训练一个用于状态转换预测的前向模型。
  2. 鲁棒性和泛化能力:RND通常被认为在面对更广泛或更复杂的状态空间时有更好的泛化能力。
  3. 可解释性:ICM的内在奖励基于模型的预测误差,这在某些情况下可能更容易解释。
  4. 环境依赖性:ICM在某些确定性环境中可能失效,因为一旦模型学会了准确预测,内在奖励就会消失。而RND则通常在这类环境中表现得更加稳健。
  5. 样本效率:通常,两者都比使用纯外在奖励更为样本高效,但具体哪个更高效可能取决于任务和实现细节。
  6. 实验结果:在一些标准测试环境(如Atari或Mujoco)中,两者都已被证明可以有效地解决稀疏奖励问题,但并没有一致的结论来证明哪一个算法在所有情况下都明显优于另一个。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA设置注释快捷键进行 注释对齐

给大家推荐一个嘎嘎好用的功能~ 相信大家在使用IDE写代码的时候,经常用到 Ctrl / 来注释代码吧,但是默认的是将注释在行首对齐,看着很让人不舒服。但是下面的操作会将注释会和当前代码对齐,还会自动保留一个空格,真的…

【用unity实现100个游戏之13】复刻类泰瑞利亚生存建造游戏——包括建造系统和库存系统

文章目录 前言素材人物瓦片其他 一、建造系统1. 定义物品类2. 绘制地图3. 实现瓦片选中效果4. 限制瓦片选择5. 放置物品功能6. 清除物品7. 生成和拾取物品功能 二、库存系统1. 简单绘制UI2. 零代码控制背包的开启关闭3. 实现物品的拖拽拖拽功能拖拽恢复问题 4. 拖拽放置物品5. …

【C语言精髓 之 指针】指针*、取地址、解引用*、引用

/*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * copyright 2023.9* COPYRIGHT 原创技术笔记:转载需获得博主本人同意,且需标明转载源* language …

人工智能驱动的自然语言处理:解锁文本数据的价值

文章目录 什么是自然语言处理?NLP的应用领域1. 情感分析2. 机器翻译3. 智能助手4. 医疗保健5. 舆情分析 使用Python进行NLP避免NLP中的陷阱结论 🎉欢迎来到AIGC人工智能专栏~人工智能驱动的自然语言处理:解锁文本数据的价值 ☆* o(≧▽≦)o *…

flutter web 优化和flutter_admin_template

文章目录 Flutter Admin TemplateLive demo: https://githubityu.github.io/live_flutter_adminWeb 优化 Setup登录注册英文 亮色主题 中文 暗黑主题管理员登录权限 根据权限动态添加路由 第三方依赖License最后参考学习 Flutter Admin Template Responsive web with light/da…

C++ 学习系列 -- std::vector (未完待续)

一 std::vector 是什么? vector 是c 中一种序列式容器,与前面说的 array 类似,其内存分配是连续的,但是与 array 不同的地方在于,vector 在运行时是可以动态扩容的,此外 vector 提供了许多方便的操作&…

世界前沿技术发展报告2023《世界信息技术发展报告》(四)电子信息技术

(四)电子信息技术 1. 概述2. 微电子技术2.1 精细制程芯片2.1.1 中国台积电发布2纳米制程工艺细节2.1.2 美国英特尔公司称2030年芯片晶体管密度将达到目前的10倍2.1.3 韩国三星电子率先实现3纳米制程芯片量产2.1.4 日本丰田、索尼等8家公司合资成立高端芯…

【李沐深度学习笔记】矩阵计算(1)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 本节是第一篇 矩阵计算 标量导数 导数刻画的是函数在某点的瞬时变化率 这东西都是考研学过的,快速略过,如…

网站接入公网并配置域名访问【详细教程】

网站接入公网并配置域名访问【详细教程】 安装Nginx上传网页文件配置Nginx腾讯云配置域名映射接入公网备案流程 本教程将以腾讯云服务器和腾讯云域名为例,介绍如何快速将网站接入公网并配置域名访问。我们将使用xshell工具进行操作,并涵盖安装nginx、上传…

Unity之VR如何实现跟随视角的UI

前言 我们在制作VR项目的时候,大部分时候,是把UI固定到一个位置,比如桌子或者空中,这么做固然稳定,但是当我们有以下需求的时候,固定位置的UI可能会不适用: 1.场景较小,操作物体占用了很大体积,没有固定的可以清晰显示完整UI的位置。 2.需要频繁的前后左右,更换姿势…

Unity3D 使用LineRenderer自由画线

原理 一个LineRenderer是一次画线,需要使用对象池一帧记录一个鼠标位置 代码 这是线绘制器的代码,依赖于笔者写过的一个简易对象池 传送门:>>对象池 using EasyAVG; using System; using System.Collections.Generic; using UnityEn…

指针和数组笔试题的透析

指针---进阶篇(三) 一、前言二、一维数组例题透析:三、指针笔试题1.例一:2.例二:3.例三:4.例四:5.例五:6.例六: 一、前言 那么好了好了,宝子们,从…

王道408计组汇编语言部分学习总结

x86汇编语言指令基础 x86处理器中程序计数器PC 通常被称为IP 高级语言—>汇编语言—>机器语言 x86架构CPU,有哪些寄存器 EAX通用寄存器EBXECXEDXESI 变址寄存器 变址寄存器可用于线性表、字符串的处理EDIEBP堆栈基指针堆栈寄存器用于实现函数调用 ESP堆栈…

LESS的叶绿素荧光模拟实现与操作

LESS的叶绿素荧光模拟实现与操作 前情提要FLUSPECT模型荧光的三维面元冠层辐射传输过程日光诱导叶绿素荧光模拟 前情提要 本文默认您对LESS (LargE-Scale remote sensing data and image Simulation framework) 模型和叶绿素荧光(Sun-Induced chlorophyll Fluorescence, SIF)有…

2023华为杯研究生数学建模研赛E题出血脑卒中完整论文(含28个详细预处理数据及结果表格)

大家好呀,从发布赛题一直到现在,总算完成了全国研究生数学建模竞赛(数模研赛)E题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。…

高级运维学习(十)系统安全

kali 实际上它就是一个预安装了很多安全工具的Debian Linux [rootmyhost ~]# kali reset kali reset OK. 该虚拟机系统用户名为:kali,密码为:kali 基础配置 $ ip a s # 查看网络IP地址,本例中查看到的是192.168.88.40 $ sudo systemctl start ssh # 启s…

java面试题-并发编程基础

1.线程的基础知识 1.1 线程和进程的区别? 难易程度:☆☆ 出现频率:☆☆☆ 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要…

驱动开发,基于gpio子系统编写LED灯的驱动,亮灭控制

1.gpio子系统介绍 一个芯片厂商生产出芯片后会给linux提供一个当前芯片中gpio外设的驱动,我们当前只需要调用对应的厂商驱动即可完成硬件的控制。而linux内核源码中的gpio厂商驱动有很多,这里linux内核对厂商驱动做了一些封装,提供了一系列的…

中秋国庆内卷之我爱学习C++

文章目录 前言Ⅰ. 内联函数0x00 内联函数和宏的比较0x01 内联函数的概念0x02 内联函数的特性 Ⅱ. auto(C 11)0x00 auto的概念0x01 auto的用途 Ⅲ. 范围for循环(C11)0x00 基本用法0x01 范围for循环(C11)的使用条件 Ⅳ. 指针空值nullptr(C11)0x00 概念 前言 亲爱的夏…

leetcode Top100(17)矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: 输入&…