zoukankan      html  css  js  c++  java
  • MDP(MarkovDecisionProcess,马尔卡夫决策树)实现总结

    MDP算法简介:首先MDP算法由五个单元组成(S、A、Psa(s')、R、G)

    S:代表状态集合,即整个事件有多少中可能的状态
    A:代表每个状态下的所有可能的行为
    Psa(s'):代表在状态s下采取行为a转移到s'的状态转移概率
    R:代表的是回报函数(reward function),指到达某个状态获得的利弊
    G:是一个大于0小于1的常数系数,越接近1表示该策略行为越看重未来的获利,越接近于0表示该策略越看重当前行为的获利
     
    以上五个单元的关系简单来说就是:在状态集S中根据Psa(s')和R寻找一个行为集合(策略),使该行为的获利最大,用G控制未来获利与当前获利之前的比重关系
     
    为了实现上述寻找最大获利策略的目的,有值函数替代法(value iteration)和策略替代方法(policy iteration)
     
    值函数迭代法:
      首先是值函数的定义:
        
      值函数迭代法的实现算法:
        

      实现过策程的注意点:

        如下图所示值函数

          

        状态1为目标状态,状态2为避免状态,状态3为不存在状态

        首先1状态和2状态的值在整个替代过程中不能改变,否则值函数不会收敛

        其次3状态,不能使用非常低或者高的值函数参与运算,因为一旦参与运算会直接拉低其相邻状态的值函数

    策略迭代法:

        策略迭代方法发现有两个版本:

        第一个版本是来源于:http://blog.csdn.net/zz_1215/article/details/44138843的版本

        

        基本思路是:初始化策略与值函数

          1、先按策略根据贝尔曼方程先让值函数收敛

          2、然后按收敛的值函数求最佳策略

          重复上述两个步骤直到策略不再变化

        

        这个版本的策略迭代方法与值函数迭代方法关键的不同之处是在值迭代的时候,策略迭代方法是根据已有的固定策略进行值迭代的,而值函数迭代方法中的值迭代是局部最优策略的迭代

        第二个版本是斯坦福大学机器学习公开课的版本:

        

        该方法的2.(a)步骤的求解方法如下:

        

        如文中所述是求解线性方程组而得的,首先方程组的构造的关键是根据贝尔曼方程构造出所有状态的表达式

           

        其中V、P、R、E分别为值函数矩阵、状态转移概率矩阵、回报函数矩阵、单位矩阵

          

        如上图所示的应用场景,总的状态数为12,对应的P为12×12的矩阵,由遍历所有状态(基于已有策略)的转移概率所得

        其中需要注意的是:

          1、S6是不参与运算的,所以要从矩阵呢运算中去除,所以去除V、P、E中的第六行与第六列所有元素以及R中的第六个元素

          2、S8、S12的值函数是固定的所以V、P、E的第8行与第12行要从矩阵运算中去除,R的第八个与第12个元素去除

          3、将下列条件

            

          代入

            

          得

           

          其中下d表示已经去除1、2中的行列之后的矩阵,表示原V矩阵的第8列与第12列

          至此可求出所有状态的值函数

          再进行策略迭代即可

          这种方法的缺点是状态量非常大的时候求解方程组几乎是不可能的事情,因此只适合状态量不大的情况

    以下是三种方法执行情况对比:

      值函数迭代方法:

        

      策略迭代方法(版本一):

        

      策略迭代方法(版本二):

        

    在实现上述三种方法的过程中发现三种方法的收敛是不一样的

    当转移概率的分布是0.8,0.1,0.1的分配方式时(即在S3状态采取向上的策略的话,状态转移的概率为:0.8概率转为S7,0.1概率转为S2,0.1概率转为S4)

    收敛情况如下(小格子中的方向为策略方向,数值为值函数的值)

    值函数迭代方法:

         

    策略迭代方法(版本一):

         

    策略迭代方法(版本二):

        

    发现策略迭代方法(版本二)的收敛结果与其他两个版本是不一样的

    当转移概率的分布为:0.7,0.15,0.15时

    收敛情况如下:

      值迭代方法:

        

      策略迭代法(第一版):

        

      策略迭代法(第二版本):

        

    发现策略迭代方法(版本二)的收敛结果与其他两个版本是不一样的

    当转移概率的分布为:0.9,0.05,0.05时

    收敛情况如下:

       值函数迭代方法:

        

      策略迭代方法(版本一):

        

      策略迭代方法(版本二):

        

     理论上来说,版本二的策略迭代方法是最接近贝尔曼方程思想的,但并没有收敛到最好的情况,本人还是菜鸟一只,并不是很理解为什么会这样,有朋友了解的,欢迎评论

     

        

  • 相关阅读:
    iptables的例子1
    Nginx教程
    bash编程基础
    centos7 PXE自动安装环境搭建
    矛盾破裂了
    20200823-矩阵的收尾与离散控制的跌跌撞撞
    20200817-三大公式的结束-频域法的再探
    markdown换行
    由二〇二〇新冠疫情引发的对于开源、分享这一理念的看法
    Windows简单使用记录
  • 原文地址:https://www.cnblogs.com/LinQianXun/p/7053525.html
Copyright © 2011-2022 走看看