Q学习时序差分学习方法
定义
$Q$学习($Q-Learning$)算法是一种异策略的时序差分学习算法。在$Q$学习中,$Q$函数的估计方法为:
\[Q(s, a) \leftarrow Q(s, a)+\alpha\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right)\]相当于让$Q(s,a)$直接去估计最优状态值函数$Q^{*}(s,a)$。
与$SARSA$异同
$SARSA$的迭代公式如下:
\[\hat{Q}^{\pi}(s, a) \leftarrow \hat{Q}^{\pi}(s, a)+\alpha\left(r\left(s, a, s^{\prime}\right)+\gamma \hat{Q}^{\pi}\left(s^{\prime}, a^{\prime}\right)-\hat{Q}^{\pi}(s, a)\right)\]而$Q$学习算法如下:
\[Q(s, a) \leftarrow Q(s, a)+\alpha\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right)\]不管是在$SARSA$算法中,还是在$Q$学习算法中,环境对于当前状态$s$下做出动作$a$的反馈$r$和$s^{\prime}$是不变的。
下一动作的选择
$SARSA$算法与$Q$学习算法对于下一动作$a^{\prime}$的选择都基于原策略。
状态动作值函数的更新
在$SARSA$算法中,我们使用了同策略下下一状态动作值函数(采样策略)对当前状态动作值函数(目标策略)进行了更新,可知采样策略与更新策略都是策略$\pi$,所以该算法为同策略的学习算法。
而在$Q$学习算法中,我们可以定义当前策略为$\pi$,基于当前值函数可计算出的最佳策略为$\pi^{*}$,在该学习算法中,每一步对于状态动作值函数$Q(s,a)$的更新,都是基于最佳的策略(注意,实际的动作选取并未基于最佳策略,只是在值函数的更新上基于了该最优策略),而每一个回合使用的采样策略都是策略$\pi$,对该策略$\pi$的更新要到整个算法都结束后才会进行,即
\[\pi(s)=\arg \max _{a \in|\mathcal{A}|} Q(s, a)\]通用$Q$学习算法框架:一个示例
一个通用的$Q$学习算法如下所示:
该算法的大致逻辑如下:
- 运行完一个回合即一个内循环。
- 运行直到$Q$函数收敛即为一个外循环。
- 运行期间动态更新$Q$函数。
- 在算法结束时更新策略$\pi$。
$Q$学习算法是一种异策略的时序差分学习算法。