强化学习中的off-policy 和on-policy

强化学习可以分成off-policy(离线)和on-policy(在线)两种学习方法,按照个人理解,判断一个强化学习是off-policy还是on-policy的依据在于生成样本的policy(value-funciton)和网络参数更新时的policy(value-funciton)是否相同。

off-policy的经典算法有Q-learning,而on-policy的经典算法有SARSA算法,两者的算法流程如下所示。

Q-learning算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    while s is not terminal:
        choose action a from s using ε-greedy strategy;
        observe reward r and next state s';
        Q(s,a) <- Q(s,a) + α[r + γ*maxQ(s',a') - Q(s,a);
        s <- s';]

SARAS算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    choose action a from s using ε-greedy strategy;
    while s is not terminal:
        observe reward r and next state s';
        choose a' from s' using ε-greedy strategy;
        Q(s,a) <- Q(s,a) + α[r + γ*Q(s',a') - Q(s,a);
        s <- s', a <- a';]

这两个算法的流程基本一致,唯一不同在于Q函数的更新:

Q-learning在计算下一状态的预期收益时使用了max操作,直接选择最优动作,而当前policy并不一定能选择到最优动作,因此这里生成样本的policy和学习时的policy不同,为off-policy算法;

而SARAS则是基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,算法为on-policy算法。

而最近深度强化学里中使用的experience-replay机制将生成的样本与训练的样本独立开来,使用某一policy生成的样本拿来训练的时候,很可能当前policy已经和之前有所差别,因此使用experience-replay机制的DRL算法基本上是off-policy算法

你可能感兴趣的:(深度强化学习笔记,深度强化学习笔记)