OpenAI發布DQN實現,提出5點做強化學習模型的最佳方法
李林 編譯整理
量子位 報道 | QbitAI 出品
今天,馬斯克和YC總裁Altman等創辦的人工智慧非營利組織OpenAI,發布了DQN及其三個變體的TensorFlow實現,以及根據復現過程總結的強化學習模型最佳實現方法。
以下是OpenAI博客文章的主要內容,量子位編譯:
我們宣布開源OpenAI Baselines,這是我們內部對發表論文的復現,結果能與論文所公布的相媲美。今天要發布的,包括DQN和它的三個變體。接下來的幾個月里,我們將繼續發布這些演算法。
復現強化學習的結果並非易事:模型的性能有很多雜訊、演算法的活動件可能包含微小的bug、很多論文也沒有寫明復現所需的所有技巧。要正確地實現一個強化學習模型,往往需要修復很多不起眼的bug。
我們計劃發布一些效果良好的實現,並寫明完成這些實現的過程,藉此來確保明顯的RL進步,不是與現有演算法的錯誤版本或未經微調的版本進行比較得來的。
最佳方法
與隨機基準相比
下圖中的agent,正在遊戲H.E.R.O.中進行隨機行動,如果你在訓練早期看見這樣的行為,很可能相信agent正在學習。所以,你總是應該驗證自己的agent是否比隨機行動更強。
GIF/1266K
警惕不嚴重的bug
我們看了十個流行的強化學習演算法復現的樣本,其中六個有社區成員發現提交,並獲得作者確認的微小bug。
這些bug有的非常輕微,有的是忽略了梯度,有的甚至會虛報得分。
從agent的角度看世界
和大多數深度學習方法一樣,我們在訓練DQN時,也會將環境圖像轉換為灰度,以降低計算量。這有時候會帶來bug。我們在Seaquest上運行DQN演算法時,發現自己的實現表現不佳。當我們檢查環境時,發現這是因為處理成灰度的圖像上根本看不見魚,如下圖所示。
遊戲Seaquest的三個圖像。左圖顯示原始圖像,中間顯示已經轉換為灰度的版本,魚不見了,右側顯示經調整讓魚可見的的灰度版本。
當將屏幕圖像轉換為灰度圖像時,我們錯誤地調整了綠色值的係數,導致魚的消失。在注意到這個bug之後,我們調整了顏色值,就又可以看見魚了。
為了將來能調試這樣的問題,我們的強化學習工具包gym現在有播放功能,讓研究者輕鬆地看到與AI agent相同的觀察結果。
修復bug,然後調整超參數
bug修完,就該開始調整超參數了。我們最終發現,為控制探索率的超參數epsilon設定退火程序對性能有很大的影響。我們的最終實現方法在前100萬步中將epsilon降至0.1,然後在接下來的2400萬步中降至0.01。如果我們的實現有bug,就可能會為了應對沒有診斷出的錯誤,而提出不同的超參數。
仔細檢查你對論文的解讀
在Nature上發表的DQN論文中,作者寫道:
We also found it helpful to clip the error term from the update […] to be between -1 and 1.
這句話有兩種解釋:一是裁剪目標,二是在計算梯度時裁剪乘法項。前者似乎更自然,但是一個DQN實現顯示,它會導致次優性能。所以說,後者才是正確的,有一個簡單的數學解釋:胡伯損失。你可以通過檢查梯度是否符合預期,來發現這些錯誤,用TensorFlow的compute_gradients命令就能輕鬆完成。
文章中提到的大多數錯誤都是通過多次遍歷代碼,並思考每行可能出錯的情況發現的。每個bug在事後看起來都是顯而易見的,但是即使是經驗豐富的研究人員,也會低估檢查多少遍代碼中,才能找到實現中的所有錯誤。
Deep Q-Learning
我們的實現基於Python 3和TensorFlow。今天發布的實現包括DQN和它的三個變體:
DQN:強化學習演算法,將Q-Learning與深層神經網路結合起來,使強化學習適用於複雜,高維度的環境,如視頻遊戲或機器人。
Double Q Learning:修正了傳統DQN演算法有時會高估與特定行為相關價值的趨勢。
Prioritized Replay:通過在真正的獎勵與預期獎勵明顯不同時學習重播記錄,來擴展DQN的經歷重播功能,讓agent在做出不正確假設時進行調整。
決鬥DQN(Dueling DQN):將神經網路分為兩個,一個學習提供每個時間步長值的估計,另一個計算每個動作的潛在優勢,兩個組合為一個action-advantage Q function。
GitHub地址:
https://github.com/openai/baselines
基準
我們提供一個iPython筆記本,顯示了我們的DQN實現在Atari遊戲上的性能。上圖是各種演算法的性能比較。
IPython筆記:
https://github.com/openai/baselines-results/blob/master/dqn_results.ipynb
【完】
招聘
量子位正在招募編輯記者、運營、產品等崗位,工作地點在北京中關村。相關細節,請在公眾號對話界面,回復:「招聘」。
One More Thing…
今天AI界還有哪些事值得關注?在量子位(QbitAI)公眾號對話界面回復「今天」,看我們全網搜羅的AI行業和研究動態。筆芯~
另外,歡迎加量子位小助手的微信:qbitbot,如果你研究或者從事AI領域,小助手會把你帶入量子位的交流群里。
掃碼強行關注『量子位』
追蹤人工智慧領域最勁內容


※輸了!柯潔首戰告負AlphaGo,哈薩比斯:這不是人機大戰
TAG:量子位 |
※業界 | OpenAI提出新型元學習方法EPG,調整損失函數實現新任務上的快速訓練
※TU Ilmenau提出新型Complex-YOLO,實現點雲上實時3D目標檢測
※最大化互信息來學習深度表示,Bengio等提出Deep INFOMAX
※DeepMind提出SPIRAL:使用強化對抗學習,實現會用畫筆的智能體
※商湯聯合提出基於FPGA的快速Winograd演算法:實現FPGA之上最優的CNN表現與能耗
※FAIR聯合INRIA提出DensePose-RCNN,更好地實現人體姿態估計
※UNC&Adobe提出模塊化注意力模型MAttNet,解決指示表達的理解問題
※最佳學生論文:EPFL&FAIR提出QuaterNet,更好地解決人類動作建模問題
※AI 造圖新境界!OpenAI 提出的可逆生成模型,比 GAN 更具潛力?
※效果驚艷!FAIR提出人體姿勢估計新模型,升級版Mask-RCNN
※EMNLP 2018 | Google AI提出「透明注意力」機制,實現更深層NMT模型
※下一個GAN?OpenAI提出可逆生成模型Glow
※曠視等提出GIF2Video:首個深度學習GIF質量提升方法
※OpenAI提出Reptile:可擴展的元學習演算法
※3D形狀補全新突破:MIT提出結合對抗學習形狀先驗的ShapeHD
※如何將GPU性能提升4-5倍?創新奇智提出基於NVRAM TPS的Helper Warp方法
※最佳學生論文:EPFL&FAIR提出QuaterNet,解決人類動作建模問題
※OpenAI提出新型元學習方法,調整損失函數實現新任務上的快速訓練
※Google AI提出物體識別新方法:端到端發現同類物體最優3D關鍵點——NeurIPS 2018提前看
※BMVC 2018 | 最佳學生論文:EPFL&FAIR提出QuaterNet,更好地解決人類動作建模問題