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 主要参考资料
- https://www.sciencedirect.com/science/article/pii/S1566253522000288
- 一篇 review,感觉不太好读。
- https://lilianweng.github.io/posts/2020-06-07-exploration-drl/
- 很好的博客,主要参考它。
- https://journals.sagepub.com/doi/10.1177/1729881418775849
- 18 年的 review,关于 memory-based exploration,还没读。
- 一些很有帮助的 new bing。
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:
-
bing:玻尔兹曼探索是不确定性下 sequential decision 的经典策略,是强化学习(RL)中最标准的工具之一。它从玻尔兹曼分布 (softmax) 中获取的 Q value 上的 action,由温度参数 τ 调节.
汤普森采样以威廉·R·汤普森(William R. Thompson)的名字命名,是一种启发式方法,用于选择解决 multi-armed bandit problem 中 exploration-exploitation 困境的 action。它包括选择最大化随机抽取信念(randomly drawn belief)的预期 reward 的 action.
-
- 添加一个 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 其他
- Q exploration,Q 值近似,Bootstrapped DQN:
- https://www.cnblogs.com/initial-h/p/16350230.html
- https://zhuanlan.zhihu.com/p/192484077
- 一堆 Q function 做 ensemble?
- Variational Options
- Variational Intrinsic Control:训一堆能在不同 state 下终止的 policy,然后看哪个最好??抽象的。
- Variational Auto-encoding Learning of Options by Reinforcement(VALOR):没看。