在文章強(qiáng)化學(xué)習(xí)與馬爾可夫決策中轨香,介紹了使用馬爾可夫決策模型對(duì)強(qiáng)化學(xué)習(xí)的過程進(jìn)行建模显歧,本篇文章將介紹基于這一模型而引出的一些強(qiáng)化學(xué)習(xí)的經(jīng)典算法仪或。
Q-learning
Q-learning是強(qiáng)化學(xué)習(xí)的經(jīng)典算法之一,它是一個(gè)value-based算法士骤,同時(shí)也是一個(gè)model-free的算法范删。這里的Q指的是動(dòng)作價(jià)值,即當(dāng)前狀態(tài)下敦间,通過策略
采取動(dòng)作
之后瓶逃,能夠獲得的獎(jiǎng)勵(lì)
。
算法原理
該算法的主要思想很簡(jiǎn)單廓块。假設(shè)強(qiáng)化學(xué)習(xí)過程中所有狀態(tài)的集合為厢绝,動(dòng)作空間為
。首先建立一張Q值表带猴,記錄強(qiáng)化學(xué)習(xí)過程中每一個(gè)時(shí)刻
的狀態(tài)
下昔汉,采取不同的動(dòng)作
的收益。一張Q值表的示例如下:
state | a1 | a2 |
---|---|---|
s1 | q(s1,a1) | q(s1,a2) |
s2 | q(s2,a1) | q(s2,a2) |
s3 | q(s3,a1) | q(s3,a2) |
之后,根據(jù)這一張Q值表來選取能夠獲得最大的收益的動(dòng)作靶病,一般是通過-greedy的方式選取當(dāng)前狀態(tài)下会通,Q值最大的動(dòng)作。
Q-learning的整個(gè)迭代過程實(shí)際上就是去更新這張Q值表娄周,當(dāng)Q值表收斂時(shí)涕侈,通過-greedy選取的Q值就是最優(yōu)動(dòng)作價(jià)值函數(shù)
,其對(duì)應(yīng)的策略就是最優(yōu)策略
煤辨。
這里需要注意的是裳涛,由于Q-learning是model-free的算法,因此不用考慮環(huán)境的狀態(tài)轉(zhuǎn)移模型众辨,也就不用關(guān)心狀態(tài)價(jià)值函數(shù)端三。
Q-learning是使用時(shí)序差分TD來更新Q值表的,時(shí)序差分的更新公式如下:
其中表示TD目標(biāo)鹃彻,
是TD誤差郊闯。
算法流程
隨機(jī)初始化所有的狀態(tài)和動(dòng)作對(duì)應(yīng)的價(jià)值??。 對(duì)于終止?fàn)顟B(tài)其??值初始化為0蛛株。然后執(zhí)行下面的流程团赁,迭代
次。
初始化
為當(dāng)前狀態(tài)序列的第一個(gè)狀態(tài)谨履。
用
-greedy在當(dāng)前狀態(tài)
選擇出動(dòng)作
然痊。
在狀態(tài)
執(zhí)行當(dāng)前動(dòng)作
,得到新狀態(tài)
和獎(jiǎng)勵(lì)
屉符。
更新價(jià)值函數(shù)
:
剧浸;
如果
是終止?fàn)顟B(tài),當(dāng)前輪迭代完畢矗钟,否則轉(zhuǎn)到步驟2唆香。
SARSA
SARSA和Q-learning非常相似,除了價(jià)值函數(shù)的更新方式吨艇,其他都是一模一樣躬它。其算法流程如下:
初始化
為當(dāng)前狀態(tài)序列的第一個(gè)狀態(tài)。
用
-greedy在當(dāng)前狀態(tài)
選擇出動(dòng)作
东涡。
在狀態(tài)
執(zhí)行當(dāng)前動(dòng)作
冯吓,得到新狀態(tài)
和獎(jiǎng)勵(lì)
。
用
-greedy在新狀態(tài)
選擇出動(dòng)作
更新價(jià)值函數(shù)
:
疮跑;
如果
是終止?fàn)顟B(tài)组贺,當(dāng)前輪迭代完畢,否則轉(zhuǎn)到步驟2祖娘。
兩者的不同之處是上述第4步和第5步失尖。
Q-learning在根據(jù)當(dāng)前狀態(tài)下執(zhí)行動(dòng)作
之后,直接用貪婪算法選擇在新狀態(tài)
下,回報(bào)最大的動(dòng)作
對(duì)應(yīng)的
值來更新
值表掀潮,但是這個(gè)動(dòng)作
沒有被立刻執(zhí)行菇夸,真正在新狀態(tài)
下執(zhí)行的動(dòng)作是根據(jù)更新之后的
值表選擇出來的。
反觀SARSA仪吧,使用的是-greedy從新狀態(tài)
下選擇出動(dòng)作
庄新,再更新完
值表之后,SARSA在下一輪迭代中更是直接去執(zhí)行了動(dòng)作
薯鼠,基本上是“說到做到”摄咆。因此,兩者在新狀態(tài)
下得到的
值會(huì)有一些差別人断。
由于SARSA這種“說到做到”的特性,因此被稱為在線學(xué)習(xí)算法朝蜘,而Q-learning這一類的算法恶迈,被稱為離線學(xué)習(xí)算法。
Sarsa(lambda)
Sarsa(lambda)是Sarsa的增強(qiáng)版谱醇。與普通的Sarsa不同暇仲,Sarsa(lambda)在更新完當(dāng)前狀態(tài)的
值之后,還會(huì)將之前所走過的所有狀態(tài)的
值一起給更新了副渴。也就是說奈附,Sarsa(lambda)不但思考糾正當(dāng)前狀態(tài)的選擇,還對(duì)以往的記憶狀態(tài)進(jìn)行反思糾正煮剧。因此斥滤,Sarsa(lambda)的收斂速度,比普通的Sarsa快勉盅。其算法流程如下:
其中是一個(gè)矩陣佑颇,用來保存其經(jīng)歷過的所有狀態(tài)的信息。參數(shù)
是一個(gè)值為[0,1]的衰減值草娜,通過
對(duì)矩陣
進(jìn)行更新挑胸,增強(qiáng)離當(dāng)前狀態(tài)比較近的記憶,疏遠(yuǎn)那些太久之前的記憶宰闰。
由于Sarsa(lambda)會(huì)保存狀態(tài)記憶茬贵,因此除了提高收斂速度之外,還可以解決在訓(xùn)練過程中移袍,智能體反復(fù)執(zhí)行無意義動(dòng)作的問題解藻,例如老鼠在尋找奶酪的時(shí)候,繞著柱子轉(zhuǎn)圈圈的行為就沒什么意義了葡盗。怎么解決呢舆逃,在這一步之前,直接將矩陣
中這個(gè)狀態(tài)
對(duì)應(yīng)的行置為0即可。
最后路狮,無論是Q-learning還是Sarsa虫啥,都是基于值表去解決強(qiáng)化學(xué)習(xí)的問題,因此他們都是基于value的方法奄妨。