(十二)从零开始学人工智能-强化学习:强化学习基础算法

本文详细介绍了强化学习的基础算法,包括基于动态规划的策略评估、策略改进、策略迭代和值迭代算法。接着,探讨了在模型未知情况下的蒙特卡洛算法,包括解决预测问题和控制问题的方法。最后,讨论了时序差分学习在预测和控制问题中的应用,以SARSA和Q-learning为例。文章深入浅出地解释了每个算法的工作原理和区别,适合学习强化学习的读者参考。
摘要由CSDN通过智能技术生成

强化学习基础算法

上节中讲到,强化学习可以按有无模型进行分类,即智能体是否对环境进行建模;如果将强化学习问题建模成马尔可夫决策过程(MDP)的话(即五元组 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>),那么,有无模型可以根据MDP五元组(尤其是 P P P R R R)是否已知进行判断;若已知表明智能体对环境进行了建模,能模拟出与环境相同或近似的状况,为有模型学习,否则为无模型学习。接下来,会先介绍有模型学习中基于动态规划的算法,然后会介绍无模型学习中的蒙特卡洛算法和时序差分学习。

1. 基于动态规划的算法

先回顾一下动态规划:

动态规划算法通过把复杂问题分解为子问题,通过求解子问题进而得到整个问题的解。在求解子问题的时候,其结果通常需要存储起来被用来解决后续复杂问题。

当问题具有下列特性时,通常可以考虑使用动态规划来求解:

①、一个复杂问题的最优解由子问题的最优解构成,可以通过寻找子问题的最优解来得到复杂问题的最优解;

②、子问题在复杂问题内重复出现,使得子问题的解可以被存储起来重复利用。

MDP具有以上两个属性:

①、贝尔曼方程把问题递归为求解子问题;

②、价值函数相当于存储了子问题的解,并可以重复利用。

因此,可以使用动态规划的算法来求解MDP。

1.1 策略评估

在模型已知时,对任意策略 π \pi π进行评估,给出该策略获得的回报期望,即计算状态价值函数。

问题:评估一个给定的策略 π \pi π

解决方法:利用贝尔曼方程反向迭代;

具体做法:每次迭代过程中,用所有的状态 s s s的第 k k k次迭代得到的 v k ( s ′ ) v_k(s') vk(s)来计算第 k + 1 k+1 k+1次的 v k + 1 ( s ) v_{k+1}(s) vk+1(s)的值,其中 s ′ s' s s s s的后继状态。经过这种方法的反复迭代,最终是可以收敛到最优的 v ∗ ( s ) v_*(s) v(s)。迭代的公式如下:
v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) ) {v_{k+1} }(s) = \sum\limits_{a \in A} {\pi (a|s)}(R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_k }(s'))} vk+1(s)=aAπ(as)(Rsa+γsSPssavk(s))
例子:方格世界

已知:

①、状态空间 S S S:除了灰色的两个格子(0和15),其他都是非终止状态;

②、动作空间 A A A:在每个状态下,都有四种动作可以执行,即上下左右;

③、状态转移概率 P P P:任何想要离开方格世界的动作将保持状态不变,即原地不动。比如:格子4执行动作“左”,则执行动作后状态仍为格子4;其他情况下将100%转移到下一个状态,比如格子4执行动作“右”,则执行动作后进入格子5;

④、即时奖励 R R R:任何非终止状态间转移得到的即时奖励均为-1,进入终止状态的即时奖励为0;

⑤、折扣因子 γ \gamma γ:1;

⑥、当前策略 π \pi π:在任何一个非终止状态下,智能体采取随机策略,执行的动作是随机选择的,即:
π ( u p ∣ s ) = π ( d o w n ∣ s ) = π ( l e f t ∣ s ) = π ( r i g h t ∣ s ) = 0.25 \pi(up|s)=\pi(down|s)=\pi(left|s)=\pi(right|s)=0.25 π(ups)=π(downs)=π(lefts)=π(rights)=0.25
问题:评估这个方格世界里给定的策略。也就是说,在给定策略(这里是随机策略)的情况下,求解改策略下每一个状态的价值。

求解示例:

上述方法的更新方式是更新某一状态的价值函数时用其他所有状态的价值函数在上一次迭代时的值,即第 k + 1 k+1 k+1次的结果都是利用第 k k k次的结果来计算的。

状态价值函数在第153次迭代后收敛:

具体代码可参考:强化学习实践一 迭代法评估4*4方格世界下的随机策略

还有另外一种更新方式:

更新某一状态的价值函数时用其他状态最新的迭代值,而不用等所有状态一起更新,即第 k k k次的迭代直接用第 k k k次中先迭代好的值来计算。

1.2 策略改进

策略评估的目的是为了找到更好的策略,即策略改进。

策略改进通过按照某种规则对当前策略进行调整,得到更好的策略。

我们的目标是得到最优策略,所以,在状态价值函数收敛后,可以对策略进行改进。

在这里,可以使用贪婪算法来进行策略改进,即:
π ′ ( s ) = a r g m a x a ∈ A q π ( s , a ) \pi '(s) = \mathop {argmax}\limits_{a \in A} {q_\pi }(s,a) π(s)=aAargmaxqπ(s,a)
也就是说,仅执行那个(些)使得状态价值最大的动作。

比如上面的方格世界例子,当我们计算出最终的状态价值后:

①、对于第二行第1格,其周围的状态价值分别是0,-18和-20,此时使用贪婪法,则调整的策略方向为状态价值为0的方向,即向上;

②、对于第二行第2格,其周围的状态价值分别是-14,-14,-20和-20,此时使用贪婪法,则调整的策略方向为状态价值-14的方向,即向左或向上。

③、其他格子类似,即上图中的右图。

在上述的例子中,基于给定策略的迭代最终收敛得到的策略就是最优策略,但通过一次策略评估计算状态价值函数联合策略改进就能找到最优策略不是普遍现象。通常,还需要在改善的策略上继续评估,反复多次。不过,这种方法总能收敛至最优策略 π ∗ {\pi}^* π。也就是接下来介绍的策略迭代。

比如:当初始化策略改为不管任何状态都执行动作“下”,那么,该策略通过一次策略评估和策略改进的过程就无法得到最优策略。

1.3 策略迭代

策略迭代是策略评估和策略改进的结合。

基本思想:从一个初始策略开始,不断地改进这个策略达到最优解。每次迭代时首先用策略评估计算一个策略的状态价值函数,然后根据策略改进方案调整改策略,再计算新策略的状态价值函数,如此反复直到收敛。

从一个策略 π \pi π和一个状态价值函数 V V V开始,每一次箭头向上表示利用当前策略进行状态价值函数的更新,每一次箭头向下代表着根据更新的状态价值函数贪婪地选择新的策略,说它是贪婪的,是因为每次都采取转移到状态价值函数最高的新状态的动作。最终将收敛至最优策略和最优状态价值函数。

策略迭代算法伪代码:

注意:在上面的伪代码中,策略评估步骤中,状态价值函数的更新公式为:
V ( s ) ← ∑ s ′ , r p ( s ′ , r ∣ s , π ( s ) ) [ r + γ V ( s ′ ) ] V(s) \leftarrow \sum\nolimits_{s',r} {p(s',r|s,\pi (s))} [r + \gamma V(s')] V(s)s,rp(s,rs,π(s))[r+γV(s)]
甚至有些人在看资料中,更新公式会写成:
v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p a ( s , s ′ ) ( R a ( s , s ′ ) + γ v k ( s ′ ) ) {v_{k + 1}}(s) = \sum\limits_{a \in A} {\pi (a|s)\sum\limits_{s' \in S} { {p_a}(s,s')} } ({R_a}(s,s') + \gamma {v_k}(s')) vk+1(s)=aAπ(as)sSpa(s,s)(Ra(s,s)+γvk(s))
而我们在上面策略评估过程中,我们的公式是这样的:
v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) ) {v_{k+1} }(s) = \sum\limits_{a \in A} {\pi (a|s)}(R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_k }(s'))} vk+1(s)=aAπ(as)(Rsa+γsSPssavk(s))
在上述公式里面, p a ( s , s ′ ) p_a(s,s') pa(s,s) P s s ′ a P^a_{ss'} Pssa的含义一样的,代表的是在状态 s s s执行动作 a a a后转移到状态 s ′ s' s的概率;

上述公式其实是等价的,对比发现,其实最重要的是理解:
R s a = ∑ s ′ ∈ S p a ( s , s ′ ) R a ( s , s ′ ) R_s^a = \sum\limits_{s' \in S} { {p_a}(s,s')} {R_a}(s,s') Rsa=sSpa(s,s)Ra(s,s)
等式左面代表的是在状态 s s s执行动作 a a a后得到的即时奖励的期望(这一点在上节介绍MDP五元组时有介绍);等式右面是把执行动作 a a a后可能到达的状态 s ′   ( s ′ ∈ S ) s' \ (s'\in S) s (sS)进行分开讨论,先得到到达各个状态 s ′ s' s下的即时奖励 R a ( s , s ′ ) R_a(s,s') Ra(s,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值