强化学习可以解决通过表格或者近似函数来直接学习价值函数或者策略函数,在这个方法当中,个体不会试图去理解环境。如果能够建立一个与真实环境相似的模拟环境,那么个体就能在模拟环境中进行学习,这个过程也可以称为是思考,个体可以通过思考来来决定在真实环境中采取的行动,使得能够取得最有的结果。
1.环境的模型和个体的思考
在之前的学习中,我们知道个体在当前状态下采用某一个行为得到奖励并进入下一个状态,如此循环,从而它的学习过程可以抽象为状态->行为->状态,在我们所讨论的强化学习的问题中,模型可以理解成为一个五元组,对于通常是给定的确定值。从而模型就是,假设对于一个问题,它的状态空间和行为空间是确定的,则采用模型即可描述概率转换和奖励函数,其中.所以我们可以通过来模拟真实环境,也即
,
假设状态转移与奖励之间相互独立,有
通过以上的设定,我们就可以基于采样从而得到一个模型,使得个人在这个模型中进行思考(自我训练),假设我们采样得到的一个序列是,根据使用的算法不同和状态表征的方式不同,有基于表格的模型和基于神经网络的模型。我们以基于表格的模型来说明这个过程,在实际应用中,我们可以获得多组采样,从而可以计算概率转换矩阵和奖励函数:
(1)
(2)
等式右边的括号是布尔判别式,真返回1,假返回0.
在真实的应用中,我们并不会直接采用(1)(2)来计算,而是从符合当前的状态和行为的状态转换集合中随机的选择经历。这个过程可以用下图来表示:
2.Dyna算法
通过第1部分,我们可以知道,个体可以自己通过采样数据进行自我学习,而不需要时刻与真实的环境进行交互,它可以现在模拟环境中进行思考,最后选出最有利的行为与环境进行交互,这个过程对于个体做出正确的行为非常有帮助。但是我们注意到,概率转移和奖励函数都是一个近似函数,而想要通过采集实际的样本达到几乎是不可能的,因此我们需要结合实际和虚拟环境中的思考一起来解决问题,这就是学习与规划的强化学习方法——Dyna算法。
该算法的过程与个体思考的过程有些类似,它只不过是将真实的交互和虚拟的交互结合在一起,可以用下图来描述这个过程:
我们给出基于行为值函数的Dyna算法——Dyna-Q算法的伪代码:
Algorithm Dyna-Q
Input:Q,γ,α
Output:Optimized Q
initialize Q(s,a) and Model(s,a) for all s∈S,a∈A
repeat for every s:
s⬅current state
a⬅ε-greedy(Q,s)
perform action a and receive reward R,get state s'
Q(s,a) = Q(s,a)+α(R+γmaxQ(s',a)-Q(s,a))
Model(s,a)⬅R,s'
repeat for n times:
s ⬅ random state from previous state
a ⬅ random action from previous action taken in s
R,s' ⬅ Model(s,a)
Q(s,a) ⬅ Q(s,a)+α(R+γmaxQ(s',a)-Q(s,a))
until n reach limitation
until
3.基于模拟的搜索
基于模拟的搜索是一种前向搜索,从当前的状态开始,利用模拟进行采样,将形成的搜索树作为学习资源,再使用不基于模型的学习方法来寻找当前状态的最优策略。如果采用蒙特卡罗方法进行学习,则称为蒙特卡罗搜索;如果采用sarsa进行学习,则称为搜索。其中蒙特卡罗搜索又分为蒙特卡罗简单搜索和蒙特卡罗树搜索(Monte-carlo tree search)
3.1 蒙特卡罗简单搜索
对于一个模拟模型和对应的策略,我们可以模拟出多组采样数据,对当前状态,蒙特卡罗简单搜索会对行为空间所有的行为进行k次模拟采样,对于第i次采样中,状态s采取动作a获得回报为,则有
(3)
通过比较不同动作a的Q值,从而可以选择Q值最大的行为:
(4)
从(3)式可以知道,蒙特卡罗简单搜索最后求得Q值只关注与采样次数K和回报,对于中间状态及其收获是忽略的。如果我们需要用到中间的状态和行为值函数,则需要采用蒙特卡罗搜索树
3.2 蒙特卡罗搜索树
与蒙特卡罗简单搜索一样,在模拟环境中产生k次完整的序列,然后构建一个以状态为根的树,对于树中的每一个状态行为对Q(s,a)可以使用他们的样本平均值来替代,也即
在得到了动作值函数以后,和蒙特卡罗简单搜索一样,找一个最大化动作值函数的动作来与真实环境进行交互。