估计价值的方法MC与TD
MC(Monte-Carlo)的方法,在Sutton的书中有比较权威并详细的说明。地址:https://rl.qiwihui.com/zh_CN/latest/index.html
下图是首次访问型的MC方法,估计状态的价值V。在初始化后,先根据策略获取一个完整的序列,然后从底向上,逆向计算得到状态的价值。
当前的状态价值,是与当前和可能产生的以后的完整序列价值有关的,所以有逆向计算的过程。与当前状态距离越远的地方越不容易到达,所以添加折扣因子,将其价值的累加进行折扣。多次进行,求得平均。
估计其他如策略估计,也是类似的过程。每次访问型MC方法,没有Unless部分。Unless部分的意思是,在本次生成的该序列中,每个状态都应该只出现一次。
时序差分的方法TD(Temporal-difference),仍然以Sutton的说明,清楚一点。
初始化后,在每一步,都进行叠加,其中公式里的中括号部分,表示了TD误差,优化的目标,就是使得V(s)最终等于R+yV(s')。
TD和MC的关系是,TD是MC的一种特殊的修改。
在每次访问型的MC中,其优化目标为G。G是马尔科夫链中,状态s下,所有后续状态的真实回报r的折扣累加和。
在TD算法中,该G变为了马尔科夫链中,状态s下,r与后续一步的价值折扣累加和。该算法认为是TD(0)。当考虑后续的lambda步时,认为有TD(lanbda),作为优化目标。
相对于MC算法,TD算法对未来的数据上,产生更小的误差。MC算法是根据定义得到的,更准确。(Sutton125页)。
如下图中,多次执行后,0为MC计算得到的状态a的价值,3/4为TD计算得到的价值。
因为MC算法考虑的是本次序列中的效果(状态b的真实影响),即G的值,所以多次执行以后,平均得到状态a的价值的来源是,第一行的序列的真实回报。
而TD算法考虑的是价值,在第一行的序列中,状态a的价值计算,考虑了所有序列中的状态b的效果,即状态b的价值。而不是真实回报。
不介绍的V与Q
我认为V与Q是两种不同的度量方式,前者代表的是状态的价值。后者是,该状态下选择行为,a的价值。
先产生了V状态价值,根据状态价值,得到关于a的价值,用以选择行为a,不是直接相等的关系。
所以,这部分不说明。
常见的DQN改进算法
Double DQN,未考证,但是大致是,使用Q',更新Q,在一段时间后,Q'=Q。降低过估计。
Dueling DQN,未考证,大致是,将Q拆分为V和A。
在实际使用中,让A的总和为0,当更新V后,则Q表中的所有值,都发生变化。
Prioritized Replay DQN,优先使用TD-error大的记忆片段。
而 Multi-step,Noisy Net,Distribution Q,不再说了,也不清楚。
最终将多种算法结合,得到Rainbow算法。
Double DQN的作用是降低过估计,而其他算法中有降低过估计的作用了(具体仍待查看,)