array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction - 爱码网

David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction

DP动态规划能够解决已知environment的MDP问题,即已知 S,A,P,R,γ,根据是否已知policy又将问题划分为prediction和control的问题。本质上来说这种known MDP问题已知environment即转移矩阵与reward函数

但是很多问题中environment未知,不清楚做出了某个action之后会变到哪个state,也不知道这个action好不好,即说不清environment体现的model是什么。

这种情况下需要解决的prediction和control问题即model-free prediction和model-free control。<该问题只能从与environment交互得到的experience中获取信息>

本节即针对未知environment的policy evaluation,在给定policy下,求取state的value function是多少?

episode:从某个状态开始执行到终止状态的一次遍历S1,A1,R2,Sk称为episode,已知很多episodes。

目录:

  • Introduction
  • Monto-Carlo Learning
  • Temporal-Difference Learning
  • TD(λ)

1. Introduction

  1. Model-Free prediction
    • estimate the value function of an unknown MDP
  2. Model-Free control
    • optimize the value function of an unknown MDP

2. Monte-Carlo Learning

  1. 特点
    • 直接从experience的episode中学习
    • 不需要MDP的transition、rewards
    • 主要思想:value = mean return,即反复测试求平均。
  2. Monte-Carlo Policy Evaluation

    • 基本内容
      • 目标:在策略π下,从experience的episodes中学到vπ
      • 已知:
        • a. return是所有的折扣回报之和
          Gt=Rt+1+γRt+2++γkRt+k+1=k=0γkRt+k+1
        • b. value function 是return的期望值(第二节中,每个state的value function是return的期望值)
          vπ(s)=Eπ[Gt|St=s]
      • 关键:与第二节讲到的不同,Monte-Carlo policy 假设每个状态的value function取值等于多个episodes的return Gtd的平均值而非期望值,即在Monte-Carlo policy evaluation的假设下,值函数的取值从期望简化成了均值。这就需要每个episode是完整的流程,即一定要执行到终止状态。
      • 由于每一步的reward都知道,则意味着每一步的return Gt都可以计算出来。因此,通过反复测试,这样很多状态就会被遍历到,而且不止一次,那么每次就可以把在状态下的return求取平均值。当episode无限大时,得到的数据也就接近于真实的数据。Monte-Carlo方法就是使用统计学的方法来取代Bellman方法的计算方法。
      • 有两种访问次数的记录方式,一种是在一个episode中只记录第一次访问到的s,一种是一个episode中每次访问到s都记录下来。
      • First-Visit MC Policy Evaluation,每一次的episode中state只使用第一次到达的t来计算return
        David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction
      • Every-Visit MC Policy Evaluation,每一次的episode中state只要访问到就计算return求平均
        David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction
    • 特点:可以看到蒙特卡洛方法是极其简单的。但是缺点也是很明显的,需要尽可能多的反复测试,而且需要到每一次测试结束后才来计算,需要耗费大量时间。“AlphaGo就是使用蒙特卡洛的思想。不是蒙特卡洛树搜索,而是说在增强学习中使用蒙特卡洛方法的思想。AlphaGo每次也是到下棋结束,而且只使用最后的输赢作为return。所以这也是非常神奇的事,只使用最后的输赢结果,竟然能够优化每一步的走法。”

    • Incremental Monte-Carlo

      • Incremental Mean
        序列{x1,x2,}的均值{u1,u2,}可以增量式增加

        uk====1kj=1kxj1kxk+j=1k1xj1k(xk+(k1)uk1)uk1+1k(xkuk1)

      • Incremental Monte-Carlo Updates

        • Updates V(s) incrementally after episode S1,A1,R2,,ST
        • 针对每一次新的访问,先次数加1,N(St)=N(St)+1,然后更新V(St)=V(St)+1N(St)(GtV(St))
        • 在解非固定问题时,可以将1N(St)设置为一个常数α,即V(St)=V(St)+α(GtV(St)).

3. Temporal-Difference Learning

  1. 思想
    基于Bootstrapping思想,即在中间状态中会估计当前获得的return值,并更新之前状态能获得的return,因此它不需要走完一个episode的全部流程而前面分析的蒙特卡洛方法,其一个特点就是需要运行完整个episode从而获得准确的result。但是往往很多场景下要运行完整个episode是很费时间的
  2. 特点
    • 直接从experience的episode中学习
    • 不需要MDP的transitions、rewards
    • 通过bootstrapping从不完整的episode中学习
      bootstraping。即通过估计的方法来引导计算。那么蒙特卡罗不使用bootstraping,而TD使用bootstraping。
    • 每一步都可以更新,这是显然,也就是online learning,学习快
    • 从一个猜测更新到另一个猜测
    • 可以面对没有结果的场景,应用范围广
  3. TD vs MC
    • 目标:learn vπ online from experience under policy π.
    • Incremental every-visit Monte-Carlo
      根据真实的 reward Gt更新 V(St):
      V(St)=V(St)+α(GtV(St))
    • Simplest temporal-difference learning algorithm: TD(0)
      根据估计的return更新V(st), 估计return:Rt+1+γV(St+1):
      V(St)=V(St)+α(Rt+1+γV(St+1)V(St))

      其中,Rt+1+γV(St+1)TD target,
      δt=Rt+1+γV(St+1)V(St)TD error, 代表了估计前后return的差值
    • 平衡Bias/Variance是机器学习比较经典的一个问题,bias是指预测结果与真实结果的差值,variance是指训练集每次预测结果之间的差值,bias过大会导致欠拟合它衡量了模型是否准确,variance过大会导致过拟合衡量了模型是否稳定。
    • TD算法的相对缺点:因为TD target是估计值,估计是有误差的,这就会导致更新得到value是有偏差的。很难做到无偏估计。
    • TD算法的相对优点:TD target 是每一个 step 进行估计的,仅最近的动作对其有影响,而 MC 的 result 则受到整个时间片中动作的影响,因此 TD target 的方差 variance 会比较低,也就是波动性小。
    • 具体对比如下图所示:
      David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction
    • 在David Silver的课件中,有三张图,很直观地对比了MC,TD以及DP的不同:
      David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction

      David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction

      David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction

      从上面可以很清楚的看到三者的不同。DP就是理想化的情况,遍历所有。MC现实一点,TD最现实,但是TD也最不准确。但是没关系,反复迭代之下,还是可以收敛的。
    • 整个增强学习算法也都在上面的范畴里:
      David Silver《Reinforcement Learning》课程解读—— Lecture 4: Model-Free Prediction

    • 上面的图是用Policy Evaluation解决强化学习问题的一些算法的区别与相关性,最左边的竖线表示如果考虑了所有的可能发生的情况那么就是动态规划,如果只考虑了部分采样那么就是时序差分。下面的横线表示如果考虑了一次episode中全部的动作就是Monte-Carlo,如果只考虑部分动作就是时序差分。如果又考虑全部情况又考虑每一种情况的全部动作就是穷举。

4. TD(λ)

  1. 思想
    • TD(0): 在某个状态S下执行某个动作后转移到下一个状态S时,估计S的return再更新S。
    • S之后执行2次动作转移到S′′时再返回来更新S的值函数,那么就是另外一种形式,从而根据step的长度n可以扩展TD到不同形式,当step的长度达到episode的终点时就变成了MC,从而得到统一公式如下:
      Gn=Rt+1+γRt+2++γn1Rt+n+rnV(St+n)

V(St)=V(St)+α(G(n)tV(St))


    • TD(λ): 若将不同的n对应的return平均一下,就能获得更加鲁邦的结果,而为了有效地将不同return结合起来,对每个return都赋予了一个权重1λ,(1λ)lambda,,(1λ)λn,参数是lambda,这样又可以得到一组更新value function公式:
      Gλt=(1λ)n=1λn1Gnt

V(St)=V(St)+α(GλtV(St))

相关文章: