上一篇文章介紹了強化學習中的Q-Learning算法,這篇文章介紹一個與Q-Learning十分類似的算法——Sarsa算法。
1. 回顧Q Learning
還是同樣的例子熬甚,紅色智能體在4x4的迷宮中尋找黃色的寶藏喉酌。找到寶藏完箩,將會的到+1的獎勵铁蹈,如果掉進黑色陷阱就回的到-1的獎勵(懲罰)宽闲。
首先回顧一下Q表如下
Q table (States\Actions) | left (A1) | right (A2) | up (A3) | down (A4) |
---|---|---|---|---|
S0 | -1 | 3 | -1 | 2 |
S1 | 1 | 2 | -1 | 1 |
... | ... | ... | ... | .. |
Q(S0,A2) = Q(S0,A2) + α[R(S1) + γ*maxa Q(S1,a)-Q(S0,A2)]
在Q Learning 算法中,當智能體處于S0的狀態(tài)時木缝,它的目標值是:
R(S1) + γmaxa Q(S1,a)*。此時他還在S0的位置上围辙,但是已經在計算S1上的最大Q值了我碟。但是此時它并沒有行動,也不一定會在S1采取Q值最大Q(S1, A2)的行動姚建。因為我們提到矫俺,它還有10%的概率隨機選擇其他的行動 (ε貪婪方法(ε -Greedy method))。
2. SARSA 行動派
”SARSA“ 五個字母是當前 S (狀態(tài)), A(行動), R(獎勵) 與 下一步S'(狀態(tài)) A'(行動) 的組合掸冤,即我們不僅需要知道當前的S, A, R 還需要知道下一步的 S' 和 A‘厘托。
在Sarsa算法中,智能體的目標是
R(S1) + γQ(S1,A)*
至于A是多少稿湿,完全取決于智能體實際上選擇的哪一個Action铅匹。智能體有90%的概率會選擇Q值最大的Action(A2),還有10%的概率會隨機選擇一個Action饺藤。
所以包斑,Sarsa的算法是這樣的流礁。
Q(S0,A2) = Q(S0,A2) + α[R(S1) + γ*Q(S1,A)-Q(S0,A2)]
除了其目標值與Q learning 有所不同之外,其他的都是一模一樣的罗丰。
所以Sarsa是在線學習(On Policy)的算法神帅,因為他是在行動中學習的,而且至始至終只有一個Policy. 使用了兩次greedy-epsilon 方法來選擇出了Q(S,A)和q(S',A')萌抵。
而Q learning離線學習(Off Policy)的算法找御,QLearning選擇Q(S,A)用了greedy方法,而計算A(S',A')時用的是max方法绍填,而真正選擇的時候又不一定會選擇max的行動, 所以 Q learning 學習和行動分別采用了兩套不同的Policy
Q learning 通過Max的函數(shù)霎桅,總是在尋找能最快獲得寶藏的道路,所以他比較勇敢沐兰。而Sarsa 卻相對謹慎哆档。
3. Sarsa-lambda
Q learning 和 Sarsa都是單步更新的算法。單步跟新的算法缺點就是在沒有找到寶藏之前住闯,智能體在原地打轉的那些行動也被記錄在案瓜浸,并更新了Q表,即便那些行動都是沒有意義的比原。
Lambda(λ)這個衰減系數(shù)的引入插佛,就是為了解決這個問題的。與γ用來衰減未來預期Q的值一樣量窘,λ是當智能體獲得寶藏之后雇寇,在更新Q表的時候,給智能體一個回頭看之前走過的路程的機會蚌铜。相當于锨侯,智能體每走一步就會在地上插一桿旗子,然后智能體每走一步旗子就會變小一點冬殃。
Sarsa-lambda 的完整算法在這里:
注意囚痴,該算法與Sarsa 算法不同的地方就是多乘了一個E(s, a) (Eligibility Trace"不可或缺性值"),而這個E(s, a)又同時受γ和λ調控审葬。并且在更新Q表的時候深滚,不僅僅是更新一個Q(S,A),而是整個Q表所有的Q值都被更新了涣觉。
4. 總結
本文粗淺地介紹了什么是SARSA 算法,詳細介紹和代碼實戰(zhàn)將在下一篇文章中繼續(xù)探討生兆。
首發(fā)steemit
歡迎掃描二維碼關注我的微信公眾號“tensorflow機器學習”栖榨,一起學習婴栽,共同進步