Temporal Difference Lambda

Temporal Difference Lambda

  • 时间差分就是TD(0)算法,只向后采样一步;MC是向后采样整个片段;多步自举介于两者之间
    • TD:
    • MC:
  • 经验认为步左右,要好于TD(0)和MC

n步TD策略评价

  • 算法流程

    • 1:repeat(对于每一个片段)
    • 2: repeat对于片段中的每一步
    • 3: 根据选择动作
    • 4: 执行动作,观察到,并将其存储起来
    • 5: if , then
    • 6:
    • 7: if ,then
    • 8:
    • 9: end if
    • 10: until直到终止状态
    • 11:until收敛
  • 两个注意点

    • 为了计算 n 步回报值,需要维护 R, S 的存储空间
    • 对于后继状态不足 n 个的,使用 MC 目标值

多步自举

前向视角

  • 就是将TD(0),TD(1),…,TD(n)求平均
  • ,退化成TD(0);,退化成MC
  • 更新公式

后向视角–基于资格迹(Eligibility Traces)

  • 基本概念

    • 状态转移片段:s1→s1→s1→s2→s3
    • 信度分配(Credit assignment)问题:到底是s1还是s2造成了最后的s3
      • 频率启发式: 归因到频数最高的状态
      • 近因启发式: 归因到最近的状态
      • 资格迹是两者的结合
  • 资格迹的计算公式

    • 直观的感觉就是,第一次遇到这个状态s的时候,对它的记忆由0蹦到1,然后慢慢开始遗忘(对应这个动作),下一次又遇到了,记忆就一下子清晰了(对应+1这个动作),然后又慢慢遗忘。
  • 利用资格迹实现多步自举

    • 对于每一个状态s,维护一个资格迹
    • 更新值函数V(s)时,会更新每一个状态s
    • 使用TD误差和资格迹
    • 资格迹本质上是记录了所有状态s对后继状态的贡献度,被用来对TD误差进行加权

    总结

    • 前向视角
      • 利用t+1,t+2,…t+n时刻的V(s)求解t时刻的V(s)
      • 容易理解
      • 需要拥有完整的状态转移片段才能求解,跟MC一样离线更新
    • 后向视角
      • 利用t+1时刻的V(s)更新t,t-1,t-2,t-3,…0时刻的V(s)
      • 在线更新,每一个时刻都更新一遍之前所有时刻的V

n步Sarsa

Search

    欢迎添加我的微信

    闷骚的程序员

    Table of Contents