TL;DR

暂无

Bellman 公式中总结了对于 With model RL 的基本原则和更新方式,但是现实中的问题通常不能保证有严谨的公式。本笔记想对 model free RL的基本方法和思想进行一些概括和总结,好对后面的Actor Critic等算法打好基础。此处所说的 model 指的是环境模型,即对环境的状态转移概率奖励机制进行建模。在拥有 Model 的情况下(类似围棋),智能体可以预知执行某个动作后环境会发生怎样的变化(确定性或随机性);而 Model-free RL 则是要在不掌握这些环境动态规律的情况下,直接通过与环境的交互来学习策略。

蒙特卡洛方法

蒙特卡罗方法是所有 model free RL 的基础,因为没有了 Model 预测执行某个动作后会发生,就只能通过通过大量采样取平均来近似期望回报,从而估计

比如说Bellman 公式中的计算出状态价值函数 后可以得到状态-动作价值函数的计算方法:

然而这个方法需要知道系统模型 已知,对于 model free 方法来说,回归定义:

也就是累计折扣回报的期望,假定总共 轮采样,而第 轮回报是 ,则蒙特卡罗方法将 可以由下列公式近似:

MC Basic 算法

可以看到这个方法基本就是 Policy iteration 方程的 model free 方法,显示 Policy evaluation 然后接着 Policy improvement。但是注意原来的 PE 是更新状态 状态价值函数,此处改为更新 状态-动作价值函数,这是因为在 PI 这步,model-based 方法是通过该方程求解:

但是 model free 中, 是未知的,所以采用对状态-动作奖励函数进行优化。

这步的采样深度 也会极大影响质量,即从 出发,走几步才停止采样。

整体来说,MC basic 方法过于原始,工程上会采取许多优化方法。比如说把一个策略的 episode 多次利用:

对于这一条轨迹,不仅可以估计 的值,并且可以同时估计沿线的所有状态的状态-动作价值函数,比如可以同时利用 的状态来估值。其中,如果每一个 状态-动作对 只可以将第一次用于估计,则成为 ,否则则成为

这个改进首先是增大了每一个 episode 的利用率,不再是一个轨迹只修改一个 状态动作对的价值函数,而是可以修改整个轨迹中的状态动作对的价值函数,可以利用下一步的 累计折扣回报 来更新上一步的回报,即 这步。

同时,这个算法是每采样完一个 episode 就评价和更新策略,而不是像经典MC那样采够了足够的轨迹才开始更新。

但是这个方法没法保证每种状态动作对都探索到了,如果没有探索到,因为没有样本,回报会严重不足,可能会导致策略陷入局部最优解。因此算法引入了一些随机性,采用了 -greedy policies 的方法,采用部分随机的方式来改进策略:

最后改进为:

image.png

可以看到,当 越大的时候,策略越趋向随机来遍历所有状态-动作状态。

随机近似

对于上述的算法中,利用增量的方式求均值的方式,是如何知道其是有效的:

对于系数为 来说,可以通过数学推导来得到结果,但是对于其他系数呢,什么系数能满足这个公式? 为什么这些系数可以逼近平均数?

Robbins-Monro 公式是来解答这个问题的,即逼近方程解的有效性,由于重心不在这,因此我只是粗略介绍。增量近似和 SGD 算法都是 RM 方程的一种特例。

总体来说,RM 算法想回答一个方程解的问题,我们想求一个方程的根,由此可以等价成求方程的任意解:

有了这个方程解,我们可以求出梯度解,得到最优质,或者得到 这类方程的答案。但是其中的方程 是带有随机性的方程,或者说我们只能观测到带有噪音的 ,比如说 SGD 或者增量求平均数的时候,我们不知道下一个样本对客观量的偏移量:

这个 是一个观测误差,不一定是高斯分布。

RM 算法保证,可以通过下列方程求解

其中

  • 是第 个根的估计;
  • 是第 个带噪采样;
  • 是个正参数。

只要满足以下条件,则可以保证能求出正确参数:

  1. 对所有

其中 ,则 几乎必然收敛到满足 的根

证明略,见书第六章。

可以发现求增量平均和 SGD 方法中的参数 满足其本身是级数发散,平方是级数收敛,正好满足 RM 算法对参数的要求。

TD 算法

把随机近似应用到 model free 估计中就可以得到 TD(Temporal-Difference) 方法。不同于 MC 方法使用统计学的方法,TD 方法采用基于动态规划的随机近似,即基于上文中阐述的随机近似方法。

这是由于 因此这就是和求增量平均那个随机近似方法一样,用新的采样和上一步参数来估计下一步参数:

这个方程中:

被称为 TD target ,同时:

被称为 TD error,因为 TD error 度量的是 Bellman 方程的残差,真值 满足:

所以当 时,。同时

所以有:

可以保证新的估计值比旧的估计值更接近真值,因此,这个方程可以肯定最后是可以收敛到结果中的。

TD学习MC学习
增量式(Incremental):TD学习是增量式的。它可以在接收到一个经验样本后立即更新状态/动作值。非增量式(Non-incremental):MC学习是非增量式的。它必须等待一个完整的回合(episode)被收集完毕。这是因为必须计算该回合的折扣回报。
持续任务(Continuing tasks):由于TD学习是增量式的,它可以处理回合制和持续性任务。持续性任务可能没有终止状态。回合制任务(Episodic tasks):由于MC学习是非增量式的,它只能处理在有限步数后终止的回合制任务。
自举(Bootstrapping):TD学习使用自举,因为状态/动作值的更新依赖于该值的先前估计。因此,TD学习需要对值进行初始猜测。非自举(Non-bootstrapping):MC学习不使用自举,因为它可以直接估计状态/动作值,而无需初始猜测。
低估计方差(Low estimation variance):TD的估计方差低于MC,因为它涉及的随机变量更少。例如,为了估计动作值 ,Sarsa仅需三个随机变量的样本:高估计方差(High estimation variance):MC的估计方差更高,因为涉及许多随机变量。例如,为了估计 ,我们需要样本 。假设每个回合的长度为 ,且每个状态的动作数量为 ,那么在软策略下,有 种可能的回合。如果仅用少数几个回合来估计,估计方差自然会很高。
TD 算法的成立性证明见课本。

但是只有价值函数没法在 model free 的环境中指导动作选择,需要获得状态动作价值函数 才可以,把 TD 算法自然外推,为了实现自举,需要 这几个状态值,前四个都很好求,都是可以直接由状态或模型得到的,但是最后一个 这个下一步动作需要怎么求,这个问题衍生出两个算法,一是 Sarsa 算法,二是 Q-learning 算法。

Sarsa 算法

如何求解这个问题上,Sarsa 算法决定使用模型给出的策略进行更新:

同 TD algo 一样, 是 Bellman 方程的随机近似:

之所以要叫 算法是因为这个算法需要 这几个状态值。

可以在书上 P.136 查看例子。

TD learning 可以增大采样深度,即不止依赖下一步的回报值,而是依赖多步的回报:

这个方法兼采了 MC 方法和 TD 方法的特点,n 愈大,算法愈趋向于 MC 算法,方差大但是 bias 小。 image.png 可以看到有几步奖励函数掉的非常厉害,这是因为 -Greedy 选取了次优的动作,导致走向一个很差的轨迹。

Q-learning

同时,为了下一步 如何求解上, Q-learning 选择直接使用 这个状态空间的 值最高的动作:

这个迭代方式其实是求下列方程的随机近似过程:

可以看到 Sarsa 算法依赖自己这个策略来更新,而 Q-learning 单纯使用下一步中的动作空间中状态动作奖励值最大的动作。这实际上是 On-policy 和 Off-policy 的差异。

任何 RL agent 都同时涉及两个策略:行为策略(behavior policy) — 用来和环境交互、产生数据的策略;目标策略(target policy) — 你真正想学/想评估的策略。

On-policy(SARSA):

行为策略和目标策略是同一个。你用 -greedy 探索,你评估的也是这个 -greedy 策略的 。所以 SARSA 的更新里用 是完全自洽的 — 是从 采样的,而你要学的就是 的价值。

这带来一个后果:每次你改进策略(比如降低 ),之前收集的数据就”过时”了,因为那些数据是旧策略产生的。所以 on-policy 算法通常不能复用历史数据,sample efficiency 比较差。并且这个 动作状态奖励值是使用 -Greedy 探索而来的,带有一定探索带来的负担,不一定是最佳的。

Off-policy(Q-learning):

行为策略和目标策略是分开的。你可以用任意策略 (比如 -greedy,甚至纯随机)来探索,但你学的是贪心最优策略 的价值。

Q-learning 能做到这一点,关键就在 操作。它在算 target 的时候完全不看 实际选了什么 ,直接取 ,相当于隐式地把目标策略定义为贪心策略。所以不管数据是谁产生的,target 的计算都和行为策略无关。

最根本的原因是: Q-learning 求解的是 BoE 的最优解,而 Sarsa 求解的是一个给定策略的 贝尔曼方程。

另外不要和 online/offline 弄混了,这个指的是更新策略的时机。这两个算法都是 online 的算法。

image.png 可以看到 Q-learning 没有陡峭的奖励曲线崩溃,不像 Sarsa,它求得是动作空间中的最优值。

AlgorithmExpression of the TD target in (7.20)
Sarsa
-step Sarsa
Q-learning
Monte Carlo
AlgorithmEquation to be solved
SarsaBE:
-step SarsaBE:
Q-learningBOE:
Monte CarloBE: