value_eval

值函数估计

​ 在前面我们进行了 MDP 的理论推导,可以发现 value-based 算法的核心在于值函数的估计,状态值函数 Vπ(s)V^\pi(s) 的定义为:

Vπ(s)=Eπ[k=0γkrt+k+1st=s]V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k r_{t+k+1} \bigg| s_t = s \right]

一般而言有两种方法来估计这个式子:

蒙特卡洛方法与TD方法对比

蒙特卡洛(MC)方法

​ 蒙特卡洛方法(Monte-Carlomethods)是一类广泛的计算算法,下面将最朴素估计方式变为增量更新方式:

VNπ(s)=Eπ[k=0γkrt+k+1st=s]1Ni=1Ngt(i)=1N(i=1N1gt(i)+gi(n))=N1NVN1π(s)+1Ngi(n)simplify(1α)VN1π(s)+αgi(n)\begin{aligned} V^\pi_N(s) &= \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k r_{t+k+1} \bigg| s_t = s \right] \approx \frac{1}{N} \sum_{i=1}^N g_t^{(i)} \\ &= \frac{1}{N} \left(\sum_{i=1}^{N-1} g_t^{(i)} + g_i^{(n)}\right) \\ &= \frac{N-1}{N} V^\pi_{N-1}(s) + \frac{1}{N}g_i^{(n)} \\ &\overset{simplify}{\approx} (1 - \alpha) V^\pi_{N-1}(s) + \alpha g_i^{(n)} \end{aligned}

即更新方式为:

V(s)V(s)+α[giV(s)]V(s) \leftarrow V(s) + \alpha [g_i - V(s)]

  • 对于非稳定的问题(环境随时间改变)这种更新方式可以随时间快速动态改变

  • 缺点在于计算 GtG_t 的复杂度很高(计算瓶颈),而且需要完整轨迹后才能更新

  • 由于 GtG_t 的轨迹很长,导致的问题是方差 variance 很差

策略改变带来的重要性采样

​ 使用策略 μ\mu 产生的累计奖励数据($ [s_1, a_1, r_1, s_2, a_2, r_2, …, s_T] \sim \mu $)来评估策略 π\pi,则更具重要性采样原理,在更新策略 π\pi 的时候需要根据 π\piμ\mu 之间的重要性比率(importance ratio)对累计奖励 gtg_t 加权。

每个片段乘以重要性比率:

gtπ/μ=π(atst)μ(atst)π(at+1st+1)μ(at+1st+1)...π(aTsT)μ(aTsT)gt g_{t}^{\pi/\mu} = \frac{\pi(a_t|s_t)}{\mu(a_t|s_t)} \frac{\pi(a_{t+1}|s_{t+1})}{\mu(a_{t+1}|s_{t+1})} ... \frac{\pi(a_T|s_T)}{\mu(a_T|s_T)} g_t

更新方式变为:

V(s)V(s)+α[giV(s)]V(s) \leftarrow V(s) + \alpha [g_i - V(s)]

​ 存在的问题是:

  • 无法在 π\pi 非零而 μ\mu 为零时使用
  • 重要性采样将显著增大方差(variance)

为了解决 variance 过大的问题,可以通过牺牲一部分的 bias 来换取小 variance

时序差分(TD)方法

​ 时序差分(Temporal Difference Learning)方法,结合MC的采样思想和动态规划的自(Bootstrapping)。使用价值函数进行更新,因此是天然的 model-free RL

TD(0)TD(0) 更新公式:

V(st)V(st)+α[rt+1+γV(st+1)V(st)]V(s_t) \leftarrow V(s_t) + \alpha [ r_{t+1} + \gamma V(s_{t+1}) - V(s_t) ]

结合重要性采样的方法,TD(0)TD(0) 修正为:

V(st)V(st)+α(π(atst)μ(atst)(rt+1+γV(st+1))V(st))V(s_t) \leftarrow V(s_t) + \alpha \left(\frac{\pi(a_t|s_t)}{\mu(a_t|s_t)} \left( r_{t+1} + \gamma V(s_{t+1}) \right) - V(s_t) \right)

偏差(Bias)/方差(Variance)的权衡

  • 累计奖励 gt=rt+γrt+1++γTtrTg_t = r_t + \gamma r_{t+1} + \cdots + \gamma^{T-t} r_T 是 $ V^\pi(s_t) $ 的无偏估计(无 bias)

  • 时序差分真实目标 $ r_t + \gamma V^\pi(s_{t+1}) $ 是 $ V^\pi(s_t) $ 的无偏估计

  • 时序差分目标 $ r_t + \gamma V(s_{t+1}) $ 是 $ V^\pi(s_t) $ 的有偏估计(有 bias)

  • 时序差分目标具有比累计奖励更低的方差(使用 bias 换取 variance)

    • 累计奖励——取决于多步随机动作,多步状态转移和多步奖励
    • 时序差分目标——取决于单步随机动作,单步状态转移和单步奖励
算法 更新公式 特点
TD(0)TD(0) V(st)V(st)+αδtV(s_t) \leftarrow V(s_t) + \alpha \delta_t 单步回溯
TD(λ)TD(\lambda) 引入资格迹进行多步混合更新 平衡偏差-方差
Q-Learning 扩展到动作值函数估计 处理控制问题