对于大部分强化学习现实场景(例如电子游戏或者一些复杂物理环境),其马尔可夫决策过程的状态转移概率是无法写出来的,也就无法直接进行动态规划。在这种情况下,智能体只能和环境进行交互,通过采样到的数据来学习,这类学习方法统称为无模型的强化学习。
不同于动态规划算法,无模型的强化学习算法不需要事先知道环境的奖励函数和状态转移函数,而是直接使用和环境交互的过程中采样到的数据来学习。无模型强化学习算法中最经典的两大算法是 Sarsa 和 Q-learning,它们都是基于时序差分的强化学习算法。
时序差分算法
时序差分算法是用来估计一个策略的价值函数的方法,它结合了蒙特卡洛和动态规划的思想。时序算法的更新公式为:
V ( s t ) ← V ( s t ) + α [ r t + γ V ( s t + 1 ) − V ( s t ) ] V(s_t) \leftarrow V(s_t) + \alpha[r_t + \gamma V(s_{t+1}) - V(s_t)] V(st)←V(st)+α[rt+γV(st+1)−V(st)]
其中 R t + γ V ( s t + 1 ) − V ( s t ) R_t+\gamma V(s_t+1)-V(s_t) Rt+γV(st+1)−V(st) 为差分误差(TD error)。
Sarsa 算法
既然我们可以用时序差分方法来估计价值函数,那一个很自然的问题是,我们能否用类似策略迭代的方法来进行强化学习。
对于动作函数估计,我们可以使用时序差分算法来进行估计:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha[r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t)] Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)−Q(st,at)]
之后使用贪婪算法选择在某个状态下动作价值最大的那个动作,即 arg max a V