了解了強化學習各種算法及其分類關(guān)系后疗锐,就可以開始逐個擊破和提升坊谁,在這里,我主要參考B站上莫煩大神的視頻課程學習滑臊,并記錄下自己的一些淺顯的理解口芍。
詳細文檔可以直接移步莫大神的社區(qū):https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/
Q-learning
個人感覺Q-learning核心在于一張Q表格,表格縱軸是狀態(tài)值state雇卷,橫軸是動作值action阶界。機器在學習的過程中虹钮,就是不斷的訓練和修正這張表格的參數(shù),使得真正需要做決策的時候膘融,可以從表格中查詢芙粱,在什么state的情況下,做什么action氧映,可能獲得的正面影響更大春畔。
難點在于,怎么訓練和更新這種表格岛都。見下圖律姨,當我們從s1->a2走到s2的狀態(tài),根據(jù)Q(s2)的最大值臼疫,機器人會假設(shè)自己走s2->a2這條路择份,乘以一個系數(shù)后得到目前s2狀態(tài)下的Q(s1,a2)的現(xiàn)實值,根據(jù)差距會對剛剛走過的Q(s1,a2)進行更新烫堤。同樣會乘以一個系數(shù)降低一下差距的影響荣赶。這個時候,在s2的機器人其實還沒有做出任何決策鸽斟。Q-learning-訓練Q表格.png
Q-learning-經(jīng)過一輪后表格中的值.png
為了保證機器人不是每一輪都走同樣的路富蓄,會有一個ε-greedy的值剩燥,保證機器有一定概率走別的路,對未知的路進行探索立倍。
Q-learning只合適有限的狀態(tài)和步驟的游戲灭红。
算法如下:Q-learning-algorithm.png
Sarsa
Sarsa和Q-learning的算法極其類似,都是更新Q表格口注,但是更新Q表的計算方式不一樣变擒,可以從圖中明顯的看到,主要區(qū)別在于Q現(xiàn)實的估計疆导,永遠選擇自己要走的那條路。Sarsa-訓練Q表格.png
- 第一點區(qū)別在于葛躏,Q-learning在s2的時候無論如何都選最大的action的Q值作為反饋澈段,但是Sarsa就會不會改變主意選最大的,而是就選了自己隨便選的那個step走走看再更新舰攒。
- 第二點區(qū)別在于:區(qū)別就在a'那里败富,Q-learning預(yù)選一個a'但是下一回合并不一定執(zhí)行a'(因為下一回合Q表就更新了)∧η裕可是Sarsa下一回合卻一定會執(zhí)行a'
可以看到Sarsa是說到做到類型兽叮,也成為在線學習【On-policy】芬骄,學著自己在做的事情。
而Q-learning是說到并不一定做到鹦聪,也稱為離線學習【Off-policy】账阻,在更新了Q值之后,勇敢的選擇了最大的那個Q泽本,然后再更新淘太,不計后果。
Sarsa-algorithm.png
Sarsa是一種單步更新算法蒲牧,Sarsa(0),每一步都在更新Q表赌莺,但是會造成一直在不被懲罰的區(qū)域活動冰抢,到達目標的速度可能會非常慢
因此有了Sarsa(λ),當λ=1時就是回合更新艘狭,一個回合后再更新Q表挎扰,獲得獎勵后,不僅更新最新的一步的Q值缓升,同時更新來時的路鼓鲁。