日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结

發(fā)布時間:2023/12/16 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 基本概念:
  • Q-learning VS Sarsa:
  • DQN VS PPO:
  • 區(qū)分on-policy 與 off-policy
  • 一些總結(jié):

基本概念:

  • 如果要學(xué)習(xí)的 agent和環(huán)境互動的 agent同一個的話, 這個叫做on-policy(同策略)。
  • 如果要學(xué)習(xí)的 agent 跟和環(huán)境互動的 agent 不是同一個的話, 那這個叫做off-policy(異策略)。

有趣的解釋:古時候,優(yōu)秀的皇帝都秉持著“水能載舟 亦能覆舟”的思想,希望能多了解民間百姓的生活。皇帝可以選擇通過微服出巡,親自下凡了解百姓生活(On-policy),雖然眼見為實,但畢竟皇帝本人分身乏術(shù),掌握情況不全;因此也可以派多個官員去了解情況,而皇帝本人則躺在酒池肉林里收聽百官情報即可(Off-policy)。

Q-learning VS Sarsa:

Q-learning vs. Sarsa
二者都是基于TD的強化學(xué)習(xí)策略,但是前者是off-policy(有目標網(wǎng)絡(luò)和行為網(wǎng)絡(luò)),后者是on-policy。

  • 他們的更新方式(貝爾曼方程)是一樣的,區(qū)別在target計算方式,Q-learning是選擇最優(yōu)action,Sarsa是實際action。因此更新的時候輸入是不一樣的(有無下一時刻的action)。
  • Q-learning計算下一狀態(tài)的預(yù)期收益時使用了max操作,直接選擇最優(yōu)動作,而當(dāng)前policy并不一定能選擇到最優(yōu)動作,因此這里生成樣本的policy和學(xué)習(xí)時的policy不同,為off-policy算法。
  • SARAS算法,基于當(dāng)前的policy直接執(zhí)行一次動作選擇,然后用這個樣本更新當(dāng)前的policy,因此生成樣本的policy和學(xué)習(xí)時的policy相同,算法為on-policy算法。
  • Q-learning更莽撞,Sarsa更膽小。
  • DQN VS PPO:

    on-policy與off-policy區(qū)別:更新值函數(shù)時是否只使用當(dāng)前策略所產(chǎn)生的樣本.

  • DQN有兩個網(wǎng)絡(luò),policy_net 和 target_net。因為有兩個agent,一個表示當(dāng)前policy,一個表示目標policy。replay buffer中存儲的是很多歷史樣本,更新Q函數(shù)時的target用的樣本是從這些樣本中采樣而來,因此更新時使用的可能是歷史樣本,所以是off-policy。(memory不會定時清理,只有達到容量上限時,會除掉開始的數(shù)據(jù))
  • PPO也有兩個網(wǎng)絡(luò),actor 和 critic。因為學(xué)習(xí)的 agent 跟和環(huán)境互動的 agent是同一個。并且用于更新的樣本是當(dāng)前策略產(chǎn)生的樣本,因此是on-policy。也有memory,不過更新一次就會clear。
  • 區(qū)分on-policy 與 off-policy

    以下是個人總結(jié),不一定正確,如有錯誤還請各位大佬指出:

    • 法一:目標策略 target policy 和 行為策略 behavior policy是否是同一個策略
    • 法二:更新值函數(shù)時是否只使用當(dāng)前策略所產(chǎn)生的樣本. (新價值所使用的方法是沿著既定的策略(on-policy)抑或是新策略(off-policy))
      個人感覺從 behavior policy 與 target policy 角度解釋不夠準確(探索環(huán)境/交互的策略和學(xué)習(xí)/更新的策略是否為同一個),因為DQN就不能這樣看呀!(target_policy固定不變,policy交互、更新參數(shù),之后再同步參數(shù))。

    ??發(fā)現(xiàn)了一個從代碼層面分辨的小技巧 -> 對于用到了memory存儲數(shù)據(jù)的算法,觀察memory存的數(shù)據(jù)是怎么變的:
    1?? 對于off-policy策略,memory會一直存數(shù)據(jù),如果滿了就替換前面的。因此每次更新的時候,可能會用到其他策略采樣到的數(shù)據(jù)。
    2?? 對于on-policy策略,更新一次參數(shù)后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函數(shù)時用的action就是貪婪策略得出來的,下一回合也用的是這個action去進行step。兩個action一定相同就是(同策略)on-policy。
    • 但是在Q_learning中,更新時的action是Q_max得到的,而下一回合的Action是用貪婪策略(在更新后的Qmax基礎(chǔ)上有探索)得到的,這時的action和Action就有可能不一樣,就是(異策略)off-policy。

    一些總結(jié):

  • 更新策略
    單步更新:DDPG,DQN,Q-learning,Sarsa,PPO,TD3,Actor-Critic
    玩完一輪再更新:MC,PG
  • policy結(jié)構(gòu)
    Actor-Critic結(jié)構(gòu):DDPG(雙份),PPO,TD3(雙份)
    policy_net+target_net:DQN
    Q_table:MC,Q-learning,Sarsa
    MLP:PG
  • 用到了ReplayBuffer:DDPG,DQN,Actor-Critic
  • 同策略or異策略
    off-policy:DDPG,DQN,Q-learning,TD3
    on-policy:PG,PPO(更新一次后memory被clear了),Sarsa,MC,A2C,A3C
    A2C 和 A3C 都是 on-policy(同策略)
  • 總結(jié)

    以上是生活随笔為你收集整理的强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。