强化学习笔记三 Monte Carlo Method & Temporal-Difference Method

之前笔记二中介绍了求解MDP的model based方法,本篇笔记介绍两种model-free方法,Monte Carlo(MC) 和 Temporal-Difference(TD)。

model-free methods

先说说model free的好处,前面我们用DP求解需要知道MDP的所有信息,即状态转移矩阵 P s s a P_{ss'}^a 和反馈 R s a R_s^a ,但大多数现实情况中,agent在还未与环境交互之前是不知道环境的信息。在这种情况下,model free methods只需要根据agent以往的经验来做出判断。

Monte Carlo Method

如果agent总是有一个随机的起始状态,一个终止状态和有限个中间状态,我们称之为episodic。

MC根据agent以往历史,也即经验来做出预测或估计状态价值函数,适用于episodic task。MC主要分为两种,first visit MC和 every visit MC。

first visit MC
first visit MC只考虑一个episodic中出现的第一个state s,换言之,当agent遇到state s,这次探索就结束了。

every visit MC
every visit MC考虑一个episodic中出现的每一次state s。

Policy Evaluation
遇到state s :
次数 N(s) = N(s) + 1
总回馈 R ( s ) = R ( s ) + G t R(s) = R(s) + G_t
状态价值函数 v(s) = R(s) / N(s)

收敛性
根据大数定律,在 N ( s ) N(s) \rightarrow \infty 时, v ( s ) v π ( s ) v(s) \rightarrow v_\pi(s)

Recursive Mean Computation Trick
每次我们需要不断计算平均值,但不需要重复计算之前几个episodic的回馈和,利用
μ k + 1 = μ k + 1 k + 1 ( x k + 1 μ k ) \mu_{k+1} = \mu_k + \frac{1}{k+1}(x_{k+1} -\mu_k)
那么MC每步更新为
N ( t + 1 ) = N ( t ) + 1 v t + 1 ( s t ) = v t ( s t ) + 1 N ( t + 1 ) [ G ( t ) v t ( s t ) ] N(t+1) = N(t) + 1 \\ v_{t+1}(s_t) = v_t(s_t) + \frac{1}{N(t+1)}[G(t) - v_t(s_t)]

Policy Iteration
前面讨论了policy evaluation问题为一个predict问题,再看看control问题。

Policy Iteration分为两步policy evaluation和policy improvement:
第一步计算 Q ( s , a ) = a v e r a g e [ R e t u r n ( s , a ) ] Q(s,a) = average [Return(s,a)]
第二步用 ϵ g r e e d y \epsilon-greedy 方法,以 1 ϵ 1-\epsilon π = a r g m a x a Q ( s , a ) \pi = argmax_a Q(s,a) ,否则随机。这里 ϵ = 1 / k \epsilon = 1/k ,随着迭代增多而变小,目的是使算法尽快稳定。

需要注意的有三点:
一是我们计算的是状态的行动价值函数,如果一个策略是determinstic的时候,仅有一个行动的概率为1,其余为零,那么我们永远都无法模拟出其余行动的回馈。所以MC有一个前提假设叫exploring start,给每一个action一个不为零的概率作为起始动作。
二是之前假设均基于一个stationary process,对于现实中不稳定过程,MC更新的时候,我们往往会取
v t + 1 ( s t ) = v t ( s t ) + α [ G ( t ) v t ( s t ) ] 0 < α < 1 v_{t+1}(s_t) = v_t(s_t) + \alpha[G(t) - v_t(s_t)] \\ 0<\alpha<1
依次带入 v ( s t ) , v ( s t + 1 ) , . . . v(s_t), v(s_{t+1}), ...
v t + 1 ( s t + 1 ) = ( 1 α ) t v 1 ( s 1 ) + i = 1 t α ( 1 α ) t i G ( i ) v_{t+1}(s_{t+1}) = (1-\alpha)^tv_1(s_1) + \sum\limits_{i=1}^t \alpha(1-\alpha)^{t-i}G(i)
对于过去的回馈 G i G_i 是以指数次衰减的。
三是为了保证收敛我们还做了一个假设是有无穷多个episodes供policy evaluation使用。这和DP中的情况是一样的,在policy evaluation的时候,我们迭代地求得的value function随着迭代的次数增多,越来越接近真实值。而这里episodes的数量越多,估计地就越准确,所以为了保证计算的时间,我们需要设置一个阈值来进行截断。

Important Sampling
重要性采样是MC采样中使用比较多的方法。一般来说,我们要计算一个定积分的值,但这个积分很复杂,那我们可以用MC随机采样,或者说均匀采样来近似估计。但假如这个概率密度函数是一个 σ \sigma 函数或者在0处很大,到10处很小,那么在采样数目不大的情况下均匀采样出来的结果就不是很准确。这个时候我们应该在值大的地方多采样,值小的地方少采样,这个思想就称之为重要性采样。

E p ( x ) [ f ( x ) ] = p ( x ) f ( x ) = Q ( x ) p ( x ) Q ( s ) f ( x ) = E Q ( x ) [ p ( x ) Q ( s ) f ( x ) ] E_{p(x)}[f(x)] = \sum p(x) f(x)=\sum Q(x) \frac{p(x)}{Q(s)} f(x)=E_{Q(x)}[\frac{p(x)}{Q(s)} f(x)]

如果采样的分布与估计的分布是一样的,称之为on policy,反之称之为off policy。
on-policy learning is a learning method in which the policy π is updated based on the experience following the current policy π.
off-policy learning is a learning method in which the policy π
is updated based on the experience following another policy μ.

我们知道MC policy iteration中我们采样和估计的分布可以不一样,那么此时可以用Important Sampling来更好得采样出 G t G_t .

优点
由于Markov的性质,当前状态只与前一个状态有关,所以如果只需要估计一个或几个状态的值时,MC的计算开销是相当小的。

Temporal-Difference Method

Temporal-Difference也是model free的方法,但与MC不同的是,TD是用一个guess来推测下一个guess。

先来看一个最简单的TD(0)方法:
每步更新
v t + 1 ( s t ) = v t ( s t ) + α [ G ( t ) v t ( s t ) ] G ( t ) = R t + 1 + γ v t + 1 ( s t + 1 ) v_{t+1}(s_t) = v_t(s_t) + \alpha[G(t) - v_t(s_t)] \\ G(t) = R_{t+1} +\gamma v_{t+1}(s_{t+1})
G ( t ) G(t) 被称为TD target, G ( t ) v t ( s t ) G(t) - v_t(s_t) 被称为TD error

TD control
TD 相比 MC 方差更小,可以用于不完整的episode和online的时候。同样可以将TD用于control的问题,可以得到两个算法SARSA和Q-Learning。

SARSA
属于on policy
Q ( s , a ) = Q ( s , a ) + α ( R + γ Q ( s , a ) Q ( s , a ) ) Q(s,a) = Q(s,a) + \alpha (R + \gamma Q(s',a') - Q(s,a))

在这里插入图片描述

变种SARSA:
属于off policy,因为其利用expectation policy来更新。优于SARSA,收敛速度会更快。
Q ( s , a ) = Q ( s , a ) + α ( R + γ E [ Q ( s , a ) s ] Q ( s , a ) ) Q(s,a) = Q(s,a) + \alpha (R + \gamma E[Q(s',a') |s']- Q(s,a))

Q-Learning
属于off policy,因为其利用greedy policy来更新。
Q ( s , a ) = Q ( s , a ) + α ( R + γ m a x a Q ( s , a ) Q ( s , a ) ) Q(s,a) = Q(s,a) + \alpha (R + \gamma max_{a'}Q(s',a') - Q(s,a))

例子:Cliff
当走到cliff时,agent必须回到S点重新开始。当 ϵ \epsilon 不为零时,Q-learning要差于Sarsa,如下右图所示。原因是Q-learning会倾向于走optimal path,但由于有一定概率去explore,会得到回起始点的巨大惩罚。当 ϵ 0 \epsilon \rightarrow 0 时,两者都收敛到optimal policy。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/thormas1996/article/details/83010455