二 利用动态规划的思想来解决马尔可夫决策问题

动态规划(Dynamic Programming)是非常经典的求解最优解的算法思想,它要求问题满足最优子特性才可以使用。我们对马尔可夫问题的定义是一个五元组\small <S,P,A,R,\gamma>,在我们之前所讲的马尔可夫决策问题当中,是存在最优解的,我们要做的便是找到最优解。那么,如何使用动态规划的方法来解决马尔可夫决策问题呢?

假设上图每个节点上都有一个值,现在要求从顶点经过一条路径到达最底层的某一个节点,使得路径上值之和最大。按照动态规划的思想,我们很容易可以想到从底层开始,处于同一分支的两个节点比较,取较大的那个节点,循环这个过程,知道到达顶点。沿途取到的节点,就是路径上的点,此时,值之和最大。首先我们将所有的顶点的值,作为初始数据写入,然后把求解过程分成两个部分:

①选出当前节点的左右子树中较大的子树 

②更新当前节点的值,也即\small v_i=v_i+max(v_{i}^l,v_{i}^r) ,其中i表示层数,\small v_{i}^r表示第i个节点的右子树的值。

重复①②,最后得到顶点的值就是整个路径的值之和。这个问题对我们解决马尔可夫决策问题有什么启示?当我们给定策略\small \pi时,在某一个状态下的行为就是可预见的。在马尔可夫决策问题中,从初始状态到目的状态会存在着多条路径,但是最优的路径只有一条或者几条,给定策略后,不一定走的那一条就是最优的,因此我们需要不断的更新策略,从而使得每次都能达到最优。那么在马尔可夫决策问题中,用什么来衡量一个策略的好坏呢?我们在之前已经说过状态值函数动作值函数的概念,而状态值函数和动作值函数的计算恰好符合上述例子的形式,我们引入最优贝尔曼方程,

\small {\color{Red} V^*(s)=max_{a\in A}(R_s^a+\gamma \sum_{s'}p_{ss'}^aV_\pi(s')),}

\small {\color{Red} q^*(s,a)=R_s^a+\gamma\sum_{s'\in S}p_{ss'}^amax_{a'}q^*(s',a')}

从上述动态规划思想解决问题的例子当中,我们可以看到过程①相当于找到最大的动作值函数,我们把它叫做策略改善(policy improvement),过程②相当于更新值函数,我们把它叫做策略评估(policy evaluation),将两者组合就形成了我们的策略迭代,在马尔可夫决策问题,通过策略的一次又一次的迭代,我们最终可以找到一个收敛的策略,就是最优的策略。

策略迭代的伪代码:

Algorithm policy iteration
input: 初始状态值,折扣因子γ,回报值R,转移概率矩阵P,初始策略Π
do:
    repeat 0,1,2,...
        calculate current V    #policy evaluation
        for every state s in path,let a which make the biggest value of q(s,a) as the next step action   #Greedy                      
    until all action has no change
ouput:最后的路径(path)
    

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值