因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验
强化学习的标准交互过程如下:每个时刻,智能体根据根据其 策略(policy)
,在当前所处 状态(state)
选择一个 动作(action)
,环境(environment)
对这些动作做出相应的相应的响应,转移到新状态,同时产生一个 奖励信号 (reward)
,这通常是一个数值,奖励的折扣累加和称为 收益/回报 (return)
,是智能体在动作选择过程中想要最大化的目标
形式化地讲,一个 general model-free RL framwork 大概会是下面这样
这个流程中,最重要的就是对价值函数的估计,价值函数是当前对从状态 s s s(状态动作 ( s , a ) (s,a) (s,a)) 出发可以得到的期望回报的估计值,代表目前 agent 认为这个状态(状态动作对)有多 “好”。追求高价值的状态和动作,对于智能体实现最大化回报这一目标而言是 “无偏的”,可以把价值函数看做 agent 获得的关于环境的 局部知识
,利用它可以直接得到贪心最优动作 arg max a q π ( s , a ) \argmax_a q_\pi(s,a) argmaxaqπ(s,a),这是对 agent 的一个 局部指导
,可以用于构建策略
再次精炼这个过程,只看最重要的部分,其实强化学习做的事情就是 利用奖励估计策略价值,再根据价值改进策略
这个过程中涉及两个关键环节,其实也对应到 RL 要求解的两个关键问题
Reward (of policy) to Value
,如何根据策略 π \pi π 的奖励估计价值 v π , q π v_\pi,q_\pi vπ,qπ,这其实是 prediction
问题Value to (better) Policy
,如何根据价值得到策略,这其实是 control
问题可以剧透一下,我认为导致 Model-free RL 样本效率低下的原因主要有(只想知道结论的话,看完下面这些就可以了)
盲目探索
(特别是在稀疏奖励的情况下,此问题更加严重)片面利用
注意:上述 4 点问题是当前 Model-free RL 方法的本质决定的,是它的 “nature”,不过具体到某个特定方法时不一定同时出现,比如
- 前两条都是针对 “要学习价值函数” 的方法而言的,如果使用 MC 思想处理价值则不存在相关问题(如 REINFORCE 方法)
- 如果是表格型方法则不存在第 4 点问题
- …
这些问题会相互作用,使得情况变得更糟,比如
- 2/4 条相互作用,神经网络(准确地说,任意函数近似方法)的泛化性会导致价值更新相互影响,原本估计得比较准确的位置可能变得不准,提供的 TD target 更不准确
- 1/2/3 条相互作用,在 MC 和不准确的 TD target 作用下,agent 学到的价值函数是渐进准确的,在这种基础上做 control 就不得面临 “探索-利用” 困境,agent 会从盲目探索转向片面利用,导致样本效率低下
- 4 条中常用的随机梯度下降本质也是一种 MC 方法,和第 1 条呼应上了
- …
本节列举一些经典、基础的强化学习方法,意在说明大部分RL方法都在用 MC 及其变体(如 TD)估计价值函数,如果不想看分析过程,可以跳过整个 2.1 节
这个其实是好理解的,因为价值函数是期望的形式,而我们又没法直接积分求解,只能使用MC及其变体来估计了,MC 的低效是 RL 低效的原因之一
先给出几个关键公式
使用动态规划方法,不断迭代 Bellman equation,就一定能收敛到策略 π \pi π 对应的价值函数 v π v_\pi vπ 和 q π q_\pi qπ,这种 prediction 方法称为
policy evaluation
。从数学上讲这属于 “不动点迭代法”,关于价值函数就是 Bellman equation backup 不动点的证明,请参考 强化学习拾遗 —— Bellman 迭代的收敛性
policy iteration
:先使用 Bellman equation 迭代得到当前价值 v π v_\pi vπ 和 q π q_\pi qπ,然后在每个状态 s s s 处根据价值贪心地改进策略,从而得到一个更好的(即能获得更多回报的)策略,这个操作称为 policy improvement
,反复执行 policy evaluation 和 policy improvement,可以收敛到最优价值函数 q ∗ q_* q∗、 v ∗ v_* v∗ 和最优策略 π ∗ \pi_* π∗value iteration
:直接反复迭代 Bellman optimal equation 至收敛,这样可以直接得到 v ∗ v_* v∗ 和 q ∗ q_* q∗,这等价于交替进行 单步policy evaluation 和 policy improvement根据前文分析,有 G t = r t + 1 + γ G t + 1 G_t = r_{t+1}+\gamma G_{t+1} Gt=rt+1+γGt+1,注意价值函数是对期望收益 E [ G ] \mathbb{E}[G] E[G] 的估计,这启发我们在做 prediction时,使用当前计算的下一时刻 s ′ s' s′ 或 ( s ′ , a ′ ) (s',a') (s′,a′) 的价值 v π ( s ′ ) v_\pi(s') vπ(s′) 或 q π ( s ′ , a ′ ) q_\pi(s',a') qπ(s′,a′) 代替 G t + 1 G_{t+1} Gt+1。也就是说
这个想法是合理的,以状态价值为例, v π ( s ) v_\pi(s) vπ(s) 和 r t + 1 + γ v π ( s ′ ) r_{t+1}+\gamma v_\pi(s') rt+1+γvπ(s′) 都是当前对真实价值的估计,有 E [ v π ( s ) ] = E [ r t + 1 + γ v π ( s ′ ) ] \mathbb{E}[v_\pi(s)] = \mathbb{E}[r_{t+1}+\gamma v_\pi(s')] E[vπ(s)]=E[rt+1+γvπ(s′)] 后者包含一个真实得到的奖励 r t + 1 r_{t+1} rt+1,因此比纯粹估计更准确一些,应当让估计朝着向它靠近的方向更新,我们称要靠近的目标为 TD target
,称更新时的差值为 TD error
TD 方法的一个关键优势在于,它不需要完整的轨迹,只要一个转移 (transition) ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′) 就能进行一步更新。我们称收集 transition 的策略为 behavior policy
;利用这些 transition 学习价值得到的策略称为 target policy
。类比增量式 MC,价值更新公式如下
v π ( s ) ← v π ( s ) + α [ r t + 1 + γ v π ( s ′ ) − v π ( s ) ] q π ( s , a ) ← q π ( s , a ) + α [ r t + 1 + γ q π ( s ′ , a ′ ) − q π ( s , a ) ] \begin{aligned} &v_\pi(s) \leftarrow v_\pi(s) + \alpha\big[r_{t+1}+\gamma v_\pi(s')-v_\pi(s)\big]\\ &q_\pi(s,a) \leftarrow q_\pi(s,a) + \alpha\big[r_{t+1}+\gamma q_\pi(s',a')-q_\pi(s,a)\big] \end{aligned} vπ(s)←vπ(s)+α[rt+1+γvπ(s′)−vπ(s)]qπ(s,a)←qπ(s,a)+α[rt+1+γqπ(s′,a′)−qπ(s,a)] 上面这种更新方式使用策略 π \pi π 收集 transition, 并用来更新策略 π \pi π 的价值,其 behavior policy 和 target policy 是相同的,具有这种特性的方法属于 同轨on-policy
方法,直接使用上面这个更新公式做价值估计的算法称为 Sarsa
算法
behavior policy 和 target policy 也可以设为不同的策略,具有这种特性的方法属于 离轨off-policy
方法。一个重要的 special case 是使用策略 π \pi π 收集的 transition 来更新最优策略 π ∗ \pi_* π∗ 的价值 v ∗ v_* v∗ 和 q ∗ q_* q∗,更新公式如下
v π ( s ) ← v π ( s ) + α [ r t + 1 + γ max s ′ v π ( s ′ ) − v π ( s ) ] q π ( s , a ) ← q π ( s , a ) + α [ r t + 1 + γ max a ′ q π ( s ′ , a ′ ) − q π ( s , a ) ] \begin{aligned} &v_\pi(s) \leftarrow v_\pi(s) + \alpha\big[r_{t+1}+\gamma \max_{s'} v_\pi(s')-v_\pi(s)\big]\\ &q_\pi(s,a) \leftarrow q_\pi(s,a) + \alpha\big[r_{t+1}+\gamma \max_{a'} q_\pi(s',a')-q_\pi(s,a)\big] \end{aligned} vπ(s)←vπ(s)+α[rt+1+γs′maxvπ(s′)−vπ(s)]qπ(s,a)←qπ(s,a)+α[rt+1+γa′maxqπ(s′,a′)−qπ(s,a)] 使用此更新公式的方法称为 Q-learning
TD 方法的本质:一种以匹配 Bellman equation 或 Bellman optimal equation 为目标的非平稳增量式 MC
TD(0)/单步TD
;我们也可以在一次更新之前运行多步,这样的方法称作 n步TD
,当n越来越大直到 n=horizon 时,TD方法变为MC方法。因此,TD本质是MC的一个变体所以后面我们一旦看到 TD,就要知道这个方法中也使用 MC 思想了
这里我想补充一点,如果从 agent 获取指导信息的角度来考虑,可以发现 TD 方法的一个重要特点:
- 原本环境的指导信号(reward 信号)是仅仅和某个 ( s , a ) (s,a) (s,a) pair 绑定的,agent 只有探索到这个特定的 pair 时才能获取指导,指导信号非常稀疏;引入 TD 的 bootstrap 思想后,任意一个 ( s , a ) (s,a) (s,a) pair 处都得到了即时的指导信号(TD target),这使 agent 得到的指导信号变得稠密
- TD 是把双刃剑,在给予更加稠密的指导信号的同时,这些基于当前估计的信号又是不准确的,常常会误导函数近似器(如价值神经网络)的更新方向,有时反而可能导致价值收敛更慢(我觉得如果原本奖励信号就很稠密,可能会出现这种情况),2.2 节会进一步讨论此问题
在 2.1 节的离散环境(即动作空间和状态空间是离散的)中,我们通常使用一些表格来记录所有 s s s 和 ( s , a ) (s,a) (s,a) 的价值以及策略 π ( a ∣ s ) \pi(a|s) π(a∣s)。当环境是连续环境时,动作或状态可以无限细分,这就没法用表格来表示价值和策略了。这时,我们只能使用一个函数来表示价值和策略,并利用神经网络来估计它们,这就引入了价值网络和策略网络,这类方法统称为深度强化学习(DRL)方法
如图所示,所有 Model-Free 方法总体上可以分两类
value based
方法:思想和离散方法一脉相承,就是找到最优的价值网络,得到最优价值,进而得到策略。这类方法的问题有二,一是不能处理连续动作空间;二是在价值上贪心只能找出唯一一个最优动作,无法给出随机策略(可以加 ε \varepsilon ε 随机试探缓解,但是这种随机策略通常不是最好的)。代表算法是 Deep Q-Learning (DQN)
policy based
方法:这类方法试图直接找出最优的策略网络,不存在上述问题。代表算法是 policy gradient (PG)
,因为 DRL 方法太多,不可能全部介绍,下面仅简介两类方法的代表算法
这类方法试图使用一个神经网络拟合策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s),通常表示为 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ),其中 θ \theta θ 是网络参数。对于离散动作空间,用softmax函数来描述;对于连续的动作空间,用高斯函数来描述(更好的处理方式是 DPG
算法,这里不提)。某种程度上说,这类方法是要跳过显式的 prediction 过程,直接做 control 了
注意到状态价值 v v v 和状态动作价值 q q q 间的关系
v π ( s ; θ ) = E A ∼ π [ Q π ( s , a ) ] = ∑ a π ( a ∣ s ; θ ) Q π ( s , a ) v_\pi(s;\theta) = \mathbb{E}_{A\sim\pi}\big[Q_\pi(s,a)\big] = \sum_a\pi(a|s;\theta)Q_\pi(s,a) vπ(s;θ)=EA∼π[Qπ(s,a)]=a∑π(a∣s;θ)Qπ(s,a) 一个好的策略可以得到最多的收益,因此我们的目标就定为最大化总状态价值 J ( θ ) = E S [ v ( S ; θ ) ] J(\theta) = \mathbb{E}_S[v(S;\theta)] J(θ)=ES[v(S;θ)]
要做这个优化,是比较困难的,难度在于求期望时积分不好算
现在还剩下一个问题,就是 Q π Q_\pi Qπ 怎么算
REINFORCE
算法Actor-Critc
算法可见,policy gradient 的本质是要最大化总的状态价值 v v v,这个过程用了大量的 MC 和 TD 相关操作,因此它也是基于 MC 的
叶子状态
:访问(采样计算)较少,Bellman optimal equation 符合性较差,(使用函数近似时)拟合较差,由于在轨迹尾部,这会提供有较大误差的 TD target根状态
:访问(采样计算)较多,Bellman optimal equation 符合性较好,(使用函数近似时)拟合较好,学到了误差很大的 TD target具有相似特征的状态
在更新时互相影响(有可能原本在叶子处一个误差较小的状态,受到根部状态更新时的泛化影响后误差变大了,进而其提供的 TD target 也变差了)“探索-利用困境” 是 control 部分一个老生常谈的问题,先简单说明一下。如果我们持续对动作价值进行估计,那么任一时刻都会至少有一个动作的估计价值是最高的,我们将这些对应最高估计价值的动作成为 贪心动作
。在选择动作时,有两种选择
利用/开发
:利用当前所知的关于动作价值的知识,从贪心动作中选择一个执行试探/探索
:选择某个非贪心动作执行显然,“开发” 可以最大化当前时刻的期望收益,但是“试探” 有助于我们更准确地估计当前非贪心动作的价值,进而找到真正的最优动作,合理地 “试探” 从长远来看可能带来总体收益的最大化。注意,同一次动作选择时,开发和试探是不可能同时进行的,这就要求我们在开发和试探间进行平衡
为了得到一个好的策略,贪心地 “利用” 的成分是必不可少的。一个极端的例子是 MC policy iteration
,这种算法使用 MC 替代 policy iteration 中的 policy evaluation(prediction) 步骤,相当于把开发和探索分开,为了得到最优策略,必须有 policy improvement 这一步。问题在于,我们难以把握应该在探索到什么程度之后进行利用,这往往导致 “学习后期片面利用” 的问题,使得样本效率低下
事实上,探索-利用困境是一个 human-level 的问题,只要用于决策的依据是渐进准确的,那么该问题必然出现(回忆一下你去探索新餐馆却踩雷的经历吧),理解这一点也给我们带来一个新视角,想想我们是如何在缺失自身经验的情况下做决策的,比如收集别人的评价、观察别人的行为、依赖过去的相似经验、想象可能发生的种种后果等,诶呀,RL 中也有很多方法有这些思想的影子啊!比如模仿学习、又或者 model-free 中的 “规划”、甚至一些对环境建模的 model-based 方法(如 dream to control)
note:如果仅考虑探索的角度,学界目前也已提出了很多更高级的探索方法,请参考 Lil’log: Exploration Strategies in Deep Reinforcement Learning 这是 OpenAI 研究员 Lilian Weng 的博客,写的非常好,还会经常 update,在此安利一波
首先随机梯度下降很慢应该不用说明了,它能在工程上得到广泛的应用,主要是得益于其普适性强、实现简单等优点。这一节主要说一下使用梯度方法优化策略网络时导致的特殊问题
note:处理连续控制问题时需要训练策略网络,通常会遇到此问题
首先回顾一下 2.1.2.2 节介绍的策略梯度方法(PG),其优化目标是最大化总价值
J ( θ ) = E S [ E A ∼ π ( ⋅ ∣ S ; θ ) [ Q π ( S , A ) ] ] J(\theta) =\mathbb{E}_{S}\left[\mathbb{E}_{A \sim \pi(\cdot \mid S ; \boldsymbol{\theta})}\left[Q_{\pi}(S, A)\right]\right] J(θ)=ES[EA∼π(⋅∣S;θ)[Qπ(S,A)]] 求梯度有
∂ J ( θ ) ∂ θ = E S [ E A ∼ π ( ⋅ ∣ S ; θ ) [ ∂ ln π ( A ∣ S ; θ ) ∂ θ ⋅ Q π ( S , A ) ] ] \frac{\partial J(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}}=\mathbb{E}_{S}\left[\mathbb{E}_{A \sim \pi(\cdot \mid S ; \boldsymbol{\theta})}\left[\frac{\partial \ln \pi(A \mid S ; \boldsymbol{\theta})}{\partial \boldsymbol{\theta}} \cdot Q_{\pi}(S, A)\right]\right] ∂θ∂J(θ)=ES[EA∼π(⋅∣S;θ)[∂θ∂lnπ(A∣S;θ)⋅Qπ(S,A)]] 注意到这里要对状态空间和动作空间积分,直接是没法做的,很多方法中都是按一般套路使用随机梯度下降法处理,如 AC/A2C/REINFORCE 等。假设 g g g 是某轮迭代中计算的梯度或随机梯度值,策略网络参数 θ \theta θ 会如下更新
θ ← θ + α g \theta \leftarrow \theta + \alpha g θ←θ+αg其中 α \alpha α 是学习率。这看起来很好,但问题在于强化学习对于策略是非常敏感的, π \pi π 的一点点变化,都可能导致巨大的性能差异,上面这种更新方式可以通过调整 α \alpha α 很好地控制参数 θ \theta θ 的变化,但无法准确且线性地控制经过神经网络后得到的策略 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 的变化,所以梯度优化时很容易 overstep,学到的策略 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 在 sweet point 附近反复震荡,收敛缓慢,样本效率低下
解决 Policy gradient 方法问题的一个思路是直接换一种优化方法,以回避上面的更新过程,比如改用置信域优化方法
- 置信域优化是一种经典优化方法,其出发点是:如果对目标函数 J ( θ ) J(\theta) J(θ) 进行优化过于困难,不妨在 θ \theta θ 的当前值 θ n o w \theta_{now} θnow 附近构造一个局部范围内和 J ( θ ) J(\theta) J(θ) 十分相似的替代函数 L ( θ ∣ θ n o w ) L(\theta|\theta_{now}) L(θ∣θnow),通过在这个局部范围内最优化 L ( θ ∣ θ n o w ) L(\theta|\theta_{now}) L(θ∣θnow) 来更新一次 θ \theta θ 值,反复迭代上述过程直到收敛。注意到这里的置信域半径控制着每一轮迭代中 θ \theta θ 变化的上限,我们通常会让这个半径随优化过程不断减小来避免 overstep,其一步更新和优化过程示意图如下
- 注意到每一轮迭代中,我们都在构造并求解一个小的约束优化问题,这样就不要做 θ ← θ + α g \theta \leftarrow \theta + \alpha g θ←θ+αg 形式的更新了,更重要的是,我们可以更自由地设计置信域约束条件,从而对每轮迭代中 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 的变化进行直接控制
把置信域优化方法和 policy based 方法相结合就得到了 TRPO 方法,下面做一些公式推导。记住我们的优化目标是最大化 J ( θ ) = E S [ V π ( a ∣ s ; θ ) ( S ) ] J(\theta) = \mathbb{E}_S[V_{\pi(a|s;\theta)}(S)] J(θ)=ES[Vπ(a∣s;θ)(S)],为了构造 L ( θ ∣ θ n o w ) L(\theta|\theta_{now}) L(θ∣θnow),把 θ n o w \theta_{now} θnow 引入 V π ( s ) V_\pi(s) Vπ(s) 中
V π ( s ) = ∑ a π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) = ∑ a π ( a ∣ s ; θ n o w ) ⋅ π ( a ∣ s ; θ ) π ( a ∣ s ; θ n o w ) ⋅ Q π ( s , a ) = E A ∼ π ( a ∣ s ; θ n o w ) [ π ( a ∣ s ; θ ) π ( a ∣ s ; θ n o w ) ⋅ Q π ( s , a ) ] \begin{aligned} V_\pi(s) &= \sum_a \pi(a|s;\theta)·Q_\pi(s,a) \\ &= \sum_a \pi(a|s;\theta_{now})·\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{now})}·Q_\pi(s,a) \\ &= \mathbb{E}_{A\sim \pi(a|s;\theta_{now})} \big[\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{now})}·Q_\pi(s,a) \big] \end{aligned} Vπ(s)=a∑π(a∣s;θ)⋅Qπ(s,a)=a∑π(a∣s;θnow)⋅π(a∣s;θnow)π(a∣s;θ)⋅Qπ(s,a)=EA∼π(a∣s;θnow)[π(a∣s;θnow)π(a∣s;θ)⋅Qπ(s,a)]这样优化目标就变成
J ( θ ) = E S [ V π ( a ∣ s ; θ ) ( S ) ] = E S [ E A [ π ( a ∣ s ; θ ) π ( a ∣ s ; θ n o w ) ⋅ Q π ( s , a ) ] ] = E S , A [ π ( a ∣ s ; θ ) π ( a ∣ s ; θ n o w ) ⋅ Q π ( s , a ) ] \begin{aligned} J(\theta) &= \mathbb{E}_S[V_{\pi(a|s;\theta)}(S)] \\ &= \mathbb{E}_S\big[\mathbb{E}_A \big[\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{now})}·Q_\pi(s,a) \big]\big] \\ &= \mathbb{E}_{S,A} \big[\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{now})}·Q_\pi(s,a) \big] \end{aligned} J(θ)=ES[Vπ(a∣s;θ)(S)]=ES[EA[π(a∣s;θnow)π(a∣s;θ)⋅Qπ(s,a)]]=ES,A[π(a∣s;θnow)π(a∣s;θ)⋅Qπ(s,a)] 注意到这个原始优化目标中有两个不好处理的点
解决两个问题后构造出的替代目标函数 L ( θ ∣ θ n o w ) L(\theta|\theta_{now}) L(θ∣θnow) 如下:
L ( θ ∣ θ n o w ) = 1 n ∑ i = 1 n π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ n o w ) ⋅ g i L(\theta|\theta_{now}) = \frac{1}{n}\sum_{i=1}^n \frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{now})}·g_i L(θ∣θnow)=n1i=1∑nπ(ai∣si;θnow)π(ai∣si;θ)⋅gi再加上置信域约束,每轮迭代中构造出的约束优化问题为
θ n e w ← arg max θ L ( θ ∣ θ n o w ) s.t. θ ∈ N ( θ n o w ) \theta_{new} \leftarrow \arg\max_\theta L(\theta|\theta_{now}) \space\space\space\space\space\space\space \text{s.t.} \space\space\theta \in \mathcal{N}(\theta_{now}) θnew←argθmaxL(θ∣θnow) s.t. θ∈N(θnow)为了避免策略的 overstep 问题,直接把更新前后的策略差异的约束作为 θ \theta θ 的约束条件,即
θ ∈ N ( θ n o w ) ⇒ 1 n ∑ i = 1 n KL [ π ( a ∣ s ; θ n o w ∣ ∣ π ( a ∣ s ; θ ) ) ] < △ \theta \in \mathcal{N}(\theta_{now}) \space\space\space \Rightarrow\space\space \frac{1}{n}\sum_{i=1}^n \text{KL}\big[\pi(a|s;\theta_{now} || \pi(a|s;\theta)) \big] < \triangle θ∈N(θnow) ⇒ n1i=1∑nKL[π(a∣s;θnow∣∣π(a∣s;θ))]<△持续迭代求解上述约束优化问题直至策略收敛的方法就是 TRPO,该方法的一个经典改进是 PPO 方法,其至今也是 model-free RL 的主流方法之一
note:这里用的是表格型方法,不会出现问题4
有效转移
的概念,前文 2.1.3 节已经说明,TD 算法中 TD error 代表对价值估计的更新强度有效转移
,它们是对价值估计有所贡献的转移四元组,TD error 代表了贡献的大小。随着有效转移不断发生,局部价值函数估计得越来越好,这就形成了 “局部知识”,可以对 agent 动作给出一定的 “局部指导”,允许 agent 执行更有针对性的探索
note:本节分析中忽略了问题2,认为每轮迭代后越靠近 TD target 就越好
学习早期
:除了有奖励位置,要想在无奖励状态处进行有效转移以更新价值,必须保证 γ V ( S t + 1 ) ) ≠ V ( S t ) \gamma V(S_{t+1})) \neq V(S_t) γV(St+1))=V(St),由于价值估计速度很慢,所以早期的大部分状态都是 V ( s ) = 0 V(s) = 0 V(s)=0 的,有效转移很少,agent难以获取局部指导,只能 盲目转移
,样本效率低下学习中期
:随着价值逐步 “传递” 到状态上,agent 获取的局部知识越来越多,这又导致了更有方向性的探索,二者相互促进使得样本效率相对提升学习后期
:由于未探索区域价值仍然是0,在 ε \varepsilon ε-greedy 探索时,agent绝大多数时间会去执行 V ( s ) > 0 V(s)>0 V(s)>0 的那些状态的相关的转移,使其价值估计得到 “巩固”,所以这实际上又限制了 agent 的探索范围,容易陷入局部最优。随着 “巩固” 过程进行,最后这些状态的价值估计基本收敛到 γ V ( S t + 1 ) ) = V ( S t ) \gamma V(S_{t+1})) =V(S_t) γV(St+1))=V(St), δ = 0 \delta =0 δ=0,又变成无效转移,agent 片面利用
局部知识,样本效率再次变低稀疏奖励问题
综合前文所述,RL 低效的原因主要有四个
分析这些问题,会发现它们和强化学习最基础的 MDP 框架是紧密联系的
在现有的基础上修改,上述问题大都只能缓解而无法根治
上一节中的问题 2 和 4 相对独立,对应的章节中也较具体地给出了处理措施(这两个是我最近看论文后加的)
问题 1 和 3 的互相作用比较紧密,它们导致 agent 从盲目探索转向片面利用,可以把 RL 交互过程表示为下图,针对各环节问题,使用橘黄色字标注了一些处理方法,具体不展开说明了
再放一张图片配合总结下(这是我之前一个 presentation 的 PPT,以后可能会讲一下发 B 站)
最后跳出一般 model-free RL 的框架打开思路看看
经验重放的一个改进方法是优先经验重放,其核心思想是 agent 在不同 transition 上的 “学习量” 不同,可以通过强调某些 transition 样本提升学习效率,目前大概有三个方向
- 强调 TD error 大的 transition,代表方法 PER,请参考:论文理解【RL - Exp Replay】 —— 【PER】Prioritized Experience Replay
- 强调 On-policy 性质强的样本,代表方法 LFIW,请参考:论文理解【RL - Exp Replay】—— 【LFIW】Experience Replay with Likelihood-free Importance Weights
- 强调 Q value 估计更准确的样本,代表方法 DisCor,请参考:论文理解【RL - Exp Replay】—— 【DisCor】Corrective Feedback in RL via Distribution Correction