Reinforment Learning 學習筆記(二) Q-Learning

  Q-Learning是強化學習初期提出的一種較爲簡單的方法,其核心思想爲對每個狀態下的每一種行爲進行打分,然後根據分數的高低進行選擇,接着根據選擇此行爲後獲得的實際獎賞來對打分系統進行更新。傳統Q-Learning面對的是有限狀態空間、有限動作空間,並且空間大小都足夠簡單,因此可以維護一張表格來進行存儲,即存儲狀態-動作及相應的分數。

其運行的基本流程爲:


隨機初始化Q-table;

設計合適的reward;

對每一次學習 k=0:Max:

    初始化狀態爲s0;

    對於每一個狀態(i=0:T(terminal)):

        查詢Q-table選擇分數最高的一項a(i)執行;

        此時狀態轉移爲s(i+1);

         對於新狀態s(i+1),其分數爲        reward + gamma * maxof ( Q( s(i+1) , a(i+1) ); //即此刻獲得的回報加上未來預計會獲得的回報,gamma爲一定的折扣因子

         //那麼因爲之前的打分中是沒有估計到reward的,則如果產生reward而之前未能估計到,則會與之前的Q值產生較大的區別,這是更新Q表的動力來源

         於是利用這一誤差就可以實現Q表的更新

     

    end

end


        從算法流程中可以看出,Q-learning的主要思路在於用行爲後的“現實”糾正行爲前的估計,而兩者之間的最大的可能造成差異的來源則是“reward”這一人工設計的準則,因此實際上Q-learning是在幹一件根據人告訴它的好壞標準來學習相應的應對策略的事情。


Q-learning作爲強化學習的鼻祖之一,其開創性的地位是不容否定的,但其較爲簡單的設計也決定了其只適合一些簡單的場合,要求狀態空間極小、動作空間簡單,具有以下問題:

1、對大空間(如下圍棋)這樣複雜的工作無法用有限的Q表來存儲,同時即使每個自由度的空間有限,但有多個維度,則Q表的複雜度增長是指數形式的。

2、在線學習並且一步只學習該次的數據,學習效率較低。


針對以上問題,趁着深度學習的熱潮,研究者們提出了Deep Q-Network這一結合了深度學習與強化學習的產物,可以說從一定意義上將強化學習拯救出了中看不中用的窘境。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章