【上一节5 蒙特卡洛方法(Monte Carlo Method)】
【下一节7 Multi-step Bootstrapping】
Temporal-difference (TD) Learning 可以说是增强学习的中心,它集成了蒙特卡洛思想和动态编程(Dynamic Programming, DP)思想,像蒙特卡洛方法一样,TD 方法不需要环境的动态模型,直接从经验经历中学习,像 DP 方法一样,TD 方法不需要等到最终的 outcome 才更新模型,它可以基于其他估计值来更新估计值。
1 TD Prediction
TD 和 蒙特卡洛方法都使用经验来解决预测问题,给定服从规则 π \pi π 的一些经历,两种方法均可更新经历中的每一个非终止的状态 S t S_t St 的 v π v_{\pi} vπ。粗略的说, Monte Carlo 方法要等到 return 知道之后才将其设为是 V ( S t ) V(S_t) V(St) 的目标值,一个适合非固定环境的简单的 every-visit Monte Carlo 方法为:
V ( S t ) ⇐ V ( S t ) + α [ G t − V ( S t ) ] V(S_t)\Leftarrow V(S_t)+\alpha [G_t- V(S_t)] V(St)⇐V(St)+α[Gt−V(St)]
其中 G t G_t Gt 代表得是时间 t t t 之后的真实 return, α \alpha α 是固定的 step-size 参数,可以将这种方法称为是 constant- α \alpha α MC,Monte Carlo 方法必须等到 episode 结束之后才能决定 V ( S t ) V(S_t) V(St) 的增量,与 Monte Carlo 方法不同的是 TD 方法只需等到下一个 time step 即可,即在时刻 t + 1 t+1 t+1,TD 方法立刻形成一个 target 并使用观测到的 reward R t + 1 R_{t+1} Rt+1 和估计的 V ( S t + 1 ) V(S_{t+1}) V(St+1) 进行更新,最简单的 TD 方法称为是 T D ( 0 ) TD(0) TD(0),其更新方法为:
V ( S t ) ⇐ V ( S t ) + α [ R t + 1 + γ V ( S t + 1 ) − V ( S t ) ] V(S_t)\Leftarrow V(S_t)+\alpha[R_{t+1}+\gamma V(S_{t+1})- V(S_t)] V(St)⇐V(St)+α[Rt+1+γV(St+1)−V(St)]
比较上面的式子可以看出,TD 方法与Monte Carlo 方法一样,都是基于已有的估计进行更新,因此 TD 方法也是一种 bootstrapping 方法,只不过Monte Carlo 更新的目标值为 G t G_t Gt,而 TD 更新的目标值为 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1),他们俩的关系其实可以从下面的式子来更好的理解:
v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] = E π [ R t + 1 + γ ∑ k = 0 ∞ γ k R t + k + 2 ∣ S t = s ] = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] \begin{aligned} v_{\pi}(s) &\doteq {\Bbb E}_{\pi} [G_t|S_t=s] \\ &= {\Bbb E}_{\pi} [\sum_{k=0}^{\infty}\gamma^k R_{t+k+1}|S_t=s] \\ &= {\Bbb E}_{\pi} [R_{t+1}+\gamma\sum_{k=0}^{\infty}\gamma^k R_{t+k+2}|S_t=s] \\ &= {\Bbb E}_{\pi} [R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_t=s] \end{aligned} vπ(s)≐Eπ[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣St=s]=Eπ[Rt+1+γk=0∑∞γk