前幾天面試的時候被問到RL一些基礎算法的區別,回來抽空做了一些整理方便加深理解。
On policy與off policy
為了解決強化學習中探索與利用的平衡問題,可以采用兩個策略訓練模型,一個策略為行為策略,用於保持探索性,提供多樣化的數據,不斷優化另一個策略(目標策略)。
on policy的目標策略與行為策略是一個策略,在優化時,兩個策略同時被優化。而off policy的目標策略與行為策略不同,可以采用重要性采樣的方法實現這一目標,一個具體的例子是蒙特卡洛on policy算法與蒙特卡洛off polic算法。
SARSA算法流程
本質是時序差分算法,它是on policy的

SARSA(lambda)即為TD(lambda)算法(eligibility trace),即在更新當前步時,也會同時對前面的步驟進行更新,具體算法如下
和Sarsa相比,Sarsa(lambda)算法有如下優勢:
Sarsa雖然會邊走邊更新,但是在沒有獲得奶酪之前,當前步的Q值是沒有任何變化的,直到獲取奶酪后,才會對獲取奶酪的前一步更新,而之前為了獲取奶酪所走的所有步都被認為和獲取奶酪沒關系。Sarsa(lambda)則會對獲取奶酪所走的步都進行更新,離奶酪越近的步越重要,越遠的則越不重要(由參數lambda控制衰減幅度)。因此,Sarsa(lambda) 能夠更加快速有效的學到最優的policy。
在算法前幾回合,老鼠由於沒有頭緒, 可能在原地打轉了很久,從而形成一些重復的環路,而這些環路對於算法的學習沒有太大必要。Sarsa(lambda)則可解決該問題,具體做法是:在E(s,a)←E(s,a)+1這一步之前,可先令E(s)=0,即把狀態s對應的行置為0,這樣就只保留了最近一次到達狀態s時所做的action。
Q-learning是sarsa的off-policy版本,對於Q-Learning,我們會使用ϵ−貪婪法來選擇新的動作,這部分和SARSA完全相同。但是對於價值函數的更新,在選取下一步最優動作時,Q-Learning使用的是MAX貪婪法(用目標策略選取動作進行評估),而不是SARSA的ϵ−貪婪法(用行為策略選取動作進行評估)。這一點就是SARSA和Q-Learning本質的區別。Q-learning具體算法如下:
