当前位置:网站首页>强化学习中好奇心机制
强化学习中好奇心机制
2022-06-27 09:22:00 【醉一心】
参考链接:
https://www.leiphone.com/category/ai/TmJCRLNVeuXoh2mv.html
https://tianjuewudi.gitee.io/2021/12/02/qiang-hua-xue-xi-zhong-de-hao-qi-xin-jiang-li-ji-zhi/#!
https://cloud.tencent.com/developer/news/339809
https://cloud.tencent.com/developer/article/1367441
https://blog.csdn.net/triplemeng/article/details/84912694
https://blog.csdn.net/wzduang/article/details/112533271
参考论文:
Curiosity-driven Exploration by Self-supervised Prediction
Large-Scale Study of Curiosity-Driven Learning
Curiosity-driven Exploration for Mapless Navigation with Deep Reinforcement Learning
1.背景
近年来,我们在深度强化学习领域看到了很多创新。从2014年的DeepMind 的深度 Q 学习框架到2018年 OpenAI 发布的玩 Dota2 的 OpenAI Five游戏机器人,我们生活在一个激动人心且充满希望的时代。
今天我们将了解深度强化学习中最令人兴奋、最有前景的策略之一——好奇心驱动学习。
强化学习基于奖励机制,即每个目标可以被描述为获得最大化的奖励。然而,目前的问题就是外部奖励(也就是由环境给出的奖励)是由人为硬性编码的函数,并不可扩展。
好奇心驱动学习的思想是建立一个拥有内在的奖励函数的智能体(奖励函数由智能体自己生成)。这意味着智能体将成为自学者,因为他既是学生,也是反馈者。
2.几个现实案例
假如您正在尝试学习如何在一个迷宫般的大超市里找到您想要买的东西。您找来找去,但就是找不到。如果每一步都得不到“胡萝卜”,连“大棒”也没有,无法得到反馈,您可能每走一步都会怀疑自己走的方向是否正确。在这种情况下,要如何避免原地打转呢?这时候就可以利用好奇心啦。在逛超市时,您会尝试预测“我现在在肉类区,所以我觉得拐角的区域是水产区”。如果预测错了,您会感到意外“哟,没想到”,并因此得到好奇心的满足奖励。这让您以后更愿意探索新的地点,只为看看预期与现实是否一致。
在一个迷宫中寻找东西,只有找到这个东西才能得到奖励,其余时间都是遥遥无期的探索。为了避免智能体始终在迷宫中无目的的探索,我们可以通过定义额外的奖励函数使得奖励变得稠密。
在一个阳光明媚的周末午后,一个三岁小孩在人生中的激励遥不可及的情况下(比如大学,工作,房子,家庭等等),仍然能够在游乐场上没心没肺的玩耍。作为人类主体(human agent),她的行为受到了心理学家称之为内在激励(intrinsic motivation)即好奇心的驱动。
3.好奇心机制诞生原因
目前强化学习中存在着两个主要问题:
- 稀疏奖励的问题,在于行动与其反馈(奖励)之间的时差。如果每个行动都有奖励,则智能体会快速学习,以便获得快速反馈。相反,如果奖励洗漱,智能体很难从中学习。
- 设计密集、定义良好的外部奖励是很困难的,并且通常不可扩展。
4.好奇心机制
好奇心机制是鼓励智能体采取行动,来降低学习体预测其自身行为后果能力的不确定性。好奇心实质上是一种内部奖励,即智能体在当前状态下预测其自身行为后果的误差。测量好奇心误差需要建立一个环境动态模型,在给定当前状态和动作的情况下预测下一个状态。通过好奇心模块(Intrinsic Curiosity Module, ICM)的设计来产生智能体的好奇心奖励。
良好的特征空间使得智能体能够根据当前的状态和动作预测下一个状态。将好奇心定义为给定当前状态 s t s_t st 和行动 a t a_t at 的预测新状态 s t + 1 s_{t+1} st+1 与真实新状态 s t + 1 ∗ s_{t+1}^* st+1∗ 之间的误差。考虑到外部环境随机噪声的影响,智能体可能会将不可控的环境噪声作为好奇心的一部分,从而影响了智能体的探索行为。因此,我们需要根据以下三个规则来构建好的特征空间:
- 对可由智能体控制的物体进行建模;
- 对智能体无法控制但可能对其产生影响的事物进行建模;
- 对智能体无法控制且对其没有影响的事物建模。
将空间紧凑、保留有关观察的充分信息的稳定特征空间用于ICM模块的构建,保证带有ICM模块的智能体能够排除不可控事物并控制所有能对其产生影响的事物。ICM模块由两个神经网络组成,用于学习状态和下一状态的特征表示的逆向模型和用于生成下一状态的预测特征表示的前向动态模型。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iBJ91RgJ-1654093917645)(https://gitee.com/zuiyixin/blog-graph/raw/master/202206011124497.png)]
根据我们设定好的特征空间的规则,我们只希望预测环境中可能由于智能体的行为引起的改变,同时忽略其余内容对智能体产生影响的更改。这意味着,我们需要的不是从原始感觉空间进行预测,而是将感官输入转换为特征向量,其中仅表示与智能体执行的动作相关的信息。
要学习这个特征空间:我们使用自我监督,在智能体逆向动态任务上训练神经网络,给定其当前状态 s t s_t st 和下一个状态 s t + 1 s_{t+1} st+1 预测学习体行为 a t ^ \hat {a_t} at^ 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LZZOx5El-1654093917646)(https://gitee.com/zuiyixin/blog-graph/raw/master/202206012103026.png)]
我们使用此特征空间来训练前向态模型,给定当前状态 ϕ ( s t ) \phi(s_t) ϕ(st) 的特征表示和动作,用该模型预测下一个状态 ϕ ( s t + 1 ) \phi(s_{t+1}) ϕ(st+1) 的未来表示。
并且我们向智能体提供前向动态模型的预测误差(预测的下一状态与真实下一状态之差),作为鼓励其好奇心的内在奖励。
C u r i o s i t y = ϕ p r e d i c t ( s t + 1 ) − ϕ ( s t + 1 ) Curiosity = \phi_{predict}(s_{t + 1}) - \phi(s_{t + 1}) Curiosity=ϕpredict(st+1)−ϕ(st+1)
那么,我们在ICM中有两个模型:
1.反向模型(蓝色):将状态 s t s_t st 和 s t + 1 s_{t + 1} st+1 编码到经过训练以预测动作的特征向量 ϕ ( s t ) \phi(s_{t}) ϕ(st) 和 ϕ ( s t + 1 ) \phi(s_{t+1}) ϕ(st+1) 中。
a t ^ = g ( s t , s t + 1 ; θ I ) \hat{a_t} = g(s_t,s_{t+1};\theta_I) at^=g(st,st+1;θI)
其中, a t ^ \hat{a_t} at^ 是预测的动作,g是反向模型的学习函数, θ I \theta_I θI 是反向模型的参数。对应的逆损失函数为:
m i n θ I L I ( a t ^ , a t ) \underset{\theta_I}{min} L_I(\hat{a_t},a_t) θIminLI(at^,at)
2.正向模型(红色):将 ϕ ( s t ) \phi(s_t) ϕ(st) 和 a t a_t at 作为输入,并且预测下一状态的特征表示 ϕ ^ ( s t + 1 ) \hat{\phi}(s_{t + 1}) ϕ^(st+1)。
ϕ ^ ( s t + 1 ) = f ( ϕ ( s t ) , a t ; θ F ) \hat{\phi}(s_{t + 1}) = f(\phi(s_t),a_t;\theta_F) ϕ^(st+1)=f(ϕ(st),at;θF)
其中, ϕ ^ ( s t + 1 ) \hat{\phi}(s_{t + 1}) ϕ^(st+1) 是下一状态的特征表示,f是前向模型的学习函数, θ F \theta_F θF 是前向模型的参数。对应的逆损失函数为:
L F ( ϕ ( s t ) , ϕ ^ ( s t + 1 ) ) = 1 2 ∣ ∣ ϕ ^ ( s t + 1 ) − ϕ ( s t ) ∣ ∣ 2 2 L_F(\phi(s_t),\hat{\phi}(s_{t+1})) = \frac{1}{2} ||\hat{\phi}(s_{t+1})-\phi(s_t)||^2_2 LF(ϕ(st),ϕ^(st+1))=21∣∣ϕ^(st+1)−ϕ(st)∣∣22
然后从数学上讲,好奇心将是我们预测的下一个状态的特征向量与下一个状态的真实特征向量之间的差。
r t i = η 2 ∣ ∣ ϕ ^ ( s t + 1 ) − ϕ ( s t + 1 ) ∣ ∣ 2 2 r^i_t = \frac{\eta}{2}||\hat{\phi}(s_{t + 1}) - \phi(s_{t + 1})||^2_2 rti=2η∣∣ϕ^(st+1)−ϕ(st+1)∣∣22
其中, r t i r^i_t rti 是第t时刻的内在奖励值, η \eta η 是规范因子, ϕ ^ ( s t + 1 ) − ϕ ( s t + 1 ) \hat{\phi}(s_{t + 1}) - \phi(s_{t + 1}) ϕ^(st+1)−ϕ(st+1) 是预测的下一状态与实际下一状态的差。最后,该模块的整体优化问题是逆向损失,正向损失的结合。
m i n θ P , θ I , θ F [ − λ E π ( s t ; θ P ) [ ∑ t r t ] + ( 1 − β ) L I + β L F ] \underset{\theta_P,\theta_I,\theta_F}{min} \left[-\lambda E_{\pi(s_t;\theta_P)}[\sum_t r_t]+(1-\beta)L_I+\beta L_F \right] θP,θI,θFmin[−λEπ(st;θP)[t∑rt]+(1−β)LI+βLF]
其中, θ P , θ I , θ F \theta_P,\theta_I,\theta_F θP,θI,θF 分别代表策略,反向模型,前向模型的参数, λ \lambda λ 代表损失对学习内在奖励的重要性, β \beta β 是权衡反向模型损失和正向模型损失的标量(介于0和1之间), L I L_I LI 是反向模型的损失, L F L_F LF 是前向模型的损失。
回顾一下:
- 由于外部奖励实现和稀疏奖励的问题,我们希望创建智能体的内在奖励。
- 为此,我们创造了好奇心,这是智能体在预测其当前状态下的行动结果时的误差。
- 利用好奇心将推动我们的学习体支持具有高预测误差的转换(在智能体花费较少时间的区域或动态复杂的区域中会更高),从而更好地探索我们的环境。
- 但是因为我们无法通过预测下一帧(太复杂)来预测下一个状态,所以我们使用**更好的特征表示,只保留可由智能体控制或影响智能体的元素。**补充,推荐在任务中合理设计特征空间。
- 为了产生好奇心,我们使用由两个模型组成的内在好奇心模块:用于学习状态和下一状态的特征表示的逆向模型和用于生成下一状态的预测特征表示的前向模型。
- 好奇心将等于前向动态模型和逆向动态模型之间的差异。
5.相关知识
5.1 Random Network Distillaiton
Random Network Distillaiton,中文为随机网络蒸馏,简称RND。和Curiosity目标一致,它也通过给智能体添加内在的探索奖励来解决稀疏奖励的问题。两者的核心都是对于没有探索过的状态会给予高奖励,但是对于判断状态是否已经探索过却有不同的方法。
与Curiosity不同,RND拥有两个网络,两个网络的结构一致,输入为状态 s t s_t st ,生成一组向量,其实也就是特征提取。一个网络称为target网络,一开始随机参数后,其参数不再更新。另外一个网络称为Predictor网络,其参数可以不断学习调整,其学习的目标是对于给定相同的状态 s t s_t st ,其输出和Target网络越接近越好。
因此当两个网络的输出差异越大,越说明这个状态是网络之前没有探索过的,我们应当给予更大的奖励,相反当两者趋近于一致时,说明这个状态已经多次遇到,经过了充分的学习,应当给予更小的奖励。其奖励函数公式为:
r t i = ∣ ∣ f ^ ( s t + 1 ) − f ( s t + 1 ) ∣ ∣ 2 2 r^i_t = ||\hat{f}(s_{t + 1}) - f(s_{t + 1})||^2_2 rti=∣∣f^(st+1)−f(st+1)∣∣22
f就是target网络的输出, f ^ \hat{f} f^ 就是预测的值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nqvhxgck-1654093917646)(https://gitee.com/zuiyixin/blog-graph/raw/master/202206012215841.png)]
5.2 基于“意外”的好奇心
正文中提到的就是基于“意外”的好奇心,ICM方法也建立了关于世界动态的预测模型,并在模型未能做出良好预测时对智能体给予奖励,这种奖励标志着“意外”或“新东西”。注意,探索没去过的地方,并不是ICM好奇心机制的直接组成部分。
对于ICM方法而言,这只是获得更多“意外”的一种方式,目的是让获得的总体奖励最大化。事实证明,在某些环境中可能存在其他方式造成“自我意外”,从而导致无法预料的结果。
在 《Large-Scale Study of Curiosity-Driven Learning》一文中,ICM方法的作者和OpenAI的研究人员表明,基于“意外最大化”的强化学习方法可能存在潜在的风险:智能体可以学会放纵和拖延的行为,不去做任何有用的事情来完成当前任务。
为了了解其中的原因,请看一个常见的思想实验,实验名为“嘈杂的电视问题”,在实验中,智能体被置于一个迷宫中,任务是寻找一个非常有价值的项目(与本文之前的超市例子中的“奶酪”类似)。
测试环境中还放了一台电视,智能体有电视的遥控器。电视频道数量有限(每个频道放映不同的节目),每次按键都会切换到随机频道。智能体在这样的环境中会如何表现?
对基于意外的好奇心的方法而言,改变频道会产生巨大的回报,因为每次频道变化都是不可预测和意外的。重要的是,即使在所有可用频道的节目都循环出现一次之后,由于频道放映的内容是随机的,所以每一个新变化仍然属于意外,因为智能体一直预测改变频道后会放什么节目,这个预测很可能会出错,导致意外的产生。
即使智能体已经看过每个频道的每个节目,这种随机变化仍然是不可预测的。因此,不断收获意外的好奇心智能体,最终将永远留在电视机前,不会去寻找那个非常有价值的物品,这类似于一种“拖延”行为。那么,如何定义“好奇心”才能避免产生这种拖延行为呢?
5.3 基于“情境”的好奇心
在《Episodic Curiositythrough Reachability》一文中,我们探索了一种基于记忆的“情境好奇心”模型,结果证明,这种模型不太容易产生“自我放纵”的即时满足感。为什么呢?
这里仍以上文的实验为例,智能体在不断变换电视频道一段时间后,所有的节目最终都会出现在记忆中。因此,电视将不再具有吸引力:即使屏幕上出现的节目顺序是随机且不可预测的,但所有这些节目已经在记忆中了。
**这是本方法与前文的“基于意外”的方法的主要区别:我们的方法甚至没有去预测未来。**与此相反,智能体会检查过去的信息,了解自己是否已经看到过与当前的观察结果。因此,我们的智能体不会被嘈杂的电视所提供的“即时满足感”所吸引。它必须去电视之外世界进行探索,才能获得更多奖励。
如何判断智能体是否看到与现有记忆中相同的东西?检查二者是否完全匹配可能是毫无意义的:因为在现实环境中,很少出现完全相同的场景。比如,即使智能体返回了一间完全相同的房间内,其观察角度也会与之前的记忆场景不同。
我们不会检查智能体记忆中的是否存在精确匹配,而是用训练后的深度神经网络来衡量两种体验的相似度。为了训练该网络,我们会猜测前后两个观察结果在时间上是否相距很近。如果二者在时间上很接近,很可能就应该被视为智能体同一段体验中的不同部分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6z8BUN9f-1654093917647)(https://gitee.com/zuiyixin/blog-graph/raw/master/202206012229034.jpeg)]
是新是旧可由“可达性”图决定。在实际应用中,此图无法获取,我们通过训练神经网络估计器,在观察结果之间估计一系列步骤。
边栏推荐
- 0号进程,1号进程,2号进程
- 【系统设计】邻近服务
- 快速入门CherryPy(1)
- How Oracle converts strings to multiple lines
- Vector:: data() pointer usage details
- Hitek power supply maintenance X-ray machine high voltage generator maintenance xr150-603-02
- A classic interview question covering 4 hot topics
- CLassLoader
- HiTek电源维修X光机高压发生器维修XR150-603-02
- Demand visual Engineer
猜你喜欢
![[vivid understanding] the meanings of various evaluation indicators commonly used in deep learning TP, FP, TN, FN, IOU and accuracy](/img/d6/119f32f73d25ddd97801f536d68752.png)
[vivid understanding] the meanings of various evaluation indicators commonly used in deep learning TP, FP, TN, FN, IOU and accuracy

初步认识pytorch

Advanced mathematics Chapter 7 differential equations

Flow chart of Alipay wechat payment business

1098 insertion or heap sort (PAT class a)

orthofinder直系同源蛋白分析及结果处理

ucore lab5

Analysis of orthofinder lineal homologous proteins and result processing

Obsidian 一周使用心得(配置、主题和插件)

ServletConfig and ServletContext
随机推荐
Oracle uses an SQL to find out which data is not in a table
(original) custom drawable
【mysql篇-基础篇】通用语法1
Improving efficiency or increasing costs, how should developers understand pair programming?
The largest rectangle in the bar graph of force buckle 84
[vivid understanding] the meanings of various evaluation indicators commonly used in deep learning TP, FP, TN, FN, IOU and accuracy
Internal class ~ lock ~ access modifier
巴基斯坦安全部队开展反恐行动 打死7名恐怖分子
0号进程,1号进程,2号进程
Vector:: data() pointer usage details
1098 Insertion or Heap Sort(堆排序解释)(PAT甲级)
Process 0, process 1, process 2
Object contains copy method?
Imx8qxp DMA resources and usage (unfinished)
支付宝微信支付业务流程图
经典的一道面试题,涵盖4个热点知识
prometheus告警流程及相关时间参数说明
Matlab tips (19) matrix analysis -- principal component analysis
Markem Imaje Marken IMAS printer maintenance 9450e printer maintenance
IO管脚配置和pinctrl驱动