理想情况下,强化学习应该直奔最优策略而去–确定性的“状态-最优行为选择”。我们称之为target policy。
这是on-policy的目标,但在实施时,会遭遇探索-利用的矛盾:光利用目前已知的最优选择,可能学不到最优解,收敛到局部最优;而加入探索又降低了学习效率。 ε \varepsilon ε-greedy 算法是这种矛盾下的折衷。
为避免on-policy的问题,off-policy索性把问题一分为二,采取了从行为策略来学习目标策略的办法,两者可以互不干扰。
具体来说:
先产生某概率分布下的大量行为数据(behavior policy),意在探索。从这些偏离(off)最优策略的数据中寻求target policy。当然这么做是需要满足数学条件的:假設
π
\pi
π是目标策略,
μ
\mu
μ是行为策略,那么从
μ
\mu
μ学到
π
\pi
π的条件是:π(a|s) > 0 必然有 µ(a|s) > 0成立。
两种学习策略的关系是:on-policy是off-policy 的特殊情形,其target policy 和behavior policy是一个。on-policy优点是直接了当,速度快,劣势是不一定找到最优策略。off-policy劣势是曲折,收敛慢,但优势是更为强大和通用。其强大是因为它确保了数据全面性,所有行为都能覆盖。甚至其数据来源可以多样,自行产生、或者外来数据均可。
On-policy methods attempt to evaluate or improve the policy that is used to make decisions, whereas off-policy methods evaluate or improve a policy different from that used to generate data.
on-policy 和 off-policy 的两种典型算法:SARSA 和 Q-learning
由上面的pseudocode可知,两者的区别主要在于更新
Q
(
s
,
a
)
Q(s, a)
Q(s,a)时,
s
′
{s}'
s′的选择是max还是原先的策略(这里是
ε
−
g
r
e
e
d
y
\varepsilon-greedy
ε−greedy)。看到这里是否感觉似曾相识,没错,这两者的对比不就是policy evaluation 和 value iteration的对比吗?
由pseudocode可知,policy evaluation只是在用DP更新
V
(
s
)
V(s)
V(s),期间并没有改变current policy,更新迭代的数据一直是current policy产生的,经过一定的迭代次数
V
(
s
)
V(s)
V(s)会收敛。而value iteration是policy evaluation+policy improvement,但是每一步都用max去选择最大的更新
V
(
s
)
V(s)
V(s),因此后者的计算开销要远小于前者,收敛速度也更快。
In short,on-policy属于policy evaluation 其寻找最优策略的过程基于所给的behavior policy(current policy),或者说其evaluation的是current π;而off-policy属于value iteration其寻找最优策略的过程更新的策略有别于生成数据的策略(如贪心策略)。
Reference:
https://www.zhihu.com/question/56561878/answer/149892732
https://blog.csdn.net/yangshaokangrushi/article/details/79774031