Reinforcement Learning 學習筆記(三)DQN

        上回講到Q-learning的不便之處在於那張Q表有時候會過於龐大,使得存儲與搜索都成爲一件耗費巨大的事情。

        爲了改進這一缺陷,我們不妨思考一下維護這張Q表的目的是什麼?

        歸根結底我們是需要一個指引,即對當前狀態下的種種行爲進行打分的函數,只是在Q-learning中這種函數被以一一對應的方式給出了,這確實是一種極其佔用內存的方法試想如果我們將 y = x 這樣一個函數用(0,0),(1,1),(2,2)……這樣的表格保存,也將是一件極其龐大的工作。

        那麼這種從狀態、行爲空間映射到分數空間的函數除了通過表格存儲更新外還有什麼好的方法呢?深度學習火起來之後研究人員第一時間想到通過神經網絡來產生這一函數,在傳統深度學習方法中,神經網絡主要在起着“擬合”的作用,即去學習expert的工作方法,擬合expert。然而在深度強化學習中,並沒有一個expert去讓網絡擬合,那麼網絡通過什麼來學習呢?

        reward!又回到那個多次提到的話題,強化學習的根本驅動力是reward!因此reward在一個強化學習模型中起到了舉足輕重的作用,設計出一個好的reward是一件困難的事情。(因此有學者提出“逆強化學習”,通過輸入專家的示教動作來學習出什麼是好的reward,再用這個reward去做強化學習。)

        那麼DQN是怎樣將Deep這個關鍵點插入Q-learning中去的呢?

        與Q-learning相比,DQN主要的變動在於兩個地方:

             1、搜索方式發生了改變,原先是在Q表中搜索,如今通過在網絡中尋找最大值。

             2、更新方法發生了細微改變,原先的Q是從Q表中得到,現在的Q是神經網絡的輸出。

         除了這兩點,在DQN的基本框架上,經過一代代的優化,還做了幾點改進:

              1、不再採用單步學習這樣低效的方式,而是通過建立記憶庫對之前保存的經歷進行批量抽取,大大加快學習效率。

              2、在更新時計算現實的Q網絡如果採用和估計的網絡完全一樣的參數,可能會造成結果的搖擺不定,即穩定性不足,爲了改進該點,我們設計了一個如同temp的東西來每隔一段時間來存儲一下Q-Network,之後的一段時間內就一直採用之前存儲的那個版本來進行計算Q顯示,然後每隔一定的輪次對這個temp類似物進行刷新,這個方法被稱爲“fixed Q-target”


         那麼我們回頭看一看引入“深度”之後什麼變了,什麼沒有變?

         最爲引人注目的地方自然在於估計Q值的方式完全變了,從一張笨重的大表變成了一個小巧的網絡。大大減輕了存儲與搜索的代價。

         但同時我們也應該意識到,其實變化並沒有那麼大,核心的思想依然沒有變——立足當下估計未來,到了未來評估當下,在用兩者的誤差推動網絡的更新。開始時對未來有一個預期打分Q1,等真正到了未來,改得到的已經得到了,前途也看得更清晰一些,於是對自己又有了一個打分Q2,這兩個分數的誤差決定了模型的更新方向。

        這裏必須着重註解的一點在於reward和value(Q),reward是人工設定的一個好壞標準,每走一步都會獲得一個reward,而value則是真正指導agent選擇action的標準,有他的原因是人工設計的reward是對每一步來講的,很難在很久以前就考慮到未來的成功,例如對於走迷宮遊戲,人工設定的reward通常是走出迷宮的那一個點爲1,其他點爲0,那麼在廣大的迷宮內部reward統統爲零,是無法對agent的行動給出很好的指引的,但value不同,因爲從倒數第二步到最後一步時初始估計與後來達成中出現了一個reward=1,因此倒數第二步會在一定程度上提高分值,久而久之這種提高就會傳播到整個迷宮空間,因此value(Q)是可以對agent起到指導效果的。

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