最近在草率地调研 RL 的 exploration。

这篇文章也比较草率,仅能起到辅助作用,不能代替读 review 或更精细的读 paper。



0 总结写在最前面

  • exploration 主要工作的 motivation:鼓励探索。
  • 主要思想:给 agent 还不太熟悉的 novel state / state-action pair 一个额外的 intrinsic reward。
  • 影响深远的方法:count-based method:我们算算已经来过这个 state 多少次;
    • 如果来过很少次,那么,为了鼓励这种探索行为,给较大的 intrinsic reward;
    • 如果来过很多次,那么这个 state 没什么新意,intrinsic reward 会小一些。
  • prediction-based exploration:如何判断一个 state / (s,a) agent 是否熟悉呢?我们在跑 RL 的同时,维护一个 net 来学习我们曾遇到过的 state / (s,a),然后看 这个 net 对当前 state 的预测误差之类。
    • 学 env dynamics:通过 (s,a,r,s') 中,给出 (s,a) 预测 s' 的误差,来判断 agent 是否熟悉当前 (s,a)。可以用 给出 (s,s') 预测 a 来消除 state 里的随机因素。
    • 不学 env dynamics:构造辅助 MDP(DORA),或预测 s 的一个 mapping(RND)。
  • memory-based exploration:维护一个我们已经去过的 state 的 memory。
    • Never Give Up(NGU):episodic intrinsic reward:为每一 episode 维护一个 memory,然后希望每一 episode 都能尽可能访问到更多状态。具体的,把当前 state 与这一 episode 已跑过的 state(在 memory 中)比较相似性,如果不相似,则 intrinsic reward 大。(还有一部分 life-long intrinsic reward,直接使用 RND 网络蒸馏。)
    • Go-Explore:先到处乱跑(explore),并把到达每个 state 的 trajectory 记下来;然后拿 到达 target 的 trajectory 做 imitation learning。

1 主要参考资料

2 RL 的主流 exploration 方法

在 review(第一个参考资料)中,exploration 的研究有两种动机:效率动机 与 安全动机。前者希望 exploration 能帮助 RL 尽快学会,而后者希望 RL 试错学习的过程中 保证安全性。

  • 安全动机的 exploration 的主要方法:

    • 罚函数(给非常大的负 reward);
    • 基于一些先验知识 强行限制(如强行改不安全的 action)。

对于效率动机的 exploration,这是 lilian weng 博客(第二个参考资料)的目录:

我们的重点放在 1 prediction-based,2 memory-based。其他感觉都不是主流方法。

  • 关于 intrinsic reward:对每个 (s,a,r,s'),额外在 r 上加一个鼓励 exploration 的 reward。

2.1 经典 exploration 方法

  • ε-greedy:随机探索的概率是 ε。
  • Upper Confidence Bound:最大化 \(\hat Q(a)+\hat U(a)\),其中 U 与 action 次数成反比。
  • Boltzmann exploration,Thompson sampling:
  • 添加一个 entropy loss \(H(\pi(a|s))\),鼓励 action diversity。
  • noise-based exploration:在 obs、action 甚至 parameter space 里面掺 noise。
  • count-based exploration:用密度模型(或者某些哈希)来近似 state 访问的频率,然后用 \(1/\sqrt{N(s,a)}\) 之类作为 intrinsic reward,N 越小,reward 越大。(感觉和 upper confidence bound 差不多?)

2.2 prediction-based method:学习 env 的 dynamics

  • Intelligent Adaptive Curiosity(IAC):

    • 核心思想:边训 RL 边学 system dynamics,如果遇到还没学会的情况,则给 intrinsic reward。
    • https://zhuanlan.zhihu.com/p/159742300
    • 预测 error:\(e(s,a) = ||f(s,a)-s'||^2\),intrinsic reward:\(r=\frac1k\sum_{i=0}^{k-1}(e_{t-i-\tau}-e_{t-i})\),其中 τ 为使用 error e 的滞后量,k 为滑动窗口长度。
  • Intrinsic Curiosity Module(ICM):
    • IAC 无法解决 noisy-TV 问题:假设机械臂拿东西,但 env 里面有个一直播放 random 内容的电视机,作为 obs 的一部分,那我们的 network 怎么也预测不准电视机的内容,便会一直给较大的 intrinsic reward。
    • ICM 核心思想:维护一个预测 env dynamics 的模块:输入 s, a, s',s 和 s' 过一个提取特征的 network 得到 φ(s) φ(s'),然后将 φ(s) φ(s') 放入第二个网络,预测 action a^,比较真 action 和预测 action 的差异。
    • 然而 ICM 的 intrinsic reward 是 |φ(s) - φ(s')|²,总的 loss function 包含 1. φ(s) 之差,2. 真 action 和预测 action 之差,3. 最大化 Σreward。
    • https://blog.csdn.net/qq_33328642/article/details/127396645
    • https://zhuanlan.zhihu.com/p/79226374
  • Variational information maximizing exploration(VIME):

2.3 prediction-based method:不学 env dynamics 了

  • Directed Outreaching Reinforcement Action-Selection(DORA):

    • https://zhuanlan.zhihu.com/p/78709539
    • 仍然是 count-based 的思想,奖励更少访问过的 (s,a)。
    • 通过构造一个新的 MDP 来估计 (s,a) 的访问次数:新 MDP 的 env 跟要学的 env 一样,但所有 reward 都是 0,初始化新 MDP 的 Q-value(称为 E-value)为全 1。
    • intrinsic reward:1 / log E。
  • Random Network Distillation(RND):
    • https://zhuanlan.zhihu.com/p/485476646
    • https://zhuanlan.zhihu.com/p/146309991
    • count-based 方法的问题:很难在大规模环境、高维 / 连续 state-action space 下使用,因为对于绝大多数状态,count 都是 1 或 0。
    • 注意:RND 只关心 obs 我们是否熟悉,不关系 env dynamics。
    • RND 使用两个 net:一个固定的、随机初始化的 target network f,一个用来 train 的 predictor network f^。loss function 和 intrinsic reward 是 ||f(s) - f^(s)||²。
    • 本质上,还是在看 agent 对当前 state 的熟悉程度,因为 obs 出现越多,f^ 就训的越接近 f(所谓的把 f 蒸馏 distill 到 f^)。

2.4 memory-based method

  • Never Give Up(NGU):

    • https://zhuanlan.zhihu.com/p/551992517
    • 应用:agent57。
    • NGU 的 intrinsic reward 分为:1. 局内内在奖励 (episodic intrinsic reward) ,2. 局间内在奖励 (life-long/inter-episodic intrinsic reward)。
    • episodic intrinsic reward:包括
      • embedding function φ,使用类似 ICM 的方法,通过 a^ = f(φ(s), φ(s')) 然后最小化 a 和 a^ 之差的方式,训练得到 obs 的 encoding φ;
      • episodic memory M,存储一个 epsiode 中 agent 遇到的所有 obs 对应的 controllable state。
      • episodic intrinsic reward;将当前 obs 对应的 s_t 与 episodic memory 中的内容进行比较,差异越大,表示当前 s_t 在本局(episode)中越新颖,intrinsic reward 越大。用一些相似度函数来计算 s_t 在本局中的新颖程度。
    • life-long intrinsic reward:激励 agent 在整个学习过程中尽可能多访问新状态。
      • 用 RND 来做:视野放宽到整个学习过程,拿每次获得的 obs 去蒸馏 f(obs) 网络。
    • 总的 intrinsic reward 是它们两个相乘,乘的时候 会截断太大或太小的值。
  • Go-Explore:
    • bing:Go-Explore 通过明确记住有希望的状态,并在有意探索之前返回到这些状态,来解决 RL 的挑战。它解决了所有以前未解决的 Atari 游戏,并超越了所有硬探索游戏的最新技术,对 Montezuma 的复仇和 Pitfall 的重大挑战得到了数量级的改进

      Go-Explore的工作原理是利用三个原则:(1)记住以前访问过的状态,(2)首先回到一个有希望的状态(没有探索),然后从这个 state 开始探索,(3)通过任何可用的方法(包括引入确定性)解决模拟环境,然后通过模仿学习鲁棒化(robustification)。

      该算法将学习分为两个步骤:exploration 和 robustification。在 exploration 阶段,Go-Explore 为有趣的 state 维护一个档案,并且记住通向它们的 trajectory。它重复此过程,直到问题解决

    • https://zhuanlan.zhihu.com/p/354656690
    • https://blog.51cto.com/u_15887260/5876899
    • intrinsic reward 方法的两个问题:
      • 1 detachment:agent 探索完区域 A 然后再去探索区域 B,假设区域 A 是很好的,但是由于“深度学习的灾难性遗忘”,agent 在探索 B 的时候,很快就忘记了怎么走才能到 A,然而此时因为 A 已经被逛过,count-based intrinsic reward 也奖励的不多了,于是再也返回不到区域 A;
      • 2 derailment:即使 agent 记下了去往区域 A 的路,但因为它仍在跑 exploration,所以中间必然会有一些随机性,导致 agent 的实际路线跟它记下的去往 A 的 trajectory 不一致,最终与记下的 trajectory 脱轨(derailment)。
    • 因此,Go-Explore:
      • 第一阶段 Exploration phase:目的是把整个 env 里所有 state 跑一遍。我们维护一个已访问的 state 的存档(archive),它同时记录了前往各个 state 的 trajectory。每轮迭代按一定规则选出一个 state,利用存档中的信息走到这个 state,再从此出发做探索。如果探索到了新的 state,或者到达某个 state 的更好的 trajectory,就将其加入 / 更新存档。只要探索阶段做的足够好,我们几乎可以找到去向任何 state 的较好的 trajectory,其中也包括可以完成既定任务的轨迹,即 explore until solved。
      • 第二阶段 Robustification phase:使用阶段一得到的轨迹 做模仿学习,得到足够鲁棒的策略。拿到一条高奖励的 trajectory 之后,先把 agent 放在离 轨迹末端的目标 较近的位置,让 agent 能够学习到如何从这个离目标很近的状态走到目标。然后,再逐步把 agent 放在轨迹上离目标更远的地方,让 agent 逐步学到如何从初始位置走到目标位置。学习算法还是 PPO 等通用 RL 算法。这个过程可以看做 curriculum learning。
    • policy-based Go-Explore:关于 returning(即 沿着记下来的 trajectory 到某个想去的 state),除了在 archive 做 imitation learning,还可以 execute a policy conditioned on the returning state,即使用 goal-condition 策略。这种方法没有 imitation learning 有效,但不需要做 robustification 这一步(即 专门去学一条完成任务的 trajectory),并且,除了能够 return 到之前的 states,一个 goal-conditioned policy 也能泛化到其他的目标(?)。
  • DTSIL(Diverse Trajectory-conditioned Self-Imitation Learning):
    • bing:多样化轨迹条件自模仿学习(DTSIL)是一种 RL 算法,通过利用过去成功的策略,来提高策略学习和样本效率。通过模仿过去的经验 + 在模仿完成后跑随机探索,它能在 limited directions 中利用好的 experiences

      DTSIL 维护 trajectories 和 state feature 的 buffer。对于新 feature,如果它靠近 buffer 中的某个 feature,则会增加该 feature 的计数。如果当前 episode 的这个 trajectory 在 total reward 或长度上优于 buffer 中通往该 feature 的 trajectory ,则替换 buffer 中的 trajectory 和 feature,否则向 buffer 中添加新的 feature + trajectory。

    • “在 policy-based Go-Explore 的基础上,给记录的样本加入优先级,优先学习出现稀有状态的轨迹”。

2.5 其他

RL 的探索策略 | Exploration for RL的更多相关文章

  1. 深度强化学习(Deep Reinforcement Learning)入门:RL base & DQN-DDPG-A3C introduction

    转自https://zhuanlan.zhihu.com/p/25239682 过去的一段时间在深度强化学习领域投入了不少精力,工作中也在应用DRL解决业务问题.子曰:温故而知新,在进一步深入研究和应 ...

  2. 【cs229-Lecture20】策略搜索

    本节内容: 1.POMDP: 2.Policy search算法:reinforced和Pegasus: 马尔科夫决策过程(Partially Observable Markov Decision P ...

  3. 【整理】强化学习与MDP

    [入门,来自wiki] 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的 ...

  4. (转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

    [重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生 ...

  5. 论文笔记之:Asynchronous Methods for Deep Reinforcement Learning

    Asynchronous Methods for Deep Reinforcement Learning ICML 2016 深度强化学习最近被人发现貌似不太稳定,有人提出很多改善的方法,这些方法有很 ...

  6. [Reinforcement Learning] 强化学习介绍

    随着AlphaGo和AlphaZero的出现,强化学习相关算法在这几年引起了学术界和工业界的重视.最近也翻了很多强化学习的资料,有时间了还是得自己动脑筋整理一下. 强化学习定义 先借用维基百科上对强化 ...

  7. ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文

    https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...

  8. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

  9. (转) 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文)

    本文转自:http://mp.weixin.qq.com/s/aAHbybdbs_GtY8OyU6h5WA 专题 | 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文) 原创 201 ...

  10. 论文翻译--StarCraft Micromanagement with Reinforcement Learning and Curriculum Transfer Learning

    (缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) StarCraft Micromanagement with Reinforce ...

随机推荐

  1. 整合SpringBoot + Dubbo + Nacos 出现 Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass

    版本 SpringBoot:2.7.3 Dubbo:3.0.4 Nacos:2.0.3 异常信息如下 Unable to make protected final java.lang.Class ja ...

  2. 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库

    沉淀,成长,突破,帮助他人,成就自我. 大家好,我是冰河~~ 在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共享这些类库呢?一种很 ...

  3. NetSuite 开发日记 —— 事务处理行限制

    一.创建行限制 在 NetSuite 中处理事务时,一次可访问的记录.事务处理或数据行数限制为 10,000.除非另有说明,此限制适用于所有交易类型.超过 1,000 行可能会对 Netsuite 的 ...

  4. APP性能测试-客户端性能测试

    https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318

  5. Windows Server2016 默认使用英文输入法或默认使用中文输入法

    1.确认是Server2016操作系统及以后版本 2.打开开始菜单"设置"--"时间和语言" 3.添加英文输入法(已存在可以跳过) 找到"区域与语言& ...

  6. Ubuntu 终端如何分割多个窗口

    sudo apt-get install terminator 查看 ~/.config(隐藏文件夹 ctrl + h 即可看见) 下是否有 terminator 文件夹 如果没有手动创建一个 然后在 ...

  7. Flutter Getx 中的Dialog 以及改变主题

    设置应用程序入口 当我们导入依赖后,在应用程序顶层把 GetMaterialApp 作为顶层,如下所示 import 'package:flutter/material.dart'; import ' ...

  8. 容器中域名解析流程以及不同dnsPolicy对域名解析影响

    本文分享自华为云社区<容器中域名解析流程以及不同dnsPolicy对域名解析影响>,作者:可以交个朋友 . 一.coreDNS背景 部署在kubernetes集群中的容器业务通过coreD ...

  9. 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步

    摘要:训练.标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通. 今年的华为,着实遭遇了不小的困难. 尤其是供应链,包括芯片方面的打击,让华为轮 ...

  10. 如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询

    摘要:本文以华为云图引擎 GES 为例,来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景. 本文分享自华为云社区<使用 Cypher 子查询进行图探索 -- 以华为云图引 ...