[update 20200712]
OpenAI的网站是很好的reference:spinningup
Plan
- 看完李宏毅RL视频
- 开始one by one implementation,based on openai tips
- At the mean time, master pytorch/tf and deep learning basics.
- When have time, keep an eye on the research frontier
强化学习概览
This overview is largely based on this article: https://medium.com/@SmartLabAI/reinforcement-learning-algorithms-an-intuitive-overview-904e2dff5bbc.
On-Policy vs Off-Policy
[update 0710] 看过李宏毅DRL视频后意识到,基于TD的Q-learning中的replay buffer跟on-off policy的关系主要是分布意义的。因为buffer里面的tuple并不是trajectory而是experience,跟当前在train哪个policy无关。但是整个buffer中tuple的分布,与使用当前policy去collect data得到的数据分布是不一样的,再加上从replay buffer sample的时候一般是uniformly,所以replay buffer如果非要去对应的话,对应的是off policy。针对MC的trajectory,如果用pi产生的traj去train pi',那么就更加是off policy的范畴。
[source:https://www.quora.com/Why-is-Q-Learning-deemed-to-be-off-policy-learning]
主要判断,在更新Q时,Q所评估的policy跟目前与环境互动的policy是否是同一个。在Sarsa中是的,在Q-learning中,Q的update本质是在评估而非当前.涉及到的Q(s',a')中的a'是否由当前actor根据s'得出,抑或是一种approximation like the max function in q-learning. 在使用replay-buffer的情况下,或者a'由target actor生成的情况下,称为off-policy。否则是on-policy。这是我个人浏览了很多信息后,目前的理解。[update 0413]见下图,目前有了新的理解:remember Qfunction是基于TD的,前后action是有顺序关系的。换句话说,train Q的时候,需要知道,是Q(?)跟当前的Q差了一个r。这时,如果此处的?与当前policy应当输出的action相符,说明我们想要把Q 按照当前policy去train,所以是on policy。否则的话,如Sarsa,当前policy给出的是epsilon-greedy choice但是train Q的时候假定下一步是totally greedy的,所以Q与当前policy不符合,所以是off。
涉及到replay buf时候