RL 的探索策略 | Exploration for RL


最近在草率地调研 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 博客(第二个参考资料)的目录:

image-20230406211259866

我们的重点放在 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 其他

posted @ 2023-04-06 21:58  MoonOut  阅读(316)  评论(0编辑  收藏  举报