zoukankan      html  css  js  c++  java
  • Sarsa与Q-learning

    算法流程图

    • Q-learning
    • SARSA
    • 对比:Q-learning算法根据当前状态 S 选择执行一个动作A,执行后观测执行后的奖励和转移到的状态S1。在状态S1下计算采取哪个a可以获得最大的Q值,并没有真的采取这个a。Q-learning选择到新状态之后能够得到的最大的Q值来更新当前的Q值。
      而Sarsa是转移到动作S1时,真的采取了动作A1。然后根据Q(S1,A1)来更新Q值。
    • Q值更新对比:
      Sarsa:动作a的选取遵循e-greedy策略,目标Q值的计算也是根据(e-greedy)策略得到的动作a'计算得来
      Q-learning:动作a的选取遵循e-greedy策略,目标Q值的计算也是根据(e-greedy)策略得到的动作a'计算得来

    代码实现:

    SARSA:

    代码需要的参数有:状态,选择的动作,带来的奖励,下一个状态,下一个动作。
    代码步骤:

    1. 检测下一个状态是否存在于Q表中,如果不在的话就插入一个以下一个状态为索引的Series。

    2. 算出Q表中的当前状态和当前动作的Q值q_predict

    3. 如果当前状态是结束状态,q_target等于执行动作后的奖励+γ*下一个状态和下一个动作的Q值。

    4. 否则q值等于奖励

    5. 更新Q表,q值=当前Q值+学习率lr*(q_target-q_predict)
      理解:根据当前状态和选择的动作找到现在的Q表。根据下一个状态和下一个动作找到Q值1.用Q值1和当前Q值来更新目前Q值。
      Q-learning:

      代码需要的参数有:状态,选择的动作,带来的奖励,下一个状态。
      代码步骤:

    6. 检测下一个状态是否存在于Q表中,如果不在的话就插入一个以下一个状态为索引的Series。

    7. 算出Q表中的当前状态和当前动作的Q值q_predict

    8. 如果当前状态是结束状态,q_target等于执行动作后的奖励+γ*下一个状态中最大的Q值。

    9. 否则Q值等于奖励

    10. 更新Q表,q值=当前Q值+学习率lr*(q_target-q_predict)

  • 相关阅读:
    Extjs4.x Ext.tree.Panel基本树控件的使用案例、源码
    Extjs4 autoload和iframe的取舍
    Extjs4 文件目录结构
    IIS7.5 配置MVC3.0 伪静态,不能访问html伪静态页面
    DB2存储过程模版
    C#后台调用跨域MVC服务,带Cookie验证
    基于SenchaTouch项目案例
    EF Code First DataAnnotations
    找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)”。
    Babylon 3D engine (Silverlight)
  • 原文地址:https://www.cnblogs.com/suancai/p/15418293.html
Copyright © 2011-2022 走看看