了解了強(qiáng)化學(xué)習(xí)各種算法及其分類關(guān)系后,就可以開(kāi)始逐個(gè)擊破和提升,在這里,我主要參考B站上莫煩大神的視頻課程學(xué)習(xí),并記錄下自己的一些淺顯的理解。
詳細(xì)文檔可以直接移步莫大神的社區(qū):https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/
Q-learning
個(gè)人感覺(jué)Q-learning核心在于一張Q表格,表格縱軸是狀態(tài)值state,橫軸是動(dòng)作值action。機(jī)器在學(xué)習(xí)的過(guò)程中,就是不斷的訓(xùn)練和修正這張表格的參數(shù),使得真正需要做決策的時(shí)候,可以從表格中查詢,在什么state的情況下,做什么action,可能獲得的正面影響更大。
難點(diǎn)在于,怎么訓(xùn)練和更新這種表格。見(jiàn)下圖,當(dāng)我們從s1->a2走到s2的狀態(tài),根據(jù)Q(s2)的最大值,機(jī)器人會(huì)假設(shè)自己走s2->a2這條路,乘以一個(gè)系數(shù)后得到目前s2狀態(tài)下的Q(s1,a2)的現(xiàn)實(shí)值,根據(jù)差距會(huì)對(duì)剛剛走過(guò)的Q(s1,a2)進(jìn)行更新。同樣會(huì)乘以一個(gè)系數(shù)降低一下差距的影響。這個(gè)時(shí)候,在s2的機(jī)器人其實(shí)還沒(méi)有做出任何決策。

為了保證機(jī)器人不是每一輪都走同樣的路,會(huì)有一個(gè)ε-greedy的值,保證機(jī)器有一定概率走別的路,對(duì)未知的路進(jìn)行探索。
Q-learning只合適有限的狀態(tài)和步驟的游戲。
算法如下:
Sarsa
Sarsa和Q-learning的算法極其類似,都是更新Q表格,但是更新Q表的計(jì)算方式不一樣,可以從圖中明顯的看到,主要區(qū)別在于Q現(xiàn)實(shí)的估計(jì),永遠(yuǎn)選擇自己要走的那條路。
- 第一點(diǎn)區(qū)別在于,Q-learning在s2的時(shí)候無(wú)論如何都選最大的action的Q值作為反饋,但是Sarsa就會(huì)不會(huì)改變主意選最大的,而是就選了自己隨便選的那個(gè)step走走看再更新。
- 第二點(diǎn)區(qū)別在于:區(qū)別就在a'那里,Q-learning預(yù)選一個(gè)a'但是下一回合并不一定執(zhí)行a'(因?yàn)橄乱换睾螿表就更新了)??墒荢arsa下一回合卻一定會(huì)執(zhí)行a'
可以看到Sarsa是說(shuō)到做到類型,也成為在線學(xué)習(xí)【On-policy】,學(xué)著自己在做的事情。
而Q-learning是說(shuō)到并不一定做到,也稱為離線學(xué)習(xí)【Off-policy】,在更新了Q值之后,勇敢的選擇了最大的那個(gè)Q,然后再更新,不計(jì)后果。

Sarsa是一種單步更新算法,Sarsa(0),每一步都在更新Q表,但是會(huì)造成一直在不被懲罰的區(qū)域活動(dòng),到達(dá)目標(biāo)的速度可能會(huì)非常慢
因此有了Sarsa(λ),當(dāng)λ=1時(shí)就是回合更新,一個(gè)回合后再更新Q表,獲得獎(jiǎng)勵(lì)后,不僅更新最新的一步的Q值,同時(shí)更新來(lái)時(shí)的路。