强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结
目錄
- 基本概念:
- Q-learning VS Sarsa:
- DQN VS PPO:
- 區分on-policy 與 off-policy
- 一些總結:
基本概念:
- 如果要學習的 agent 跟和環境互動的 agent 是同一個的話, 這個叫做on-policy(同策略)。
- 如果要學習的 agent 跟和環境互動的 agent 不是同一個的話, 那這個叫做off-policy(異策略)。
有趣的解釋:古時候,優秀的皇帝都秉持著“水能載舟 亦能覆舟”的思想,希望能多了解民間百姓的生活。皇帝可以選擇通過微服出巡,親自下凡了解百姓生活(On-policy),雖然眼見為實,但畢竟皇帝本人分身乏術,掌握情況不全;因此也可以派多個官員去了解情況,而皇帝本人則躺在酒池肉林里收聽百官情報即可(Off-policy)。
Q-learning VS Sarsa:
Q-learning vs. Sarsa
二者都是基于TD的強化學習策略,但是前者是off-policy(有目標網絡和行為網絡),后者是on-policy。
DQN VS PPO:
on-policy與off-policy區別:更新值函數時是否只使用當前策略所產生的樣本.
區分on-policy 與 off-policy
以下是個人總結,不一定正確,如有錯誤還請各位大佬指出:
- 法一:目標策略 target policy 和 行為策略 behavior policy是否是同一個策略
- 法二:更新值函數時是否只使用當前策略所產生的樣本. (新價值所使用的方法是沿著既定的策略(on-policy)抑或是新策略(off-policy))
個人感覺從 behavior policy 與 target policy 角度解釋不夠準確(探索環境/交互的策略和學習/更新的策略是否為同一個),因為DQN就不能這樣看呀!(target_policy固定不變,policy交互、更新參數,之后再同步參數)。
??發現了一個從代碼層面分辨的小技巧 -> 對于用到了memory存儲數據的算法,觀察memory存的數據是怎么變的:
1?? 對于off-policy策略,memory會一直存數據,如果滿了就替換前面的。因此每次更新的時候,可能會用到其他策略采樣到的數據。
2?? 對于on-policy策略,更新一次參數后memory會被清空。
但是!!!Q-learning和Sarsa不能這樣分辨,二者都是單步更新沒有用到memory。
Q-learning是傳入(state, action, reward, next_state, done)更新,Sarsa是傳入(state, action, reward, next_state, next_action,done)進行更新。
為什么前者是off-policy而后者是on-policy呢?
- 在Sarsa中更新Q函數時用的action就是貪婪策略得出來的,下一回合也用的是這個action去進行step。兩個action一定相同就是(同策略)on-policy。
- 但是在Q_learning中,更新時的action是Q_max得到的,而下一回合的Action是用貪婪策略(在更新后的Qmax基礎上有探索)得到的,這時的action和Action就有可能不一樣,就是(異策略)off-policy。
一些總結:
單步更新:DDPG,DQN,Q-learning,Sarsa,PPO,TD3,Actor-Critic
玩完一輪再更新:MC,PG
Actor-Critic結構:DDPG(雙份),PPO,TD3(雙份)
policy_net+target_net:DQN
Q_table:MC,Q-learning,Sarsa
MLP:PG
off-policy:DDPG,DQN,Q-learning,TD3
on-policy:PG,PPO(更新一次后memory被clear了),Sarsa,MC,A2C,A3C
A2C 和 A3C 都是 on-policy(同策略)
總結
以上是生活随笔為你收集整理的强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: net use \\192.168.54
- 下一篇: cls