定义
Q学习(Q−Learning)算法是一种异策略的时序差分学习算法。在Q学习中,Q函数的估计方法为:
Q(s,a)←Q(s,a)+α(r+γa′maxQ(s′,a′)−Q(s,a))
相当于让Q(s,a)直接去估计最优状态值函数Q∗(s,a)。
与SARSA异同
SARSA的迭代公式如下:
Q^π(s,a)←Q^π(s,a)+α(r(s,a,s′)+γQ^π(s′,a′)−Q^π(s,a))
而Q学习算法如下:
Q(s,a)←Q(s,a)+α(r+γa′maxQ(s′,a′)−Q(s,a))
不管是在SARSA算法中,还是在Q学习算法中,环境对于当前状态s下做出动作a的反馈r和s′是不变的。
下一动作的选择
SARSA算法与Q学习算法对于下一动作a′的选择都基于原策略。
状态动作值函数的更新
在SARSA算法中,我们使用了同策略下下一状态动作值函数(采样策略)对当前状态动作值函数(目标策略)进行了更新,可知采样策略与更新策略都是策略π,所以该算法为同策略的学习算法。
而在Q学习算法中,我们可以定义当前策略为π,基于当前值函数可计算出的最佳策略为π∗,在该学习算法中,每一步对于状态动作值函数Q(s,a)的更新,都是基于最佳的策略(注意,实际的动作选取并未基于最佳策略,只是在值函数的更新上基于了该最优策略),而每一个回合使用的采样策略都是策略π,对该策略π的更新要到整个算法都结束后才会进行,即
π(s)=arga∈∣A∣maxQ(s,a)
通用Q学习算法框架:一个示例
一个通用的Q学习算法如下所示:

该算法的大致逻辑如下:
- 运行完一个回合即一个内循环。
- 运行直到Q函数收敛即为一个外循环。
- 运行期间动态更新Q函数。
- 在算法结束时更新策略π。
Q学习算法是一种异策略的时序差分学习算法。