• <强化学习>无模型下计算给定策略对应的价值函数,Model free Prediction,评估一个给定策略的表现


    一、Intro

      Prediction只是评估给定策略的表现,直白的说它是找 “在环境ENV下,AGENT按照给定的策略pai,AGENT的价值函数”。

      这篇blog只介绍三种计算方法,没有涉及到 “求取ENV下的最优AGENT”!

      对于事先已经给出了ENV,也就是说我们有完整的MDP,知道所有的state,也知道从这到那、从那到这的reward,可以在代码的开头就定义State表和reward表,这就是model-based问题,只要使用贝尔曼方程和贝尔曼最优方程迭代更新找到最优的value function V*和最优的policy pai*即可。

      而大多数情况下ENV是不会给你的。只把你扔到一个陌生的环境中自己去探索去学习。也就是说我们不知道在这个ENV下总共有哪几种state,不知道离开这个state进入那个state会得到多少reward。所以!state要靠自己去探索鉴定,reward只知道最后输赢的时候的reward,这里我们就采用了model free算法了。

      传统的model free算法有三种:

    ————MC

    ————TD

    ————TD(lamda)

    在model free Prediction这里,三种方法相同之处是:

    使用固定的策略pai作为控制策略进行探索,获得多条episode的数据(这里的episode有的是以终止状态ST为结尾的,有的不是);

    基于大量episode的数据求取所有出现过的状态的价值预测的均值,来代表策略pai对应的状态价值函数(V(s) → vπ(s) as N(s) →∞)

    二、 MC方法

     蒙特卡洛方法直接使用一条条episode的经验。value<——mean return。

    对于同一个状态在一个episode中多次出现,分为首访蒙特卡洛和每访蒙特卡洛。首访蒙特卡洛是只考虑状态的第一次出现,而每访蒙特卡洛是每次都要计入。

    使用渐进更新:

    其实就是采样取均值,使用样本估计全局。基于大数定理当采样数足够大时均值结果就趋于于真实结果了。

    三、 TD方法

     时序差分方法直接使用一条条episode的经验。value<——mean return。

     #TD learns from incomplete episodes, by bootstrapping

     #TD updates a guess towards a guess

    TD的更新式是这样的: V(St) ← V(St) + α( Rt+1 + γV(St+1)  −V(St)),

    MC的更新式是这样的:V(St) ← V(St) + α(          Gt               −V(St))  

    虽然两种方法都是使用大量episode的均值来估取value,但

    可以看出,MC是使用完整采样来渐进更新求取均值,而TD是使用不完全采样来渐进更新求取均值。

     也正因此,TD适用于 “持续环境” ; MC受限于 “有终止态环境”                    //例如围棋alphaGo使用蒙特卡洛树搜索,围棋就是一个典型的“有终止态环境”

    TD有两个概念 “TD target”和“TD error”

      |——  TD target             Rt+1 + γV(St+1)

      ——   TD error             δt = Rt+1 + γV(St+1)−V(St

    拓展:TD n step

    是对上面的TD的一个拓展,上面我们使用Rt+1 + γV(St+1)作为TD target来计算均值估计V(St)     ==》    一步的真实采样+一个还在迭代更新中不准确的V值

    我们也可以多看几步,如Rt+1 +Rt+2 + γV(St+3)作为TD target来计算均值估计V(St),                 ==》    两步的真实采样+一个还在迭代更新中不准确的V值

                                           ....................................                                                                           ==》     n步的真实采样+一个还在迭代更新中不准确的V值

    四、 蒙特卡洛&时序差分 的 Bias / Variance 比较:

    五、 TD(λ)方法

      TD(λ)的更新式是这样的:V(St) ← V(St) + α(          Gλ               −V(St))  

      Gλ  是这样定义的:

  • 相关阅读:
    Javascript 时间Date()的一般用法
    vue搭建
    初次见面
    css3边框
    appium移动自动化测试-one demo
    appium移动自动化测试-安装2
    appium移动自动化测试-安装1
    python数据类型
    判断软键盘是不是可见
    android 设置Dialog的宽度
  • 原文地址:https://www.cnblogs.com/dynmi/p/12306589.html
Copyright © 2020-2023  润新知