HTML5技术

程序员带你一步步分析AI如何玩FlappyBird - yhthu(3)

字号+ 作者:H5之家 来源:H5之家 2017-04-13 09:03 我要评论( )

公式中有个折合因子γ,其取值范围为[0,1],当其为0时,表示只考虑当前动作对当前的影响,不考虑对后续步骤的影响,当其为1时,表示当前动作对后续每步都有均等的影响。当然,实际情况通常是当前动作对后续得分有一

公式中有个折合因子γ,其取值范围为[0,1],当其为0时,表示只考虑当前动作对当前的影响,不考虑对后续步骤的影响,当其为1时,表示当前动作对后续每步都有均等的影响。当然,实际情况通常是当前动作对后续得分有一定的影响,但随着步数增加,其影响减小。

从公式中可以看出,状态值函数可以通过迭代的方式来求解。增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略。

策略就是如何根据环境选取动作来执行的依据。策略分为稳定的策略和不稳定的策略,稳定的策略在相同的环境下,总是会给出相同的动作,不稳定的策略则反之,这里我们主要讨论稳定的策略。

求解上述状态函数需要采用动态规划的方法,而具体到公式,不得不提:

  • 贝尔曼方程
  • 贝尔曼方程

    其中,π代表上述提到的策略,Q π (s, a)相比于V π (s),引入了动作,被称作动作值函数。对贝尔曼方程求最优解,就得到了贝尔曼最优性方程。

    状态值函数最优解

    动作值函数最优解

    求解该方程有两种方法:策略迭代和值迭代。

  • 策略迭代
  • 策略迭代分为两个步骤:策略评估和策略改进,即首先评估策略,得到状态值函数,其次,改进策略,如果新的策略比之前好,就替代老的策略。

    策略迭代

  • 值迭代
  • 从上面我们可以看到,策略迭代算法包含了一个策略估计的过程,而策略估计则需要扫描(sweep)所有的状态若干次,其中巨大的计算量直接影响了策略迭代算法的效率。而值迭代每次只扫描一次,更新过程如下:

    值迭代

    即在值迭代的第k+1次迭代时,直接将能获得的最大的Vπ(s)值赋给Vk+1。

  • Q-Learning
  • Q-Learning是根据值迭代的思路来进行学习的。该算法中,Q值更新的方法如下:

    Q值更新方法

    虽然根据值迭代计算出目标Q值,但是这里并没有直接将这个Q值(是估计值)直接赋予新的Q,而是采用渐进的方式类似梯度下降,朝目标迈近一小步,取决于α,这就能够减少估计误差造成的影响。类似随机梯度下降,最后可以收敛到最优的Q值。具体算法如下:

    Q-Learning算法

    如果没有接触过动态规划的童鞋看上述公式可能有点头大,下面通过表格来演示下Q值更新的过程,大家就明白了。

    状态 a1 a2 a3 a4

    s1 Q(1, 1) Q(1, 2) Q(1, 3) Q(1, 4)

    s2 Q(2, 1) Q(2, 2) Q(2, 3) Q(2, 4)

    s3 Q(3, 1) Q(3, 2) Q(3, 3) Q(3, 4)

    s4 Q(4, 1) Q(4, 2) Q(4, 3) Q(4, 4)

    Q-Learning算法的过程就是存储Q值的过程。上表中,横列为状态s,纵列为Action a,s和a决定了表中的Q值。

  • 第一步:初始化,将表中的Q值全部置0;
  • 第二步:根据策略及状态s,选择a执行。假定当前状态为s1,由于初始值都为0,所以任意选取a执行,假定这里选取了a2执行,得到了reward为1,并且进入了状态s3。根据Q值更新公式:
  • Q值更新公式

    来更新Q值,这里我们假设α是1,λ也等于1,也就是每一次都把目标Q值赋给Q。那么这里公式变成:

    Q值更新公式

    所以在这里,就是

    本次Q值更新

    那么对应的s3状态,最大值是0,所以

    Q值

    Q表格就变成:

    状态 a1 a2 a3 a4

    s1 0 1 0 0

    s2 0 0 0 0

    s3 0 0 0 0

    s4 0 0 0 0

    然后置位当前状态s为s3。

  • 第三步:继续循环操作,进入下一次动作,当前状态是s3,假设选择动作a3,然后得到reward为2,状态变成s1,那么我们同样进行更新:
  • Q值更新

    所以Q的表格就变成:

    状态 a1 a2 a3 a4

    s1 0 1 0 0

    s2 0 0 0 0

    s3 0 0 3 0

    s4 0 0 0 0

  • 第四步: 继续循环,Q值在试验的同时反复更新,直到收敛。
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足程序员

      net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足

      2017-04-13 11:05

    • [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反骨仔(二五仔)

      [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反

      2017-04-02 11:00

    • net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 - 失足程序员

      net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 -

      2017-04-02 10:11

    • 微服务--webapi实现,脱离iis,脱离tomcat - 失足程序员

      微服务--webapi实现,脱离iis,脱离tomcat - 失足程序员

      2017-03-30 11:00

    网友点评