2015-04-23 44 views
0

我想弄清楚如何在gridworld示例中實現Q學習。我相信我理解Q學習如何工作的基礎知識,但它似乎並沒有給我正確的價值觀。Q學習轉換矩陣

這個例子來自Sutton和Barton關於強化學習的書。

指定gridworld以便代理可以在任何給定狀態下以相同的概率採取行動{N,E,W,S},並且除非代理試圖從哪種情況下它是-1。有兩種特殊狀態A和B,其中代理確定性地分別移動到A'和B',分別具有獎勵+10和+5。

我的問題是關於如何通過Q學習來實現這一點。我希望能夠通過矩陣求逆來估計值函數。代理從某種初始狀態開始,不知道任何事情,然後採取由epsilon-greedy算法選擇的行動,並獲得我們可以模擬的獎勵,因爲我們知道獎勵是如何分配的。

這引出我的問題。每次代理從某個狀態S→S'過渡時,我可以建立一個轉移概率矩陣,其中概率是根據代理採取特定行動並進行特定轉換的頻率計算出來的?

回答

0

不知道這是否有幫助,但here是一個寫作解釋Q學習通過一個機器人的例子。如果你想自己嘗試一下,那裏還有一些R代碼。

1

對於Q學習,您不需要環境的「模型」(即轉移概率矩陣)來估計值函數,因爲它是一種無模型方法。對於矩陣求逆評估,您可以參考使用轉換矩陣的動態編程(基於模型)。您可以將Q學習算法看作是一種反覆試驗算法,您可以在其中選擇一個動作並從環境中接收反饋。但是,與基於模型的方法相反,您對環境工作方式(沒有轉換矩陣和獎勵矩陣)沒有任何瞭解。最終,經過足夠的抽樣經驗後,Q函數將會收斂到最優。

對於該算法的實現,您可以在初始化Q函數後爲所有統計和操作(因此您可以跟蹤$ SxA $)初始狀態。然後你根據你的政策選擇一個行動。在這裏你應該實現一個步功能。 step函數將返回新狀態$ s'$和獎勵。考慮步驟功能作爲您行動的環境反饋。最終你只需要根據以下公式更新你的Q函數:Q(s,a)= Q(s,a)+ \ alpha \ left [r + \ gamma \ underset {a'} {\ max (Q(s',a)}) - Q(s,a)\ right] $ 設置$ s = s'$並重復整個過程直到收斂。

希望這會有所幫助