RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談Q-Learning和SARSA時(shí)序差分算法

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

Q-Learning這一篇對(duì)應(yīng)Sutton書(shū)的第六章部分和UCL強(qiáng)化學(xué)習(xí)課程的第五講部分。

1. Q-Learning算法的引入

Q-Learning算法是一種使用時(shí)序差分求解強(qiáng)化學(xué)習(xí)控制問(wèn)題的方法,回顧下此時(shí)我們的控制問(wèn)題可以表示為:給定強(qiáng)化學(xué)習(xí)的5個(gè)要素:狀態(tài)集SS, 動(dòng)作集AA, 即時(shí)獎(jiǎng)勵(lì)RR,衰減因子γγ, 探索率??, 求解最優(yōu)的動(dòng)作價(jià)值函數(shù)q?q?和最優(yōu)策略π?π?。

這一類強(qiáng)化學(xué)習(xí)的問(wèn)題求解不需要環(huán)境的狀態(tài)轉(zhuǎn)化模型,是不基于模型的強(qiáng)化學(xué)習(xí)問(wèn)題求解方法。對(duì)于它的控制問(wèn)題求解,和蒙特卡羅法類似,都是價(jià)值迭代,即通過(guò)價(jià)值函數(shù)的更新,來(lái)更新策略,通過(guò)策略來(lái)產(chǎn)生新的狀態(tài)和即時(shí)獎(jiǎng)勵(lì),進(jìn)而更新價(jià)值函數(shù)。一直進(jìn)行下去,直到價(jià)值函數(shù)和策略都收斂。

再回顧下時(shí)序差分法的控制問(wèn)題,可以分為兩類,一類是在線控制,即一直使用一個(gè)策略來(lái)更新價(jià)值函數(shù)和選擇新的動(dòng)作,比如我們上一篇講到的SARSA, 而另一類是離線控制,會(huì)使用兩個(gè)控制策略,一個(gè)策略用于選擇新的動(dòng)作,另一個(gè)策略用于更新價(jià)值函數(shù)。這一類的經(jīng)典算法就是Q-Learning。

對(duì)于Q-Learning,我們會(huì)使用????貪婪法來(lái)選擇新的動(dòng)作,這部分和SARSA完全相同。但是對(duì)于價(jià)值函數(shù)的更新,Q-Learning使用的是貪婪法,而不是SARSA的????貪婪法。這一點(diǎn)就是SARSA和Q-Learning本質(zhì)的區(qū)別。

2. Q-Learning算法概述

Q-Learning算法的拓補(bǔ)圖入下圖所示:

首先我們基于狀態(tài)SS,用????貪婪法選擇到動(dòng)作AA, 然后執(zhí)行動(dòng)作AA,得到獎(jiǎng)勵(lì)RR,并進(jìn)入狀態(tài)S′S′,此時(shí),如果是SARSA,會(huì)繼續(xù)基于狀態(tài)S′S′,用????貪婪法選擇A′A′,然后來(lái)更新價(jià)值函數(shù)。但是Q-Learning則不同。

對(duì)于Q-Learning,它基于狀態(tài)S′S′,沒(méi)有使用????貪婪法選擇A′A′,而是使用貪婪法選擇A′A′,也就是說(shuō),選擇使Q(S′,a)Q(S′,a)最大的aa作為A′A′來(lái)更新價(jià)值函數(shù)。用數(shù)學(xué)公式表示就是:

對(duì)應(yīng)到上圖中就是在圖下方的三個(gè)黑圓圈動(dòng)作中選擇一個(gè)使Q(S′,a)Q(S′,a)最大的動(dòng)作作為A′A′。

此時(shí)選擇的動(dòng)作只會(huì)參與價(jià)值函數(shù)的更新,不會(huì)真正的執(zhí)行。價(jià)值函數(shù)更新后,新的執(zhí)行動(dòng)作需要基于狀態(tài)S′S′,用????貪婪法重新選擇得到。這一點(diǎn)也和SARSA稍有不同。對(duì)于SARSA,價(jià)值函數(shù)更新使用的A′A′會(huì)作為下一階段開(kāi)始時(shí)候的執(zhí)行動(dòng)作。

下面我們對(duì)Q-Learning算法做一個(gè)總結(jié)。

3. Q-Learning算法流程

下面我們總結(jié)下Q-Learning算法的流程。

算法輸入:迭代輪數(shù)TT,狀態(tài)集SS, 動(dòng)作集AA, 步長(zhǎng)αα,衰減因子γγ, 探索率??,

輸出:所有的狀態(tài)和動(dòng)作對(duì)應(yīng)的價(jià)值QQ1. 隨機(jī)初始化所有的狀態(tài)和動(dòng)作對(duì)應(yīng)的價(jià)值QQ. 對(duì)于終止?fàn)顟B(tài)其QQ值初始化為0.

2. for i from 1 to T,進(jìn)行迭代。

a) 初始化S為當(dāng)前狀態(tài)序列的第一個(gè)狀態(tài)。

b) 用????貪婪法在當(dāng)前狀態(tài)SS選擇出動(dòng)作AA
c) 在狀態(tài)SS執(zhí)行當(dāng)前動(dòng)作AA,得到新?tīng)顟B(tài)S′S′和獎(jiǎng)勵(lì)RR
d) 更新價(jià)值函數(shù)Q(S,A)Q(S,A):

e) S=S′S=S′
f) 如果S′S′是終止?fàn)顟B(tài),當(dāng)前輪迭代完畢,否則轉(zhuǎn)到步驟b)

4. Q-Learning算法實(shí)例:Windy GridWorld

我們還是使用和SARSA一樣的例子來(lái)研究Q-Learning。如果對(duì)windy gridworld的問(wèn)題還不熟悉,可以復(fù)習(xí)強(qiáng)化學(xué)習(xí)(六)時(shí)序差分在線控制算法SARSA第4節(jié)的第二段。

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

絕大部分代碼和SARSA是類似的。這里我們可以重點(diǎn)比較和SARSA不同的部分。區(qū)別都在episode這個(gè)函數(shù)里面。

首先是初始化的時(shí)候,我們只初始化狀態(tài)SS,把AA的產(chǎn)生放到了while循環(huán)里面, 而回憶下SARSA會(huì)同時(shí)初始化狀態(tài)SS和動(dòng)作AA,再去執(zhí)行循環(huán)。下面這段Q-Learning的代碼對(duì)應(yīng)我們算法的第二步步驟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_)])

接著我們會(huì)去執(zhí)行動(dòng)作AA,得到S′S′, 由于獎(jiǎng)勵(lì)不是終止就是-1,不需要單獨(dú)計(jì)算。,這部分和SARSA的代碼相同。對(duì)應(yīng)我們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),并更新價(jià)值函數(shù),最后更新當(dāng)前狀態(tài)SS。對(duì)應(yīng)我們Q-Learning算法的第二步步驟d,e。注意SARSA這里是使用????貪婪法,而不是貪婪法。同時(shí)SARSA會(huì)同時(shí)更新?tīng)顟B(tài)SS和動(dòng)作AA,而Q-Learning只會(huì)更新當(dāng)前狀態(tài)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

跑完完整的代碼,大家可以很容易得到這個(gè)問(wèn)題的最優(yōu)解,進(jìn)而得到在每個(gè)格子里的最優(yōu)貪婪策略。

5. SARSA vs Q-Learning

現(xiàn)在SARSA和Q-Learning算法我們都講完了,那么作為時(shí)序差分控制算法的兩種經(jīng)典方法嗎,他們都有說(shuō)明特點(diǎn),各自適用于什么樣的場(chǎng)景呢?

Q-Learning直接學(xué)習(xí)的是最優(yōu)策略,而SARSA在學(xué)習(xí)最優(yōu)策略的同時(shí)還在做探索。這導(dǎo)致我們?cè)趯W(xué)習(xí)最優(yōu)策略的時(shí)候,如果用SARSA,為了保證收斂,需要制定一個(gè)策略,使????貪婪法的超參數(shù)??在迭代的過(guò)程中逐漸變小。Q-Learning沒(méi)有這個(gè)煩惱。

另外一個(gè)就是Q-Learning直接學(xué)習(xí)最優(yōu)策略,但是最優(yōu)策略會(huì)依賴于訓(xùn)練中產(chǎn)生的一系列數(shù)據(jù),所以受樣本數(shù)據(jù)的影響較大,因此受到訓(xùn)練數(shù)據(jù)方差的影響很大,甚至?xí)绊慟函數(shù)的收斂。Q-Learning的深度強(qiáng)化學(xué)習(xí)版Deep Q-Learning也有這個(gè)問(wèn)題。

在學(xué)習(xí)過(guò)程中,SARSA在收斂的過(guò)程中鼓勵(lì)探索,這樣學(xué)習(xí)過(guò)程會(huì)比較平滑,不至于過(guò)于激進(jìn),導(dǎo)致出現(xiàn)像Q-Learning可能遇到一些特殊的最優(yōu)“陷阱”。比如經(jīng)典的強(qiáng)化學(xué)習(xí)問(wèn)題“Cliff Walk”。

在實(shí)際應(yīng)用中,如果我們是在模擬環(huán)境中訓(xùn)練強(qiáng)化學(xué)習(xí)模型,推薦使用Q-Learning,如果是在線生產(chǎn)環(huán)境中訓(xùn)練模型,則推薦使用SARSA。

6. Q-Learning結(jié)語(yǔ)

對(duì)于Q-Learning和SARSA這樣的時(shí)序差分算法,對(duì)于小型的強(qiáng)化學(xué)習(xí)問(wèn)題是非常靈活有效的,但是在大數(shù)據(jù)時(shí)代,異常復(fù)雜的狀態(tài)和可選動(dòng)作,使Q-Learning和SARSA要維護(hù)的Q表異常的大,甚至遠(yuǎn)遠(yuǎn)超出內(nèi)存,這限制了時(shí)序差分算法的應(yīng)用場(chǎng)景。在深度學(xué)習(xí)興起后,基于深度學(xué)習(xí)的強(qiáng)化學(xué)習(xí)開(kāi)始占主導(dǎo)地位,因此從下一篇開(kāi)始我們開(kāi)始討論深度強(qiáng)化學(xué)習(xí)的建模思路。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Q-Learning
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    8105
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5500

    瀏覽量

    121111
  • SARSA
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1318
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于演化算法的PID參數(shù)優(yōu)化算法

    PID 參數(shù)優(yōu)化是自動(dòng)控制領(lǐng)域研究的一個(gè)重要問(wèn)題. 提出了一種演化算法的PID參數(shù)優(yōu)化算法, 同時(shí), 為了增強(qiáng)算法的易用性, 對(duì)
    發(fā)表于 06-20 10:19 ?25次下載

    基于Q-Learning的認(rèn)知無(wú)線電系統(tǒng)感知管理算法

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

    基于LCS多機(jī)器人的算法介紹

    在各種增強(qiáng)式學(xué)習(xí)中,Q-learning 或改進(jìn)的Q-learning 應(yīng)用的最多。JonathanH.Connell 和Sridhar Mahadevan 在Robot Learning一書(shū)
    發(fā)表于 10-17 17:43 ?15次下載
    基于LCS多機(jī)器人的<b class='flag-5'>算法</b>介紹

    兼具動(dòng)態(tài)規(guī)劃DP和蒙特卡洛MC優(yōu)點(diǎn)的TD Learning算法

    TD Learning(Temporal-Difference Learning時(shí)序學(xué)習(xí)指的是一類無(wú)模型的強(qiáng)化學(xué)習(xí)方法,它是從當(dāng)前價(jià)
    發(fā)表于 06-29 17:16 ?3471次閱讀

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

    的發(fā)展趨勢(shì)。 HAS采用碼流切換技術(shù)動(dòng)態(tài)調(diào)整碼率,整個(gè)過(guò)程由自適應(yīng)算法負(fù)責(zé)??捎脦捁浪愫痛a率選擇是客戶端碼率自適應(yīng)算法的2個(gè)核心功能。根據(jù)媒體片段的TCP平均下載吞吐量估算網(wǎng)絡(luò)帶寬。碼率決策從視頻碼率集中選擇低于估算網(wǎng)絡(luò)可用帶寬的最大碼率等級(jí)。這種碼率選
    發(fā)表于 01-10 10:29 ?0次下載
    基于<b class='flag-5'>Q-learning</b>的碼率控制<b class='flag-5'>算法</b>

    強(qiáng)化學(xué)習(xí)究竟是什么?它與機(jī)器學(xué)習(xí)技術(shù)有什么聯(lián)系?

    Q-learningSARSA是兩種最常見(jiàn)的不理解環(huán)境強(qiáng)化學(xué)習(xí)算法,這兩者的探索原理不同,但是開(kāi)發(fā)原理是相似的。Q-learning是一種離線學(xué)習(xí)
    的頭像 發(fā)表于 04-15 10:32 ?1.4w次閱讀

    關(guān)于TD Learning算法的分析

    人工智能之機(jī)器學(xué)習(xí)主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點(diǎn)探討一下TD Learning算法。TD Learning時(shí)序
    發(fā)表于 06-27 17:43 ?1894次閱讀

    Q Learning算法學(xué)習(xí)

    Q Learning算法是由Watkins于1989年在其博士論文中提出,是強(qiáng)化學(xué)習(xí)發(fā)展的里程碑,也是目前應(yīng)用最為廣泛的強(qiáng)化學(xué)習(xí)算法。
    發(fā)表于 07-05 14:10 ?3654次閱讀

    淺談時(shí)序的在線控制算法SARSA

    在強(qiáng)化學(xué)習(xí)(五)用時(shí)序分法(TD)求解中,我們討論了用時(shí)序分來(lái)求解強(qiáng)化學(xué)習(xí)預(yù)測(cè)問(wèn)題的方法,但是對(duì)控制算法的求解過(guò)程沒(méi)有深入,本文我們就對(duì)
    的頭像 發(fā)表于 10-29 15:04 ?2280次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>時(shí)序</b><b class='flag-5'>差</b><b class='flag-5'>分</b>的在線控制<b class='flag-5'>算法</b>—<b class='flag-5'>SARSA</b>

    強(qiáng)化學(xué)習(xí)的雙權(quán)重最小二乘Sarsa算法

    Sarsa,DWLSrsa)。 Dwls-sarsa算法將兩權(quán)重通過(guò)一定方式進(jìn)行關(guān)聯(lián)得到目標(biāo)權(quán)重,并利用 Sarsa方法對(duì)時(shí)序
    發(fā)表于 04-23 15:03 ?5次下載
    強(qiáng)化學(xué)習(xí)的雙權(quán)重最小二乘<b class='flag-5'>Sarsa</b><b class='flag-5'>算法</b>

    基于雙估計(jì)器的Speedy Q-learning算法

    Q-learning算法是一種經(jīng)典的強(qiáng)化學(xué)習(xí)算法,更新策略由于保守和過(guò)估計(jì)的原因,存在收斂速度慢的問(wèn)題。 SpeedyQ-learning算法
    發(fā)表于 05-18 15:51 ?2次下載

    可改善小區(qū)網(wǎng)絡(luò)通信干擾問(wèn)題的HSARSA算法

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

    7個(gè)流行的強(qiáng)化學(xué)習(xí)算法及代碼實(shí)現(xiàn)

    作者:Siddhartha Pramanik 來(lái)源:DeepHub IMBA 目前流行的強(qiáng)化學(xué)習(xí)算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。這些
    的頭像 發(fā)表于 02-03 20:15 ?1104次閱讀

    7個(gè)流行的強(qiáng)化學(xué)習(xí)算法及代碼實(shí)現(xiàn)

    作者:SiddharthaPramanik來(lái)源:DeepHubIMBA目前流行的強(qiáng)化學(xué)習(xí)算法包括Q-learningSARSA、DDPG、A2C、PPO、DQN和TRPO。這些算法
    的頭像 發(fā)表于 02-06 15:06 ?1501次閱讀
    7個(gè)流行的強(qiáng)化學(xué)習(xí)<b class='flag-5'>算法</b>及代碼實(shí)現(xiàn)

    淺談Q-Learning在Agent的應(yīng)用

    經(jīng)典的文字模型我們已經(jīng)很熟悉了:訓(xùn)練時(shí),模型不停的預(yù)測(cè)下一個(gè) token 并與真實(shí)語(yǔ)料比較,直到模型的輸出分布非常接近于真實(shí)分布。
    的頭像 發(fā)表于 12-02 16:53 ?890次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>Q-Learning</b>在Agent的應(yīng)用
    RM新时代网站-首页