| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> CS285课程笔记(4)——Exploration Method -> 正文阅读 |
|
[人工智能]CS285课程笔记(4)——Exploration Method |
通过近期对强化学习和多智能体强化学习相关论文的不断阅读发现,强化学习中的data efficiency或sample efficiency真的可以算是一个可以好好钻研的课题了,我觉得Exploration从一定程度上加速了算法的收敛也提高了采样效率。欢迎各位大佬指出本文任何问题!。 本文内容对应CS285课程的lecture 13和14,内容先对课程中所讲述的内容进行总结,如后续通过suggested reading有了一些新的想法再回来更新本文。 1. 为什么要用引入exploration1.1 直观解释强化学习中最关键的一步就是人为设计reward function,如果设计的不好,那整个算法也就不收敛。但是人为觉得设计了非常合理的Reward function,能够代表强化学习算法能让智能体高效完成任务吗,智能体会不会只是为了获取高的reward而出现了一些“作弊”(无效)行为而不是完成最终的任务吗? 课程中以Atari game中的Montezuma’s revenge游戏来举例说明该问题。在该游戏中,模拟器中reward的给定方式是:“人”得到了钥匙之后可以得到reward,人打开门可以得到reward,人与骷髅相撞的时候什么都得不到(reward=0),直到给定的游戏次数结束。这时候如果智能体随机探索的话(没有专门的探索策略的情况下),首先它会非常低效,如果运气比较好的话它也有可能专注于重复积累某个非完成任务的但却能得到比较高Reward的动作(例如这里的开门)从而最终获得比较高的episode reward。显然这种结果是我们希望避免的。这类任务被称为temporally extended task,在这类任务中reward的获得是延迟的,这里的延迟含义我理解为是本身动作空间的探索和获取reward的规则并不是强相关的(动作空间的随机探索也是每次变化一些数值,而上升不到通过这些数值的变化能够理解规则本身的高度),所以强化学习算法中的智能体只能通过试错法去不断发现隐藏的规则,那么在没有提供先验知识的前提下智能体出现上述情况也就是正常情况了(这也是强化学习为什么存在sample efficiency的一个原因之一,因为很多random exploration其实是比较低效的)。 1.2 强化学习中的exploration-exploitation权衡强化学习中最重要的一个权衡就是Exploration-exploitation的权衡。在之前的强化学习笔记博客中也提到过,这里再重新举例陈述一下。所谓的exploration就是对新的状态或动作空间进行搜索,而Exploitation就是充分利用已经通过之前探索得到的状态和动作空间,从中找出最优的决策方式。 下图为一个例子: 1.3 最优探索策略(Optimal Exploration Strategy)上文陈述了加入探索策略的重要性,那么如何得到一个最优的探索策略呢?探索策略的最优性如何定义? 这里的最优性主要是是对比当前策略的regret和Bayes-optimal strategy(见后文)。从问题的复杂度角度(从bandits问题到MDP,再到infinite MDP问题)来看,探索策略能否达到最优也是不断变化的。首先是原始问题的可解性上,位于横轴最左边的multi-armed bandits问题理论上是可解的,可得到最优决策序列。而横轴的最右端的infinite MDPs则是不可解的,这也是为什么在强化学习中引入深度学习的原因之一。 2. Multi-armed Bandits问题中的exploration2.0 Multi-armed Bandits问题描述Multi-armed bandits问题就是在一个场景中,有 n n n个可选的决策方式( a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1?,a2?,…,an?),每一个time step选择其中的一个决策方式后并收到reward值,即 r ( a i ) r(a_i) r(ai?),最后得到整个的episode reward。Multi-armed bandits的例子有:医生为一连串的病人提供治疗方案,其中治疗方案有 N N N种,也就是该问题下的action space,而Reward与病人存活或死亡有关。 假设智能体做出某种决策后收到的reward为: r ( a i ) ~ p θ i ( r i ) r(a_i)\sim p_{\theta_i}(r_i) r(ai?)~pθi??(ri?),而reward服从Bernoulli分布,即 p θ i ( r i = 1 ) = θ i , ? p θ i ( r i = 0 ) = 1 ? θ i p_{\theta_i}(r_i=1)=\theta_i,\ p_{\theta_i}(r_i=0)=1-\theta_i pθi??(ri?=1)=θi?,?pθi??(ri?=0)=1?θi?,这里的 θ \theta θ有其先验分布,记为 θ i ~ p i ( θ i ) \theta_i\sim p_i(\theta_i) θi?~pi?(θi?)。假设在某个问题中动作空间中总共有3个动作, a 1 , a 2 , a 3 a_1,a_2,a_3 a1?,a2?,a3?,则 r ( a 1 ) ~ p θ 1 ( r 1 ) , ? r ( a 2 ) ~ p θ 2 ( r 2 ) , ? r ( a 3 ) ~ p θ 3 ( r 3 ) r(a_1)\sim p_{\theta_1}(r_1),\ r(a_2)\sim p_{\theta_2}(r_2),\ r(a_3)\sim p_{\theta_3}(r_3) r(a1?)~pθ1??(r1?),?r(a2?)~pθ2??(r2?),?r(a3?)~pθ3??(r3?),其他信息均为未知。 2.1 理论上获取最优探索策略的方式上述的描述其实构成了一个POMDP问题(把
θ
\theta
θ当成隐变量即可),其状态为
s
=
[
θ
1
,
…
,
θ
n
]
\bold s=[\theta_1,\dots, \theta_n]
s=[θ1?,…,θn?],而belief state为
p
^
(
θ
1
,
…
,
θ
n
)
\hat p(\theta_1,\dots, \theta_n)
p^?(θ1?,…,θn?),先说明课程中的结论,求解该POMDP就相当于得到了最优的探索策略。而探索策略的好坏取决于Regret,regret的定义为采用当前action所获取的reward与采用最优动作所获得reward的差值,其表达式为: 但是该方法存在一个问题,就是POMDP中的belief state的维度过大,例如上述简单的医生-患者情境中,有5个治疗方案选项,每采取一个action所获得的reward服从一个Bernoulli分布(患者死亡Reward为0,患者生存为1),每个参数的先验概率分布等概率地在 [ 0 , 0.2 , 0.4 , 0.6 , 0.8 , 1 ] [0,0.2,0.4,0.6,0.8,1] [0,0.2,0.4,0.6,0.8,1]中选择,这里假设各个参数的分布都是独立的(当然这种假设是理想化的,实际上每个治疗方案之间或多或少是类似的), p ^ ( θ 1 , θ 2 , … , θ 5 ) = p 1 ( θ 1 ) p 2 ( θ 2 ) … p 5 ( θ 5 ) \hat p(\theta_1,\theta_2,\dots,\theta_5)=p_1(\theta_1)p_2(\theta_2)\dots p_5(\theta_5) p^?(θ1?,θ2?,…,θ5?)=p1?(θ1?)p2?(θ2?)…p5?(θ5?),belief state的可能性有 5 6 5^6 56种,如果参数的先验概率分布为连续概率密度函数,则belief state的概率分布更为复杂。 所以这也就引出了以下的较为简单的探索方式。 2.2 Optimistic Exploration第一种方式为optimistic exploration,该方式建立在Exploitation的基础之上,从上文可知,exploitation是指追踪每个动作得到的Reward值,每次选取reward最大的一个,表达式为
a
=
arg
?
max
?
μ
^
a
a=\arg \max \hat\mu_a
a=argmaxμ^?a?,其中
μ
^
a
\hat\mu_a
μ^?a?为每个action的平均Reward。optimistic exploration是在此基础上加入了在该动作下获取的reward的方差估计,
a
=
arg
?
max
?
μ
^
a
+
C
σ
a
a=\arg \max \hat\mu_a+C\sigma_a
a=argmaxμ^?a?+Cσa?,其中一个示例是: 2.3 Posterior Sampling (Probability Matching)另一种方式为Posterior sampling,该方法需借助上文所述POMDP框架中的belief state概率分布。大致流程为:从belief state中采样出各个参数的概率值,假设该belief state是完全准确的并根据其选择最优策略,最后更新belief state中的参数。该方法很难进行理论分析,但实际应用中有着不错的效果。 2.4 Information Gain最后一类方法是利用information gain中的熵来进行探索,这里先引入一个隐变量
z
z
z,其可以表示最优的动作或最优动作的值。 总结一下这三种方法: 3. 用于深度强化学习中的exploration策略第一部分直接改进bandits和MDP问题中的相关探索方法,即将上文中的三大类探索方法扩展到深度强化学习中,第二部分是一些其他的方法(比较新的研究) 3.1 Optimistic Exploration类方法pseudo-counts方法optimistic exploration的核心思想在于统计或估算每个state-action pair的已访问次数,通过该值判断这个state-action pair是不是新的并由此作为exploration bonus加到reward function中,并用该Reward function进行训练。其一般形式可以写为: 该形式的好处在于其简便性,而它存在的问题在于需要调bonus的参数,另外一个问题在于如果该方法用于连续状态空间,有些状态不可能访问两次(当然该问题在离散状态空间下也有可能存在)。解决该问题的一个思路是拟合一个density model p θ ( s ) p_{\theta}(\textbf s) pθ?(s)(或者是 p θ ( s , a ) p_{\theta}(\textbf s, \textbf a) pθ?(s,a)),如果某个状态从来没有被访问过, p θ ( s ) p_{\theta}(\textbf s) pθ?(s)的值会比较高。接下来的问题是如何通过density model得到访问次数(该访问次数被称为 p s e u d o ? c o u n t s pseudo-counts pseudo?counts),对于简单MDP来说,状态访问概率可以写成: P ( s ) = N ( s ) n P(s)=\frac{N(s)}{n} P(s)=nN(s)?,如果访问到一个新的状态 s ′ s' s′之后,该概率可以被改写为: P ′ ( s ) = N ( s ) + 1 n + 1 P'(s)=\frac{N(s)+1}{n+1} P′(s)=n+1N(s)+1?。 根据上述思路可以写出大致的算法思路: Counting with hashes与上文直接用模型输出某个状态的density不同,该方法将状态压缩,思路是用一个encoder将状态
s
\textbf s
s压缩成一个k-bit code
?
(
s
)
\phi(\textbf s)
?(s),然后对该code计数,得到
N
(
?
(
s
)
)
N(\phi(\textbf s))
N(?(s))。但存在的问题是如果编码长度过短,可能不同状态经过encoder之后可能得到相同的hash值。 Exemplar Exploration方法上文的方法是获得一个直接输出某个状态的density的density model,那么有没有方法能够隐式输出density呢?exemplar exploration方法回答了上述问题。直观思路就是构造一个判别器(二分类器),当访问到某个状态之后,用其与已有数据中的状态信息对比,如果判别器很难分辨该数据是来源于新数据还是已有数据,那么可以间接说明该状态的density很高,反之亦然。用形式化语言描述判别器,
D
x
?
(
x
)
:
X
→
[
0
,
1
]
D_{x^*}(x):\mathcal X\to[0,1]
Dx??(x):X→[0,1],其中
x
∈
X
x\in \mathcal X
x∈X,其概率分布为:
P
X
(
x
)
P_{\mathcal X}(x)
PX?(x)(只说明两种极端情况,其实也是label) 训练中来自Replay buffer中的数据标记为负样本,新数据被标记为正样本(即exemplar)。判别器的训练是通过交叉熵函数:
下图可以很直观地说明该方法的思路,第一个场景中A是全新的信息,这时候判别器很容易判断它是来自新数据,所以输出1,所以该数据的density为0,第二个场景中A并不是完全没见过的信息,这时候判别器很难分辨它是来自新数据还是旧数据,判别器会输出0.5,进而其density为1。
训练用的网络模型是amortized architecture,而不是每个数据点都训练一个判别器,如下图所示: Heuristic Estimation of counts via errors上述的几种方法还是有些复杂,有没有一种方法能更加简化地判断所遇到的状态信息是否是新的?这也是启发式估计方法的核心思路。现在假设已经有了智能体与环境的交互数据 D = ( s i , a i ) \mathcal D={(\textbf s_i, \textbf a_i)} D=(si?,ai?),由于optimistic exploration的核心思想是判断状态是否为新,所以可以构造一个反映状态新旧程度的参数化函数 f ^ θ ( s , a ) \hat f_{\theta}(\textbf s, \textbf a) f^?θ?(s,a),这里用神经网络表示该函数,输入是state-action pair,标签为 f ? ( s , a ) f^*(\textbf s, \textbf a) f?(s,a),用MSE损失函数 E ( s , a ) = ∣ ∣ f ^ θ ( s , a ) ? f ? ( s , a ) ∣ ∣ 2 \mathcal E(\textbf s, \textbf a)=||\hat f_{\theta}(\textbf s, \textbf a)-f^*(\textbf s, \textbf a)||^2 E(s,a)=∣∣f^?θ?(s,a)?f?(s,a)∣∣2更新神经网络的参数,并将该误差作为探索用的bonus。 比较直接的选取反映状态新旧程度的参数化函数的方式是利用对下一个状态信息的预测,即 s ′ = f ? ( s , a ) \textbf s' = f^*(\textbf s, \textbf a) s′=f?(s,a)(类似model-based RL中的对dynamics的模拟),或更直接的一种方式就是随机取一组神经网络的参数,并用该参数下的输出作为Target。 3.2 Posterior Sampling (Probability Matching)类方法在用于Multi-armed Bandits和MDP问题中的posterior sampling的方法中,其思路是先构建一个belief state
p
^
(
θ
1
,
θ
2
,
…
,
θ
n
)
\hat p(\theta_1, \theta_2, \dots, \theta_n)
p^?(θ1?,θ2?,…,θn?),然后从中采样得到各参数的值,并在当前参数的值下做出最优动作选择,并继续更新模型参数。这里的参数其实是做出每个动作得到reward的概率分布。类比大型MDP问题,Q-function与reward有异曲同工之妙。所以这里选择对Q-function的分布进行拟合,基本思路如下: 该技巧的优点在于其生成的策略是一致的,比如在Atari Seaquest游戏中,如果使用epsilon greedy策略的话,其产生的动作是震荡的,波动较大;而通过random Q function产生的动作在整个episode中都是一致的。 3.3 Information Gain类方法第三大类方法是引入信息增益。首先需要明确需要哪个变量的信息增益?有以下三种选项:reward的信息增益,状态密度 p ( s ) p(s) p(s)的信息增益,dynamics的信息增益: p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)。首先,如果环境的reward过于稀疏那么获取Reward的信息增益没有实际意义,估计状态密度的信息增益相比之下比较合理,因为状态密度的信息增益变多说明可能出现了比较新的状态;估计dynamics的信息增益也是比较合理的,其值也可以说明出现了比较新的状态。总体来说,在不确定使用具体哪个变量的信息增益时,精确表示该增益可能是不可解的。下面提供几种变量的信息增益: 一种是状态密度的对数 这里的VIME方法是将
θ
\theta
θ当作变量
z
z
z,变量
y
=
(
s
t
,
a
t
,
s
t
+
1
)
y=(s_t,a_t,s_{t+1})
y=(st?,at?,st+1?),写成具体的表达式就是: 3.4 引入信息论中的互信息后文有些方法主要基于信息论中的互信息(Mutual Information)的概念,公式如下: 可以将上述公式用于RL中,
π
(
s
)
\pi(s)
π(s)用于表示在策略
π
\pi
π下状态的边缘分布(marginal distribution),而
H
(
π
(
s
)
)
\mathcal H(\pi(s))
H(π(s))表示该分布的熵,直观理解就是策略的覆盖程度coverage,熵越大,该分布越随机,表示能访问更多的状态。而互信息的应用于最大化以下式子(该式子被称为empowerment): 3.5 学习过程中不需要Reward function的方法强化学习算法非常依赖于reward function的设计,那么有没有可能在强化学习过程中的不给定Reward function智能体还能自动学到很好的策略?该类方法受人类日常的决策过程所启发,例如一个餐具凌乱的餐桌上,人会自动将其整理好,如下图: lecture 14用基于视觉信息的机器人任务作为例子。算法基本思路是由输入信息“联想”出尽可能多的潜在可能目标 z g 1 , ? z g 2 , … z_{g1},\ z_{g2},\dots zg1?,?zg2?,…,再由这些潜在可能目标信息推断出真实的目标 x g x_g xg?,随后智能体根据臆断出的目标执行策略并访问某个状态。统计这些状态,并对那些很少访问到的状态增加其权重,使其熵增,从而使算法访问到更多的状态。
3.6 State-Marginal Matching (SMM)前文optimisitc exploration中的count-based方法的核心思路是让智能体的策略 π ( a ∣ s ) \pi(a|s) π(a∣s)能够访问尽可能多的状态,如果访问到了新的状态,就增加一项Bonus Reward。 另一种类似的方法被称为intrinsic motivation的方法(本质方法个人认为并没有变化),思路是在reward中加入与状态概率分布有关的项作为Bonus reward,一般表达形式为:
r
~
(
s
)
=
r
(
s
)
?
log
?
p
π
(
s
)
\tilde r(s)=r(s)-\log p_{\pi}(s)
r~(s)=r(s)?logpπ?(s),这里的
p
π
(
s
)
p_{\pi}(s)
pπ?(s)就是在策略
π
\pi
π下得到的某个状态的概率分布,目标是最大化reward,那么这也意味着要最小化state marginal,其含义是概率密度越低,该状态就更有可能是新状态。 基于上述方法的一种提高智能体探索能力的思路是学习一个策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),其目标函数是减小以下式子: (证明过程见论文) 那么以上讨论中覆盖足够多的state是否是一个好的探索目标(Exploration Objective)呢,或者说将目标状态goal state的概率分布尽可能贴近均匀分布是否有效?一个合理的解释是,假设在测试阶段,智能体已经知道它将得到的目标是非常随机的,即目标状态是均匀分布的,那么智能体能够做出的有效决策就是尽可能做最坏打算,即尽可能让目标状态的熵最大,从而访问更多的状态以应付更困难的任务。 3.7 另一种方法——cover the space of skills另外一种探索的思路是将任务分成不同的子任务(用变量 z z z表示任务的index),策略表达为 π ( a ∣ s , z ) \pi(a|s,z) π(a∣s,z)。注意这里与3.5让智能体设想尽可能多的不同目标不同,在该设定下智能体可能并不能捕捉到所有行为,而分成不同的子任务会让智能体通过学得不同的技能(解决子任务的子策略)进而访问到更多的状态。 该思路的实现也是对reward function做改进,具体做法是将某个task下的reward表达为:
r
(
s
,
z
)
=
log
?
p
(
z
∣
s
)
r(s,z)=\log p(z|s)
r(s,z)=logp(z∣s),而智能体策略的目标是最大化该reward,即
该方法其实本质上最大化了以下的互信息: (个人认为本节内容非常不好理解,我之后也会再继续加深一下对这些探索方法的认知然后再更新本文的一些内容) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:27:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |