废话不多说 先上图:

可以看到与普通sarsa算法主要的不同在于多了一个矩阵 E(s,a),而至于多出来的奇怪的参数在你理解了这个矩阵的做用后就都一切显得合理了。s取遍所有状态,a取遍所有动作,这和Q-table的架构是一样的,不一样的是这个矩阵学名叫做资格迹矩阵,不理解无所谓,因为不影响理解算法的想法。用大白话说就是这个矩阵起到了本次episode(是本次,因为每个大循环E都要归0)中,记录Agent从开始到结尾到达理想位置,各个(s,a)出现的次数。是的 做用就是这个,接下来就它参与运算的事 这个东西先放一边。 得先搞清楚为啥要去记录呢。 因为就像我们现实中去完成一个任务,比如说赢一盘棋,你能获胜绝对不仅仅是完全由获胜前的一步或者几步导致的,从某种程度上说,这盘棋你从开始到结束的每一步都应该是对你获得胜利有增益的。这一点同意吧,尤其大天朝这么讲究深谋远虑韬光养晦。
我们继续,那么原来的sarsa算法:

我们可以看到 每当计算出当前Q(s,a)的估计值,即当前做出这个动作的即得利益加上到达后一状态以及以后得未来利益的和。更新Q(s,a)时,只更新了当前状态,但是既然我们前面得都说得很明白了,之前得所有步都是有贡献的,那么你的残差就应该反向传播到你之前已经实际做过的每一个(s,a)。那么要使得达到这个效果,我们就想到用一个矩阵去帮助我们记录这个事情。然后在更新的时候,遍历矩阵每一项去更新,有人就担心了,那总不能一更新,谁都沾光吧。当然不了,因为你会清楚看到矩阵E初始化是0,并且只有在状态S 进行了动作A,矩阵中E(S,A)+= 1。所以这就保证了没出现过的不会参与更新,出现过的一定跑不掉会将残差传递给它更新。
是不是已经慢慢感觉这个矩阵很可爱了,它帮助我们去按照我们的想法去更新Q-table。
继续,但仅仅是这样是不够的,你会发现每次更新完了以后,还对矩阵E的元素有一个操作(具体的说应该是对矩阵上不为0的元素有一个操作,这在数学上叫做退化,英语叫decay)
当然不了解还是没关系,依然不影响去理解这么做是为了什么。
所以为什么要这么做呢。还是回到我们下棋,虽然说,对你的获胜来讲,之前的每一步都是很关键的,但是他们的权重又是不一样的啊,也就是每一步对最终胜利的贡献是不一样的。
那么在sarsa(λ)算法框架下,我们规定,如果这些步的操作发生在离你最终获得胜利的节点近,那么从概率意义上讲它对胜利的贡献(增益)就应该越大的。所以下棋这个例子并不是好例子,实际上比如围棋在布局和中盘缠斗阶段就要比收官更关键。那我们用LOL的例子吧,当你点爆敌方水晶那一刻之前,显然是最后的团战对你胜利的主导作用大啊,虽然什么补兵 一血 大龙 这些很重要 但是最后团战还是有翻盘的 所以关于每一步对达到预期结果权重不一样,离得越近,越大 我们暂且在这个算法框架下就接受了。
所以每次更新后,已经发生过的(s,a)对于最终那个结果就远了一步,它对最后达到目标的增益就削弱一点点,再远,再削弱,再见来不及握手。具体怎么削弱的呢,那就是乘以一个λ,这个东西取值[0,1]。这样通过矩阵E的参与更新Q-table的值不但能对之前出现过的步都更新到,还会很公平,对吧。如果到这你理解了,那么λ = 0,会怎么样呢,那就相当于刚更新完E就归0了,下一次出现值为1的地方只是下一次实施的(s,a),那么就相当于每次参与更新的只是当前的(s,a),之前的残差都传播不到那里,这个时候就相当于矩阵E没有起到记录做用,那么起个名字这种更新就是单步更新。也就是把得到的收益全都归因于最近一次动作造成。(这当然不好了)
至于剩下的问题例如刚开始会在几个状态打转转啦这种,解决他们都是从E矩阵入手,因为所有信息都记录在E矩阵的,就算是秀出花来,也不过是对E矩阵的数值处理使得和我们的目标自洽罢了。相关博文也说的很清楚了,这不是我要解释的重点。只要理解了这个矩阵元素的变化和矩阵对计算的做用剩下的问题都自然就明白了。如果看算法流程还是不能理解,那你就拿一张纸左边E矩阵,右边Q-table,每一步都演算一下,也会明白。
第一次写 我喜欢把复杂的东西写的哪怕不懂数学的人都会明白,希望你们明白。谢谢。

SARASA(λ)算法物理含义解释相关推荐

  1. 奇异值分解的物理含义

    原文地址:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 此文有一半转载自他出,主要在这进行个整理,具体内容文中都有相关的转载链接 ...

  2. FPGA开发流程(详述每一环节的物理含义和实现目标)

    <div class="htmledit_views"> 需求说明:Verilog设计 内容       :FPGA开发基本流程及注意事项 来自       :时间的诗 ...

  3. 语音识别中的CTC算法的基本原理解释

    原标题:语音识别中的CTC算法的基本原理解释 目前主流的语音识别都大致分为特征提取,声学模型,语音模型几个部分.目前结合神经网络的端到端的声学模型训练方法主要CTC和基于Attention两种. 本文 ...

  4. 频率f,角频率Ω和数字频率w的物理含义

        原文链接:http://anony3721.blog.163.com/blog/static/51197420111129503233/ 古人云:基础不牢,地动山摇.勿在浮沙筑高台.此话真不假 ...

  5. 角频率Ω和数字频率w的物理含义

    角频率Ω和数字频率w的物理含义 频率f,角频率Ω和数字频率w的物理含义–附MATLAB仿真 古人云:基础不牢,地动山摇.勿在浮沙筑高台.此话真不假,比如MATLAB中下标从1开始而物理概念t从0开始, ...

  6. 阿英讲频率f,角频率Ω和数字频率w的物理含义--附MATLAB仿真

    http://anony3721.blog.163.com/blog/static/51197420111129503233/ 即以此功德,庄严佛净土.上报四重恩,下救三道苦.惟愿见闻者,悉发菩提心. ...

  7. 对数函数log的物理含义

    在平时读论文的时候,发现有很多地方都使用到了log函数,虽然这伙计我们从高中就开始认识了,但是一直没有仔细想过这家伙到底有什么真正的物理含义,去百度一下也未发现有相关的回答.所以后来就不了了之,心想可 ...

  8. sklearn的train_test_split()各函数参数含义解释(非常全)

    sklearn的train_test_split()各函数参数含义解释(非常全) sklearn的train_test_split()各函数参数含义解释(非常全) - The-Chosen-One - ...

  9. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $ ...

最新文章

  1. 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径...
  2. [jQuery原理] jQuery属性操作相关方法
  3. java 惊群效应,eureka的惊群效应
  4. python官方文档中文版-主页 - Keras 中文文档
  5. 【宠物领养系统项目】(附源码)
  6. p3输入p1输出c语言,单片机C语言编程基础
  7. 像《王者荣耀》一样红过
  8. android 蓝牙Beacon开发
  9. 猜图达人小游戏V4.1微擎小程序源码
  10. Hark的数据结构与算法练习之耐心排序
  11. 团组织关系的转接流程
  12. 中国微单相机市场深度研究分析报告
  13. 人工客服为什么总是接不通?
  14. 如何优雅的使用C语言绘制一只小猪佩奇
  15. STM32F105 实现USB BULK传输
  16. asp.net mvc 客户端加验证非空验证数据库是否存在验证
  17. 学习初步练习基于c语言的socket编程
  18. 《征服老板:零基础做出高逼格PPT》笔记(四)
  19. 游标v_cur的%notfound
  20. Windows10 安装Redis(图文教程)

热门文章

  1. 谷歌的开源Python工具包fire
  2. 创建VMware Win10虚拟机教程
  3. 教你制作一个简单的进销存管理软件,值得收藏!
  4. 1.网页源码中找到我们需要获取
  5. Ansible基础和常用模块(一)
  6. powershell 压缩和解压zip
  7. 项目施工阶段的BIM主流应用,主要集中在哪些环节?
  8. [WIP] Keystone Federation (by quqi99)
  9. 用C语言求1到10 阶乘的和
  10. 大数据治理平台建设方案