• 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)

  • 相关阅读:
    30道四则运算
    《梦断代码》第0章读书随笔
    《梦断代码》阅读计划
    [记录] Mybatis原理
    GitLab登录密码重置后无法使用idea拉取代码提交代码问题解决
    写邮件和回复邮件
    XMLDocument 方法中实现post发送消息
    愿我温柔如水,坚强如钢!
    第6届蓝桥杯javaA组第7题,牌型种数,一道简单的题带来的思考
    IE兼容性问题解决方案2--css样式兼容标签
  • 原文地址:https://www.cnblogs.com/suancai/p/15418293.html
Copyright © 2020-2023  润新知