理解蒙特卡洛方法和时序差分学习


学习机器学习时常常会用到蒙特卡洛方法和时序差分学习,所以对它们有一个直观的理解还是很重要的。本文通过举一个实际的例子来帮助理解。

假如要训练一个预估开车从成都到北京需要耗时多久的模型(Model),那么如何训练呢?

1. 蒙特卡洛方法(Monte Carlo method)

最直观的方法,既然要预估开车从成都到北京需要耗时多久,那么可以直接记录开车从成都到北京所需要的时间。然后重复很多次,比如100次,把每次的耗时都给模型学习(至于模型具体怎么学习,又需要另外的算法了,比如:梯度下降),这样模型就能预估出一个比较准确的时间了。

上面这种方法其实就是蒙特卡洛方法。这种算法的特点如下:

优点:

  • 简单直接:要预估开车从成都到北京需要耗时多久,那直接做很多次,并记录经验,然后就能比较准确的训练了。

缺点:

  • 收集数据麻烦:直接尝试还是很麻烦的,代价太高。如果要训练一个预测手术成功率的模型,总不能拿人去试吧。
  • 需要等到完整的一次过程后才能开始训练:开车到一半时是不能训练模型的,必须要到了目的地才能训练。如果路上车出了故障,那么之前开的路都白费了,代价也太高了。

第一个缺点不好解决,但是第二个缺点还是有办法改善的,那就是使用时序差分学习

2. 时序差分学习(Temporal Difference Learning)

时序差分学习的概念不是那么容易解释,但是可以通过更实际的例子来理解:

开始时模型预估开车从成都到北京需要花100个小时。

实际开车从成都出发,实际花费了30个小时到西安,此时模型预估到北京还是60个小时。

所以模型在开始时更准确的预估应该是:

30小时(成都到西安的实际时间)+ 60小时(新的预估时间)= 90小时

在时序差分学习中,这个更准确的估计就叫做 TD target 。有了这个更准确预估后,就知道开始时的预估时间是多了还是少了,从而就能更新模型的参数让模型的预估越来越准确。这样就能够做到不做完整件事就开始训练模型了。

而最初的预估时间和 TD target 的差值就是 TD error

TD error = 100小时(开始时的预估耗时) - 90小时(TD error) = 10小时

时序差分学习的目标就是让 TD error 的值接近0。


参考:Value-Based Reinforcement Learning


文章作者: Kiba Amor
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 Kiba Amor !
  目录