前面的动态规划主要用来解决model已知的MDP问题,这里主要解决model/环境未知时的MDP预估价值函数问题,方法主要有:
MC方法:不需要知道转移矩阵或回报矩阵,在非马尔科夫环境中高效
时序差分方法:
Monte-Carlo Learning
- 直接从experience的episode中学习
- 不需要MDP的transition、rewards
- 主要思想:value = mean return,即反复测试求平均
- 不使用bootstrapping
由于每一步的reward都知道,则意味着每一步的return Gt都可以计算出来。因此,通过反复测试,这样很多状态就会被遍历到,而且不止一次,那么每次就可以把在状态下的return求取平均值。当episode无限大时,得到的数据也就接近于真实的数据。Monte-Carlo方法就是使用统计学的方法来取代Bellman方法的计算方法。
有两种访问次数的记录方式,一种是在一个episode中只记录第一次访问到的s,一种是一个episode中每次访问到s都记录下来。
First-Visit Monte-Carlo Policy Evaluation
Every-Visit Monte-Carlo Policy Evaluation
增量均值
Temporal-Difference Learning
- 直接从experience的episode中学习
- 不需要MDP的transitions、rewards
- 通过bootstrapping从不完整的episode中学习 ,通过估计的方法引导计算。
- 每一步都可以更新,这是显然,也就是online learning,学习快
- 从一个猜测更新到另一个猜测
- 可以面对没有结果的场景,应用范围广
MC和TD区别
MC: 根据真实的 reward Gt更新 V(St)
TD: 根据估计的return更新V(st), 估计return
平衡Bias/Variance是机器学习比较经典的一个问题,bias是指预测结果与真实结果的差值,variance是指训练集每次预测结果之间的差值,bias过大会导致欠拟合它衡量了模型是否准确,variance过大会导致过拟合衡量了模型是否稳定。
TD算法的相对缺点:因为TD target是估计值,估计是有误差的,这就会导致更新得到value是有偏差的。很难做到无偏估计。
TD算法的相对优点:TD target 是每一个 step 进行估计的,仅最近的动作对其有影响,而 MC 的 result 则受到整个时间片中动作的影响,因此 TD target 的方差 variance 会比较低,也就是波动性小。
MC TD和DP的比较
上面的图是用Policy Evaluation解决强化学习问题的一些算法的区别与相关性,最左边的竖线表示如果考虑了所有的可能发生的情况那么就是动态规划,如果只考虑了部分采样那么就是时序差分。下面的横线表示如果考虑了一次episode中全部的动作就是Monte-Carlo,如果只考虑部分动作就是时序差分。如果又考虑全部情况又考虑每一种情况的全部动作就是穷举
TD(λ)
思想
TD(0): 在某个状态S下执行某个动作后转移到下一个状态S′时,估计S′的return再更新S。
若S之后执行2次动作转移到S′′时再返回来更新S的值函数,那么就是另外一种形式,从而根据step的长度n可以扩展TD到不同形式,当step的长度达到episode的终点时就变成了MC,从而得到统一公式如下:
Gn=Rt+1+γRt+2+⋅⋅⋅+γn−1Rt+n+rnV(St+n)
V(St)=V(St)+α(G(n)t−V(St))
TD(λ): 若将不同的n对应的return平均一下,就能获得更加鲁邦的结果,而为了有效地将不同return结合起来,对每个return都赋予了一个权重1−λ,(1−λ)lambda,⋅⋅⋅,(1−λ)λn,参数是lambda,这样又可以得到一组更新value function公式:
Gλt=(1−λ)∑n=1∞λn−1Gnt
V(St)=V(St)+α(Gλt−V(St))