精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談Q-Learning和SARSA時序差分算法

454398 ? 來源:博客園 ? 作者: 劉建平Pinard ? 2020-11-04 14:05 ? 次閱讀

Q-Learning這一篇對應Sutton書的第六章部分和UCL強化學習課程的第五講部分。

1. Q-Learning算法的引入

Q-Learning算法是一種使用時序差分求解強化學習控制問題的方法,回顧下此時我們的控制問題可以表示為:給定強化學習的5個要素:狀態集SS, 動作集AA, 即時獎勵RR,衰減因子γγ, 探索率??, 求解最優的動作價值函數q?q?和最優策略π?π?。

這一類強化學習的問題求解不需要環境的狀態轉化模型,是不基于模型的強化學習問題求解方法。對于它的控制問題求解,和蒙特卡羅法類似,都是價值迭代,即通過價值函數的更新,來更新策略,通過策略來產生新的狀態和即時獎勵,進而更新價值函數。一直進行下去,直到價值函數和策略都收斂。

再回顧下時序差分法的控制問題,可以分為兩類,一類是在線控制,即一直使用一個策略來更新價值函數和選擇新的動作,比如我們上一篇講到的SARSA, 而另一類是離線控制,會使用兩個控制策略,一個策略用于選擇新的動作,另一個策略用于更新價值函數。這一類的經典算法就是Q-Learning。

對于Q-Learning,我們會使用????貪婪法來選擇新的動作,這部分和SARSA完全相同。但是對于價值函數的更新,Q-Learning使用的是貪婪法,而不是SARSA的????貪婪法。這一點就是SARSA和Q-Learning本質的區別。

2. Q-Learning算法概述

Q-Learning算法的拓補圖入下圖所示:

首先我們基于狀態SS,用????貪婪法選擇到動作AA, 然后執行動作AA,得到獎勵RR,并進入狀態S′S′,此時,如果是SARSA,會繼續基于狀態S′S′,用????貪婪法選擇A′A′,然后來更新價值函數。但是Q-Learning則不同。

對于Q-Learning,它基于狀態S′S′,沒有使用????貪婪法選擇A′A′,而是使用貪婪法選擇A′A′,也就是說,選擇使Q(S′,a)Q(S′,a)最大的aa作為A′A′來更新價值函數。用數學公式表示就是:

對應到上圖中就是在圖下方的三個黑圓圈動作中選擇一個使Q(S′,a)Q(S′,a)最大的動作作為A′A′。

此時選擇的動作只會參與價值函數的更新,不會真正的執行。價值函數更新后,新的執行動作需要基于狀態S′S′,用????貪婪法重新選擇得到。這一點也和SARSA稍有不同。對于SARSA,價值函數更新使用的A′A′會作為下一階段開始時候的執行動作。

下面我們對Q-Learning算法做一個總結。

3. Q-Learning算法流程

下面我們總結下Q-Learning算法的流程。

算法輸入:迭代輪數TT,狀態集SS, 動作集AA, 步長αα,衰減因子γγ, 探索率??,

輸出:所有的狀態和動作對應的價值QQ1. 隨機初始化所有的狀態和動作對應的價值QQ. 對于終止狀態其QQ值初始化為0.

2. for i from 1 to T,進行迭代。

a) 初始化S為當前狀態序列的第一個狀態。

b) 用????貪婪法在當前狀態SS選擇出動作AA
c) 在狀態SS執行當前動作AA,得到新狀態S′S′和獎勵RR
d) 更新價值函數Q(S,A)Q(S,A):

e) S=S′S=S′
f) 如果S′S′是終止狀態,當前輪迭代完畢,否則轉到步驟b)

4. Q-Learning算法實例:Windy GridWorld

我們還是使用和SARSA一樣的例子來研究Q-Learning。如果對windy gridworld的問題還不熟悉,可以復習強化學習(六)時序差分在線控制算法SARSA第4節的第二段。

完整的代碼參見我的github: https://github.com/ljpzzz/machinelearning/blob/master/reinforcement-learning/q_learning_windy_world.py

絕大部分代碼和SARSA是類似的。這里我們可以重點比較和SARSA不同的部分。區別都在episode這個函數里面。

首先是初始化的時候,我們只初始化狀態SS,把AA的產生放到了while循環里面, 而回憶下SARSA會同時初始化狀態SS和動作AA,再去執行循環。下面這段Q-Learning的代碼對應我們算法的第二步步驟a和b:

# play for an episode

def episode(q_value):

# track the total time steps in this episode

time = 0

# initialize state

state = START

while state != GOAL:

# choose an action based on epsilon-greedy algorithm

if np.random.binomial(1, EPSILON) == 1:

action = np.random.choice(ACTIONS)

else:

values_ = q_value[state[0], state[1], :]

action = np.random.choice([action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)])

接著我們會去執行動作AA,得到S′S′, 由于獎勵不是終止就是-1,不需要單獨計算。,這部分和SARSA的代碼相同。對應我們Q-Learning算法的第二步步驟c:

next_state = step(state, action)

def step(state, action):

i, j = state

if action == ACTION_UP:

return [max(i - 1 - WIND[j], 0), j]

elif action == ACTION_DOWN:

return [max(min(i + 1 - WIND[j], WORLD_HEIGHT - 1), 0), j]

elif action == ACTION_LEFT:

return [max(i - WIND[j], 0), max(j - 1, 0)]

elif action == ACTION_RIGHT:

return [max(i - WIND[j], 0), min(j + 1, WORLD_WIDTH - 1)]

else:

assert False

后面我們用貪婪法選擇出最大的Q(S′,a)Q(S′,a),并更新價值函數,最后更新當前狀態SS。對應我們Q-Learning算法的第二步步驟d,e。注意SARSA這里是使用????貪婪法,而不是貪婪法。同時SARSA會同時更新狀態SS和動作AA,而Q-Learning只會更新當前狀態SS。

values_ = q_value[next_state[0], next_state[1], :]

next_action = np.random.choice([action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)])

# Sarsa update

q_value[state[0], state[1], action] += \

ALPHA * (REWARD + q_value[next_state[0], next_state[1], next_action] -

q_value[state[0], state[1], action])

state = next_state

跑完完整的代碼,大家可以很容易得到這個問題的最優解,進而得到在每個格子里的最優貪婪策略。

5. SARSA vs Q-Learning

現在SARSA和Q-Learning算法我們都講完了,那么作為時序差分控制算法的兩種經典方法嗎,他們都有說明特點,各自適用于什么樣的場景呢?

Q-Learning直接學習的是最優策略,而SARSA在學習最優策略的同時還在做探索。這導致我們在學習最優策略的時候,如果用SARSA,為了保證收斂,需要制定一個策略,使????貪婪法的超參數??在迭代的過程中逐漸變小。Q-Learning沒有這個煩惱。

另外一個就是Q-Learning直接學習最優策略,但是最優策略會依賴于訓練中產生的一系列數據,所以受樣本數據的影響較大,因此受到訓練數據方差的影響很大,甚至會影響Q函數的收斂。Q-Learning的深度強化學習版Deep Q-Learning也有這個問題。

在學習過程中,SARSA在收斂的過程中鼓勵探索,這樣學習過程會比較平滑,不至于過于激進,導致出現像Q-Learning可能遇到一些特殊的最優“陷阱”。比如經典的強化學習問題“Cliff Walk”。

在實際應用中,如果我們是在模擬環境中訓練強化學習模型,推薦使用Q-Learning,如果是在線生產環境中訓練模型,則推薦使用SARSA。

6. Q-Learning結語

對于Q-Learning和SARSA這樣的時序差分算法,對于小型的強化學習問題是非常靈活有效的,但是在大數據時代,異常復雜的狀態和可選動作,使Q-Learning和SARSA要維護的Q表異常的大,甚至遠遠超出內存,這限制了時序差分算法的應用場景。在深度學習興起后,基于深度學習的強化學習開始占主導地位,因此從下一篇開始我們開始討論深度強化學習的建模思路。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Q-Learning
    +關注

    關注

    0

    文章

    5

    瀏覽量

    8100
  • 深度學習
    +關注

    關注

    73

    文章

    5493

    瀏覽量

    120983
  • SARSA
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1314
收藏 人收藏

    評論

    相關推薦

    基于演化算法的PID參數優化算法

    PID 參數優化是自動控制領域研究的一個重要問題. 提出了一種演化算法的PID參數優化算法, 同時, 為了增強算法的易用性, 對
    發表于 06-20 10:19 ?25次下載

    基于Q-Learning的認知無線電系統感知管理算法

    認知無線電系統不僅是一個自適應系統,更應該是一個智能系統。該文將智能控制中的Q-Learning 思想引入到認知無線電系統中,用于解決感知任務在認知用戶之間的分配問題,給出了
    發表于 03-06 10:46 ?9次下載

    基于LCS多機器人的算法介紹

    在各種增強式學習中,Q-learning 或改進的Q-learning 應用的最多。JonathanH.Connell 和Sridhar Mahadevan 在Robot Learning一書
    發表于 10-17 17:43 ?15次下載
    基于LCS多機器人的<b class='flag-5'>算法</b>介紹

    兼具動態規劃DP和蒙特卡洛MC優點的TD Learning算法

    TD Learning(Temporal-Difference Learning時序學習指的是一類無模型的強化學習方法,它是從當前價
    發表于 06-29 17:16 ?3453次閱讀

    基于Q-learning的碼率控制算法

    的發展趨勢。 HAS采用碼流切換技術動態調整碼率,整個過程由自適應算法負責。可用帶寬估算和碼率選擇是客戶端碼率自適應算法的2個核心功能。根據媒體片段的TCP平均下載吞吐量估算網絡帶寬。碼率決策從視頻碼率集中選擇低于估算網絡可用帶寬的最大碼率等級。這種碼率選
    發表于 01-10 10:29 ?0次下載
    基于<b class='flag-5'>Q-learning</b>的碼率控制<b class='flag-5'>算法</b>

    強化學習究竟是什么?它與機器學習技術有什么聯系?

    Q-learningSARSA是兩種最常見的不理解環境強化學習算法,這兩者的探索原理不同,但是開發原理是相似的。Q-learning是一種離線學習
    的頭像 發表于 04-15 10:32 ?1.4w次閱讀

    關于TD Learning算法的分析

    人工智能之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下TD Learning算法。TD Learning時序
    發表于 06-27 17:43 ?1881次閱讀

    Q Learning算法學習

    Q Learning算法是由Watkins于1989年在其博士論文中提出,是強化學習發展的里程碑,也是目前應用最為廣泛的強化學習算法
    發表于 07-05 14:10 ?3637次閱讀

    淺談時序的在線控制算法SARSA

    在強化學習(五)用時序分法(TD)求解中,我們討論了用時序分來求解強化學習預測問題的方法,但是對控制算法的求解過程沒有深入,本文我們就對
    的頭像 發表于 10-29 15:04 ?2237次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>時序</b><b class='flag-5'>差</b><b class='flag-5'>分</b>的在線控制<b class='flag-5'>算法</b>—<b class='flag-5'>SARSA</b>

    強化學習的雙權重最小二乘Sarsa算法

    Sarsa,DWLSrsa)。 Dwls-sarsa算法將兩權重通過一定方式進行關聯得到目標權重,并利用 Sarsa方法對時序
    發表于 04-23 15:03 ?5次下載
    強化學習的雙權重最小二乘<b class='flag-5'>Sarsa</b><b class='flag-5'>算法</b>

    基于雙估計器的Speedy Q-learning算法

    Q-learning算法是一種經典的強化學習算法,更新策略由于保守和過估計的原因,存在收斂速度慢的問題。 SpeedyQ-learning算法
    發表于 05-18 15:51 ?2次下載

    可改善小區網絡通信干擾問題的HSARSA算法

    功率的RPABS子幀技術,在保證宏基站自身通信性能的同時減小MBS基站對pico邊緣用戶的干擾,并運用基于啟發函數的改進 HSARSA(λ)算法與環境進行交互,以配置RP-ABS子幀密度與功率大小,達到干擾協調的目的。仿真結果表明,改進 HSARSA算法與原始
    發表于 05-27 15:08 ?2次下載

    7個流行的強化學習算法及代碼實現

    作者:Siddhartha Pramanik 來源:DeepHub IMBA 目前流行的強化學習算法包括 Q-learningSARSA、DDPG、A2C、PPO、DQN 和 TRPO。這些
    的頭像 發表于 02-03 20:15 ?1078次閱讀

    7個流行的強化學習算法及代碼實現

    作者:SiddharthaPramanik來源:DeepHubIMBA目前流行的強化學習算法包括Q-learningSARSA、DDPG、A2C、PPO、DQN和TRPO。這些算法
    的頭像 發表于 02-06 15:06 ?1449次閱讀
    7個流行的強化學習<b class='flag-5'>算法</b>及代碼實現

    淺談Q-Learning在Agent的應用

    經典的文字模型我們已經很熟悉了:訓練時,模型不停的預測下一個 token 并與真實語料比較,直到模型的輸出分布非常接近于真實分布。
    的頭像 發表于 12-02 16:53 ?864次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>Q-Learning</b>在Agent的應用