当前位置: 首页 > news >正文

【强化学习笔记2】奖励稀疏的应对方式以及逆强化学习


本系列是李宏毅老师强化学习的课程笔记。第一篇笔记:https://blog.csdn.net/wjpwjpwjp0831/article/details/145907739


1. Sparse Reward

在一些时候,reward非常的稀疏,因为只有最后的那个动作或者状态能够产生比较大的reward,但是从一开始,到如何达到最后的状态却没有什么信息。因此,这样会导致做什么动作reward都是0,于是啥也学不到。

主要有以下几种解决方式:

1.1 Reward shaping

就是在环境中 人为设计额外的奖励,提供更频繁的反馈,使智能体更容易学习。例如,对于一个游戏,当然达到最后赢的状态有一个大的reward,但是我们可以将最终的任务进行多次分解。例如,掉血、原地不动这种行为给一个负的reward,加血、打怪等行为给一个正的reward。

1.2 改进探索策略

可以让智能体对 “不可预测”或“未知”状态感兴趣,从而鼓励探索,即使环境本身没有外部奖励。

本节介绍一个代表性算法:Intrinsic Curiosity Module (ICM)。

ICM 通过预测误差来驱动探索

  • 如果智能体无法准确预测下一个状态,则它对该状态更感兴趣
  • 反之,如果某些状态很好预测,说明智能体已经熟悉它们,不需要过多探索

这种 “好奇心驱动” 的方法使得智能体在环境中能主动发现新知识,即使没有外部奖励,整体框架如下图:

在这里插入图片描述

对于普通的RL过程之外,ICM接受当前状态 s t s_t st, 当前动作 a t a_t at和下一状态 s t + 1 s_{t+1} st+1为输入,输出一个reward。最终我们的目的不仅是要最大化环境给的reward,还要最大化ICM输出的reward。而ICM输出的reward就是从 s t , a t s_t, a_t st,at,有多少不确定性(不可预测地)能到达 s t + 1 s_{t+1} st+1.

具体结构如下:

在这里插入图片描述

解释:

  1. Feature Ext是一个特征提取网络,将状态进一步提取为其他高维特征,这里的目的有点类似于filter,过滤掉状态中无关紧要的部分。训练方式:从状态变化中推断这一步智能体的动作。也即,根据提取后的状态特征 ϕ ( s t ) , ϕ ( s t + 1 ) \phi(s_t), \phi(s_{t+1}) ϕ(st),ϕ(st+1)经过network得出预测的action a ^ t \hat{a}_t a^t, 并最小化 ∣ a ^ t − a t ∣ 2 |\hat{a}_t - a_t|^2 a^tat2. 通过准确地学习到action,可以模拟整个系统真实发生的事情,也就过滤掉了state当中无关紧要的部分。
  2. 在提取当前状态的特征 ϕ ( s t ) \phi(s_t) ϕ(st)后,与当前动作 a t a_t at一起输入到network,输出为下一步的state ϕ ^ s t + 1 \hat{\phi}_{s_{t+1}} ϕ^st+1是什么。如果预测的下一步state和真实的下一步state s t + 1 s_{t+1} st+1越不像,就说明应该对这种action保持较高的好奇心,应该得到比较大的reward。因此,输出reward为 r t i = 1 / 2 ∣ ϕ ^ s t + 1 − ϕ s t + 1 ∣ 2 r_t^i=1/2|\hat{\phi}_{s_{t+1}} - \phi_{s_{t+1}}|^2 rti=1/2∣ϕ^st+1ϕst+12. 这一步的总reward为 r t a l l = r t + β r t i r_t^{all} = r_t + \beta r_t^i rtall=rt+βrti. 同样,训练network的约束为 ∣ ϕ ^ s t + 1 − ϕ s t + 1 ∣ 2 |\hat{\phi}_{s_{t+1}} - \phi_{s_{t+1}}|^2 ϕ^st+1ϕst+12. 总的来说:预测误差越大,表示环境不熟悉,智能体应该更感兴趣预测误差作为“内在奖励”,引导智能体探索未知状态

1.3 Curriculum Learning

Curriculum Learning 是一种训练策略,其核心思想是 从简单任务开始训练智能体,然后逐步增加任务难度,类似于人类学习知识的方式。这种方法可以帮助智能体更快收敛、更稳定地学习复杂任务。

比如说,对于机器人把一个板子插入到一个柱子上的任务,可以从最终状态出发,先学板子已经插入到柱子上,要把板子继续往下推;再学,板子刚接触柱子的时候,应该往下推更多的距离;再学,让板子更接近柱子,等等。

1.4 Hierarchical Reinforcement Learning

HRL 将强化学习拆分为多个层次,常见的结构包括:

  • 高层策略(High-Level Policy,Meta Controller):负责制定更抽象的决策,例如“去厨房”或“避开障碍物”。
  • 低层策略(Low-Level Policy,Sub-Controller):负责执行具体的动作,例如“走一步”、“抓取物体”。
  • 核心思想:高层策略决定子任务,低层策略负责执行具体动作。

如果让机器人学习如何拿起物体,HRL 可能的层次化策略如下:

  1. 高层策略:决定 “移动到目标区域” → “抓取物体” → “放下物体”
  2. 低层策略:具体执行 “向前走一步” → “伸出机械臂” → “闭合手指”

这种分层结构使得机器人可以 在不同任务之间复用技能,提高学习效率。

2. Imitation Learning

模仿学习主要是一些任务我们无法很具体地规定reward,但是我们有很多expert的数据,如何让智能体学习的技术。在这里我们主要讲IL的一个分支:inverse RL.

Inverse RL的核心是: 老师(也就是已经有的一堆trajectory)永远是对的.

所以说核心步骤如下: (核心概念就是先射箭在画靶)

  1. 初始化一个actor

  2. 在每个迭代中:

    1. actor和环境互动, 得到一些trajectory

    2. 定义一个reward function, 它使得teacher的trajectory永远比actor的要好,也就是teacher的trajectory的reward的和一定比actor生成trajectory的reward的和更大,即:

      ∑ t R ( s t E , a t E ) > ∑ t R ( s t , a t ) \sum_t R(s_t^E, a_t^E) > \sum_t R(s_t, a_t) tR(stE,atE)>tR(st,at).

      当然,这个事情也不绝对,例如在对抗IRL(GAIL)中,reward function充当discriminator的作用,因此目标是让两种trajectory的分布尽量相近。

      这个reward可以是预定义的,也可以用network去学。

    3. actor的目的就是最大化reward,这一步就是常规的RL训练。

  3. 输出reward function和actor

所以IRL和GAN异曲同工,actor相当于generator,expert的trajectory相当于已有的数据分布,reward function充当discriminator的作用。

相关文章:

  • 網站為何要注意负载均衡的應用
  • 可视化大屏:解锁数据奥秘,驱动智慧决策
  • scala 中的@BeanProperty
  • LabVIEW闭环控制系统硬件选型与实时性能
  • 全面回顾复习——C++语法篇1(基于牛客网C++题库)
  • XSS-LABS靶场通关讲解
  • 读书会-c#并发编程
  • P9421 [蓝桥杯 2023 国 B] 班级活动--数学题(配对问题)
  • FakeApp 技术浅析(三):自动编码器
  • ArcGIS 工程文件到 ArcGIS Pro 的无缝迁移:详细步骤与技巧
  • Linux系统管理二
  • MYSQL之创建数据库和表
  • 算力集群+Pycharm+SSH连接经验(自用)
  • Redis篇:基础知识总结与基于长期主义的内容更新
  • 德鲁伊连接池
  • ROS云课基础题库-01C++案例-甜甜圈
  • TCP和UDP
  • python JSON模块
  • VS(visual studio 2022)的实用调试小技巧[特殊字符]
  • 《 C++ 修炼全景指南:二十六 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑
  • 理财经理泄露客户信息案进展:湖南省检受理申诉,证监会交由地方监管局办理
  • 新村回响:一周城市生活
  • 七大交响乐团“神仙斗法”,时代交响在上海奏出时代新声
  • 正荣地产:董事会主席、行政总裁辞任,拟投入更多精力推动境内债重组等工作
  • 媒体:西安62岁男子当街殴打妻子,警方称打人者已被行拘
  • 江西浮梁县县长张汉坤被查,此前已有4个月无公开活动