通过贝尔曼方程求解最优策略 π ∗ \pi^* π∗有3种基本方法:动态规划法、蒙特卡洛法和时间差分法。前面我们介绍了如何利用动态规划法去求解环境知识完备(即马尔可夫决策过程已知)的强化学习任务。简而言之,首先通过策略评估计算给定策略 π \pi π的优劣程度,然后采用策略迭代算法获得基于策略 π \pi π的最优价值函数 v π ( s ) v_{\pi}(s) vπ(s),并根据最优价值函数 v π ( s ) v_{\pi}(s) vπ(s)确定最优策略 π \pi π;出于效率的考虑,也可以采用值迭代算法来获得最优价值函数 v π ( s ) v_{\pi} (s) vπ(s)和最优策略 π ∗ \pi^* π∗。 在实际任务中,环境知识完备性这一先决条件较难满足,但是,也就是无法在现实世界同时知道MDP的5元组⟨S,A,P,R,γ⟩。也就意味着大量的强化学习任务难以直接采用动态规划法进行求解。对于环境知识不完备的MDP,即转移矩阵 P P P以及奖励 R R R未知的研究领域称为无模型(Model-Free)方法。Model-free方法的基本方法就是使用蒙特卡洛法(Monte Carlo,MC)和时间差分法(Temporal-difference,TD)。
虽然不知道状态转移概率 P \mathcal{P} P,但是这个概率真实存在。可以直接尝试,不断采样,然后会得到奖赏,通过奖赏来评估值函数。这与蒙特卡罗方法的思想一致。
“蒙特卡洛”这一名字来源于摩纳哥的城市蒙特卡洛(MonteCarlo)。该方法由著名的美国计算机科学家冯·诺伊曼和S.M.乌拉姆在20世纪40年代第二次世界大战中研制原子弹("曼哈顿计划”)时首先提出。 蒙特卡洛法是一种基于采样的算法名称,依靠重复随机抽样来获得数值结果的计算方法,其核心理念是使用随机性来解决原则上为确定性的问题。通俗而言,蒙特卡洛法采样越多,结果就越近似最优解,即通过多次采样逼近最优解。
举个简单的例子。
去蔬菜基地摘玉米,规则是每次只能摘一个玉米,并且手中只能留下一个玉米,最后走出蔬菜基地的时候也只能带走一个玉米,目标是使得最后拿出蔬菜基地的玉米最大。可以达成这样一个共识:进入蔬菜基地后每次摘一个大玉米,看到比该玉米更大的则替换原来的玉米。基于上述共识,可以保证每次摘到的玉米都至少不比上一次摘到的玉米小。如果摘玉米的次数越多,挑出来的玉米就越大,但无法确保最后摘到的玉米一定是最大的,除非把整个蔬菜基地的玉米都摘一遍。即尽量找较大的,但不保证是最大的。采样次数越多,结果就越近似最优解,这种方法就属于蒙特卡洛法。
蒙特卡洛法能够处理免模型的任务的究其原因是无须依赖环境的完备知识(Environment backup),只需收集从环境中进行采样得到的经验轨迹(Experience episode),基于经验轨迹集数据的计算,可求解最优策略。
比如,现评估某状态 s s s的价值函数。我们采样了两个经验轨迹,从一个经验轨迹里面得到的回报是5,然后下一个经验轨迹里面的得到的回报是7,我们可以从起始状态来评估此状态的价值函数为: 5 + 7 2 = 6 \frac{5+7}{2}=6 25+7=6
其实从字面理解就是求均值的意思。就是状态 s s s在每一个样本中收获的回报均值。
MC只能应用于episodic MDPs:所有的Episode都必须终止
Return不是针对于Episode的,而是针对于Episode的某一个状态,是从这个状态开始经历完Episode时得到的有衰减的即时奖励的总和。
从一个Episode中,我们可以得到该Episode内所有状态的收获。当一个状态在Episode内出现多次,该状态的收获有不同的计算方法:first visit和every visit
缺点在于只能应用于一定有终结点(termination point)的按幕(Episode)分的MDP过程。
每条Episode都是一条从起始状态到结束状态的经历(例如在走迷宫,一条episode就是从你开始进入迷宫,到最后走出迷宫的路径),完整的Episode(完整的Episode包含:状态的转移、使用的行为序列、中间状态的即时奖励、终止状态的即时奖励)不要求起始状态一定是某一个特定的状态,但是要求个体最终进入环境认可的某一个终止状态。
要得到的是某个状态 s s s的平均收获,所以episode必须经过该状态 s s s才能用于计算.
理论上完整的状态序列越多,结果越准确。
特卡洛法采用时间步有限的、完整的经验轨迹,其所产生的经验信息可推导出每个状态的平均奖励,以此来代替奖励的期望(即目标状态值)。换言之,在给定的策略 π \pi π下,蒙特卡洛法从一系列完整的经验轨迹中学习该策略下的状态值函数 v π ( s ) v_{\pi}(s) vπ(s)。 当模型环境未知(Model-free)时,智能体根据策略 π \pi π进行采样,从起始状态 s 0 s_0 s0出发,执行该策略 T T T步后达到一个终止状态 s T s_T sT,从而获得一条完整的经验轨迹。 s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , . . . , s T − 1 , a T − 1 , r T , s T ∼ π s_0,a_0,r_1,s_1,a_1,r_2,...,s_{T-1},a_{T-1},r_T,s_T \sim \pi s0,a0,r1,s1,a1,r2,...,sT−1,aT−1,rT,sT∼π 对于 t t t时刻的状态 s s s,未来折扣累积奖励为: G t = r t + γ r t + 1 + . . . + γ T − 1 r t + T G_t=r_t+\gamma r_{t+1}+...+\gamma^{T-1} r_{t+T} Gt=rt+γrt+1+...+γT−1rt+T 蒙特卡洛法利用经验轨迹的平均未来折扣累积奖励 G G G作为状态值的期望。 G = a v e r a g e ( G 1 + G 2 + . . . + G T ) G=average(G_1+G_2+...+G_T) G=average(G1+G2+...+GT) 而强化学习的目标是求解最优策略 π ∗ \pi^* π∗,得到最优策略的一个常用方法是求解状态值函数 v π ( s ) v_{\pi}(s) vπ(s)的期望。如果采样的经验轨迹样本足够多,就可以精确估计出状态 s s s上下遵循策略 π \pi π的期望,即状态值函数 v π ( s ) v_{\pi}(s) vπ(s)。 v π ( s ) = E [ G ∣ s ∈ S ] v_{\pi}(s)=\mathbb E[G | s \in S] vπ(s)=E[G∣s∈S] 当根据策略 π \pi π收集到的经验轨迹样本趋于无穷多时,得到的状态值 v π ( s ) v_{\pi}(s) vπ(s)也就无限接近于真实的状态值。
在给定一个策略,使用一系列完整经验轨迹评估某一个状态 s s s时,对于每一个经验轨迹,仅当该状态 s s s首次出现的时间 t t t列入计算:
在给定一个策略,使用一系列完整经验轨迹评估某一个状态 s s s时,对于每一个经验轨迹,仅当该状态 s s s每次出现在状态转移链时,例如,一次在时刻 t 1 t_1 t1,一次在时刻 t 2 t_2 t2,则两次对应的 G t 1 G_{t_1} Gt1, G t 2 G_{t_2} Gt2都应该纳入对 v ( s ) v(s) v(s)的计算
不论是First-Visit还是Every-Visit,在计算回报均值时,都是利用总回报除以状态s的总访问次数的,我们能否对均值进行增量式的求取?
这里假设每次的回报为 x j x_j xj,在 k k k次后平均回报为: μ k = 1 k ∑ j = 1 k x j \mu_k=\frac{1}{k}\sum_{j=1}^kx_j μk=k1j=1∑kxj 在 k − 1 k-1 k−1次后平均回报为: μ k − 1 = 1 k − 1 ∑ j = 1 k − 1 x j \mu_{k-1}=\frac{1}{k-1}\sum_{j=1}^{k-1}x_j μk−1=k−11j=1∑k−1xj 这种增量式的推导过程可以按照如下过程进行: μ k = 1 k ∑ j = 1 k x j = 1 k ( x k + ∑ j = 1 k − 1 x j ) = 1 k ( x k + ( k − 1 ) μ k − 1 ) = μ k − 1 + 1 k ( x k − μ k − 1 ) \begin{aligned} \mu_k&=\frac{1}{k}\sum_{j=1}^kx_j\ &=\frac{1}{k}(x_k+\sum_{j=1}^{k-1}x_j)\ &=\frac{1}{k}(x_k+(k-1)\mu_{k-1})\ &=\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1})\ \end{aligned} μk=k1j=1∑kxj =k1(xk+j=1∑k−1xj) =k1(xk+(k−1)μk−1) =μk−1+k1(xk−μk−1)
- 静态问题就是说我们的MDP是不变的,比如转移矩阵,比如奖励函数
- 非静态问题即随着时间的推移,MDP中的某些参数将会发生改变。
对于一系列经验轨迹: S 0 , A 0 , R 1 , S 1 , A 1 , R 2 , . . . , S T − 1 , A T − 1 , R T , S T S_0,A_0,R_1,S_1,A_1,R_2,...,S_{T-1},A_{T-1},R_T,S_T S0,A0,R1,S1,A1,R2,...,ST−1,AT−1,RT,ST
按照更新平均值的方法可以进行如下累进更新响应的价值函数:
N ( S t ) ← N ( S t ) + 1 V ( S t ) ← V ( S t ) + 1 N ( S t ) ( G t − V ( S t ) ) w . r . t G t = R t + γ R t + 1 + . . . + γ T − 1 R t + T \begin{aligned} & N(S_t) \leftarrow N(S_t)+1\\ & V(S_t) \leftarrow V(S_t)+\frac{1}{N(S_t)}(G_t-V(S_t))\\ &w.r.t \ \ \ \ G_t=R_t+\gamma R_{t+1}+...+\gamma^{T-1} R_{t+T} \end{aligned} N(St)←N(St)+1V(St)←V(St)+N(St)1(Gt−V(St))w.r.t Gt=Rt+γRt+1+...+γT−1Rt+T
这里我们将MC方法变为增量式,我们可以扩展开改变 1 N ( S t ) \frac{1}{N(S_t)} N(St)1,将他定义为一个类似于学习率的参数 α \alpha α,在处理非静态问题时,使用这个方法跟踪一个实时更新的平均值是非常有用的,可以扔掉那些已经计算过的episode信息。
引入参数 α \alpha α后的状态价值更新方法可以更改为:
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V(S_t) \leftarrow V(S_t)+\alpha(G_t-V(S_t)) V(St)←V(St)+α(Gt−V(St))