2016-11-21 78 views
3

我正在嘗試基於Sutton & Barto's Book實現線性梯度下降Sarsa,請參閱下圖中的算法。瞭解線性梯度下降Sarsa(基於Sutton&Barto)

不過,我很難理解的東西在算法:

  • 是可以採取多少不同的動作的W和Z獨立的維度?它在書中似乎有維數等於特徵的數量,我認爲這與特徵的數量無關。
  • 每個動作都有w和z嗎?另外,我在書中看不到這應該是這樣。
  • 如果我在上面的兩個項目中是正確的,那麼我看不到如何索引列表F_a將取決於操作,因此我看不到動作值函數q_a如何依賴於操作(請參閱標記的行算法中黃色以下)但動作值必須取決於動作。因此,也有一些是我沒有得到...

我希望有人能幫助澄清這對我來說:)

Sarsa algo

回答

3

w是對函數逼近的權重向量。你近似的函數是Q(s,a),動作值函數,它告訴你在一個狀態下采取行動的價值。它取決於你來定義權重,但是是的,你是對的,你需要考慮如何在權重中表示行爲。一種方法可能是定義一組狀態特徵,然後在每個動作中實例化它們(多個單獨的w向量)。爲了方便起見,您可以將這些向量連接成一個大的w,因爲您知道只有狀態動作對功能激活的權重向量塊纔會更新。如果動作空間很大,則每個動作具有多個不相交的狀態特徵集合,因此可以將多個動作壓縮爲單個權重的不同標量值。如果真正的Q值在動作之間接近,那麼您可以執行得更好,而且實際上你會學得更快,因爲需要優化的權重更少。該表示是靈活的。隨你便!

我鼓勵你看看書中第二版所寫的算法(草稿可從作者的網站獲得)。符號更清晰。您發佈的算法實際上是一種lambda返回方法,您可以在第12章中閱讀(z是資格追蹤,它具有與w相同的維度,對於您所問的問題並不重要)。第10.1節中出現的情節半漸變Sarsa,減去一些花裏胡哨的相同算法。

+0

嗨尼克,非常感謝你的回答! 你的回答很有道理。我對每個動作都用一個w實現了上面的算法,並且它工作正常。 你能澄清你的觀點:將多個動作壓縮成相同的標量嗎?您是否需要先前的模型知識以瞭解您可以在哪些州組合哪些行爲? – bbiegel

+0

是的。除表格之外的任何參數化(每個S-A對都有一個二進制特徵/權重)需要您對值函數的形式進行假設。如果您知道本地區域的狀態具有相同的值,則可以將它們合併爲一個二進制功能。如果兩個動作相似,則可以使用兩個標量激活將它們摺疊成單個功能。這限制了你的價值函數表達它們之間的差異的能力,這可能是好的還是壞的,取決於它如何反映你正試圖學習的基礎價值函數。 –