# TD(0)

用来得到 $V_{\pi}$ 的 TD(0) 算法

    1. 输入一个已知策略 π\pi
    1. 初始化学习率 α(0,1]\alpha \in (0,1]
    1. 循环每个episod,直到SS到达终止态:
    • 3.1. 初始化环境,得到状态 SS
    • 3.2. 循环这个episod的每一步:
      • 3.2.1. 根据已知策略π\pi选取要采取的动作AA
      • 3.2.2. Agent执行动作A和环境交互,观察及时奖励RR, 和环境反馈的新的状态SS'
      • 3.2.3. 更新V(S)V(S)+α[R+γV(S)V(S)]V(S) \leftarrow V(S) + \alpha [R + \gamma V(S') -V(S)]
      • 3.2.4. SSS \leftarrow S'

TD(0)算法的目的不是为了得到一个策略π\pi, 而是给定一个已知的策略π\pi,TD(0)可以得到一个策略π\pi下的状态值函数Vπ(S)V_{\pi}(S); 而这个状态值函数的意义是告诉你在当前的策略π\pi下,出现状态(某个游戏画面) SS 有多好。

具体操作的时候是这样来对应的: 这个Vπ(S)V_{\pi}(S)可以用一个神经网络来拟合得到,既然是神经网络,那么就有input data, label, NN out, loss function, 那么对应到TD(0)中是如何一一对应的呢?

  • input data: 状态SS,例如游戏画面;
  • labelR+γV(S)R + \gamma V(S');
  • NN out: V(S)V(S),状态S输入神经网络后计算得到的输出;
  • loss function: loss=[V(s)(R+γV(S))]2loss = [V(s)-(R + \gamma V(S'))]^2

其中Loss Function为什么是这样是基于下面的Bellman关系:

vπ(s)E[GtSt=s]v_{\pi}(s) \doteq \mathbb{E}[G_t|S_t = s] =E[Rt+1+γGt+1St=s]= \mathbb{E}[R_{t+1} + \gamma G_{t+1}|S_t = s] =E[Rt+1+γvπ(St+1)St=s]= \mathbb{E}[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s] =E[Rt+1St=s]+E[γvπ(St+1)St=s]= \mathbb{E}[R_{t+1}|S_t = s] + \mathbb{E}[\gamma v_{\pi}(S_{t+1})|S_t = s] =E[Rt+1St=s]+γvπ(St+1)= \mathbb{E}[R_{t+1}|S_t = s] + \gamma v_{\pi}(S_{t+1}) Rt+1+γvπ(St+1)\approx R_{t+1} + \gamma v_{\pi}(S_{t+1})

期望的运算规则

E[aX+bY+c]=aE[X]+bE[Y]+c\mathbb{E}[aX + bY + c] = a\mathbb{E}[X] + b \mathbb{E}[Y] +c
E[E[X]]=E[X]\mathbb{E}[\mathbb{E}[X]] = \mathbb{E}[X]

上次更新: 11/24/2021, 10:39:29 PM