跳到主要內容

這裏有一篇深度強化學習勸退文

這裏有一篇深度強化學習勸退文

 2018-02-25
本文作者 Frankenstein,首發於作者的知乎主頁
今天在學校又雙叒叕提到了 Deep Reinforcement Learning That Matters 這篇打響 DRL(Deep Reinforcement Learning, 深度強化學習)勸退第一槍的文章後,回來以後久違刷了一下推特,看到了這篇爆文 Deep Reinforcement Learning Doesn't Work Yet,或可直譯爲深度強化學習還玩不轉或意譯爲深度強化學習遠不能即插即玩。
看完以後很多從自己去年七月入坑以來隱隱約約的困惑都得到了解答。讀完大有如不見此文,萬古如長夜之感。心裏激動,一時難以自抑。知乎上深度強化學習的內容比較少,最好的私以爲是智能單元,此外還有許多零散的論文介紹、課程筆記、問答等等,但好像沒人提過這篇文章。這篇文章是我入坑以來看到的深度強化學習方面最好的階段性總結,強烈建議應該作爲深度強化學習的第一課,看完以後大家再慎重考慮到底要不要入坑。
先看一下作者的背景。作者叫 Alex Irpan,現爲谷歌大腦機器人團隊的軟件工程師。他從伯克利拿到的計算機科學本科學位,本科的時候曾經在伯克利人工智能實驗室(Berkeley AI Research (BAIR) Lab)進行本科科研,導師是 DRL 大牛 Pieter Abbeel,他還和 John Schulman 工作過。
這篇文章一上來就指出深度強化學習是個大坑。它的成功案例其實很少,但每個都太有名了,例如用 Deep Q Network(DQN)在 Atari games 上用原始像素圖片作爲狀態達到甚至超越人類專家的表現、通過左右互搏(self-play)等方式在圍棋上碾壓人類、大大降低了谷歌能源中心的能耗等等。造成的結果就是沒有從事過深度強化學習的研究人員對它產生了很大的錯覺,高估了它的能力,低估了它的難度。
強化學習本身是一個非常通用的人工智能範式,在直覺上讓人覺得非常適合用來模擬各種時序決策任務,如語音、文本類任務。當它和深度神經網絡這種只要給我足夠層和足夠多的神經元,可以逼近任何函數的非線性函數近似模型結合在一起感覺要上天啊,無怪乎 DeepMind 經常號稱人工智能=深度學習+強化學習。
然而 Alex 告訴我們別急,讓我們先來審視一些問題:
1.它的樣本利用率非常低。換言之爲了讓模型的表現達到一定高度需要極爲大量的訓練樣本。
2.最終表現很多時候不夠好。在很多任務上用非強化學習甚至非學習的其它方法,如基於模型的控制(model based control),線性二次型調節器(Linear Quadratic Regulator)等等可以獲得好得多的表現。最氣人的是這些模型很多時候樣本利用率還高。當然這些模型有的時候會有一些假設比如有訓練好的模型可以模仿,比如可以進行蒙特卡洛樹搜索等等。
3.DRL 成功的關鍵離不開一個好的獎勵函數(reward function),然而這種獎勵函數往往很難設計。在 Deep Reinforcement Learning That Matters 作者提到有時候把獎勵乘以一個常數模型表現就會有天和地的區別。但獎勵函數的坑爹之處還不止如此。獎勵函數的設計需要保證:
  • 加入了合適的先驗,良好的定義了問題和在一切可能狀態下的對應動作。坑爹的是模型很多時候會找到作弊的手段。Alex 舉的一個例子是有一個任務需要把紅色的樂高積木放到藍色的樂高積木上面,獎勵函數的值基於紅色樂高積木底部的高度而定。結果一個模型直接把紅色樂高積木翻了一個底朝天。仔啊,你咋學壞了,阿爸對你很失望啊。
  • 獎勵函數的值太過稀疏。換言之大部分情況下獎勵函數在一個狀態返回的值都是 0。這就和我們人學習也需要鼓勵,學太久都沒什麼回報就容易氣餒。都說 21 世紀是生物的世紀,怎麼我還沒感覺到呢?21 世紀纔剛開始呢。我等不到了啊啊啊啊啊。
  • 有的時候在獎勵函數上下太多功夫會引入新的偏見(bias)。
  • 要找到一個大家都使用而又具有好的性質的獎勵函數。這裏Alex沒很深入地討論,但鏈接了一篇陶神(Terence Tao)的博客,大家有興趣可以去看下。
4.局部最優/探索和剝削(exploration vs. exploitation)的不當應用。Alex舉的一個例子是有一個連續控制的環境裏,一個類似馬的四足機器人在跑步,結果模型不小心多看到了馬四腳朝天一頓亂踹後結果較好的情況,於是你只能看到四腳朝天的馬了。
5.對環境的過擬合。DRL 少有在多個環境上玩得轉的。你訓練好的 DQN 在一個 Atari game上work 了,換一個可能就完全不 work。即便你想要做遷移學習,也沒有任何保障你能成功。
6.不穩定性。
  • 讀 DRL 論文的時候會發現有時候作者們會給出一個模型表現隨着嘗試 random seed 數量下降的圖,幾乎所有圖裏模型表現最終都會降到 0。相比之下在監督學習裏不同的超參數或多或少都會表現出訓練帶來的變化,而 DRL 裏運氣不好可能很長時間你模型表現的曲線都沒有任何變化,因爲完全不 work。
  • 即便知道了超參數和隨機種子,你的實現只要稍有差別,模型的表現就可以千差萬別。這可能就是 Deep Reinforcement Learning That Matters 一文裏 John Schulman 兩篇不同文章裏同一個算法在同一個任務上表現截然不同的原因。
  • 即便一切都很順利,從我個人的經驗和之前同某 DRL 研究人員的交流來看只要時間一長你的模型表現就可能突然從很好變成完全不 work。原因我不是完全確定,可能和過擬合和 variance 過大有關。
特別是上述第六點,幾乎是災難性的。作者提到自己實習的時候一開始實現  Normalized Advantage Function (NAF),爲了找出 Theano 本身的 bugs 花了六週,這還是在 NAF 作者就在他旁邊可以供他騷擾的情況下的結果。原因就是DRL的算法很多時候在沒找好超參數的情況下就是不 work 的,所以你很難判斷自己的代碼到底有沒有 bug 還是運氣不好。
作者也回顧了 DRL 成功的案例,他認爲 DRL 成功的案例其實非常少,大體包括:
  1. 各類遊戲:Atari Games, Alpha Go/Alpha Zero/Dota2 1v1/超級馬里奧/日本將棋,其實還應該有 DRL 最早的成功案例,93年的西洋雙陸棋(backgammon)。
  2. DeepMind 的跑酷機器人。
  3. 爲 Google 的能源中心節能。
  4. Google 的 AutoML。
作者認爲從這些案例裏獲得的經驗教訓是 DRL 可能在有以下條件的情況下更可能有好的表現,條件越多越好:
  1. 數據獲取非常容易,非常 cheap。
  2. 不要急着一上來就攻堅克難,可以從簡化的問題入手。
  3. 可以進行左右互搏。
  4. 獎勵函數容易定義。
  5. 獎勵信號非常多,反饋及時。
他也指出了一些未來潛在的發展方向和可能性:
  1. 局部最優或許已經足夠好。未來某些研究可能會指出我們不必過於擔心大部分情況下的局部最優。因爲他們比起全局最優並沒有差很多。
  2. 硬件爲王。在硬件足夠強的情況下我們或許就不用那麼在乎樣本利用率了,凡事硬剛就可以有足夠好的表現。各種遺傳算法玩起來。
  3. 人爲添加一些監督信號。在環境獎勵出現頻次太低的情況下可以引入自我激勵(intrinsic reward)或者添加一些輔助任務,比如DeepMind就很喜歡這套,之前還寫了一篇 Reinforcement Learning with Unsupervised Auxiliary Tasks(https://arxiv.org/abs/1611.05397) 。LeCun 不是嫌蛋糕上的櫻桃太少嗎,讓我們多給他點櫻桃吧!
  4. 更多融合基於模型的學習從而提高樣本使用率。這方面的嘗試其實已經有很多了,具體可以去看 Alex 提到的那些工作。但還遠不夠成熟。
  5. 僅僅把 DRL 用於 fine-tuning。比如最初 Alpha Go 就是以監督學習爲主,以強化學習爲輔。
  6. 自動學習獎勵函數。這涉及到 inverse reinforcement learning 和 imitation learning。
  7. 遷移學習和強化學習的進一步結合。
  8. 好的先驗。
  9. 有的時候複雜的任務反而更容易學習。Alex 提到的例子是 DeepMind 經常喜歡讓模型學習很多同一環境的變種來減小對環境的過擬合。我覺得這也涉及 curriculum learning,即從簡單的任務開始逐步加深難度。可以說是層層遞進的遷移學習。另外一個可能的解釋是很多時候人覺得困難的任務和機器覺得困難的任務是相反的。比如人覺得倒水很簡單,你讓機器人用學習的路子去學倒水就可以很難。但反過來人覺得下圍棋很簡單而機器學習模型卻在下圍棋上把人擊敗了。
最後 Alex 總體還是非常樂觀的。他說盡管現在有很多困難,使得 DRL 或許還不是一個強壯(robust)到所有人都可以輕易加入的研究領域並且很多時候一些問題用DRL遠沒有監督學習簡單和表現好,但或許過幾年你再回來 DRL 就 work 了也未知啊。這還是很振奮人心的。田淵棟老師也表達過類似的想法,覺得正因爲這個領域還不夠成熟所以還有很多機會。他們都是了不起的研究人員。
看到這篇文章我總體是非常激動的。但實話說也有些遺憾,如果去年暑假就有這篇文章的話也許我就會再慎重考慮一下到底要不要在實驗室沒有積累自己又離畢業和申請不遠的情況下開始這樣一個主題了。這是一個教訓,就是開始一個領域前要對這個領域要有充分的瞭解,之前零零散散在網上也有了一點相關的聲音,比如 Karpathy 就提到他在實現 vanilla policy gradient 的時候也遇到了很多困難。
If it makes you feel any better, I’ve been doing this for a while and it took me last ~6 weeks to get a from-scratch policy gradients implementation to work 50% of the time on a bunch of RL problems. And I also have a GPU cluster available to me, and a number of friends I get lunch with every day who’ve been in the area for the last few years.

Also, what we know about good CNN design from supervised learning land doesn’t seem to apply to reinforcement learning land, because you’re mostly bottlenecked by credit assignment / supervision bitrate, not by a lack of a powerful representation. Your ResNets, batchnorms, or very deep networks have no power here.

[Supervised learning] wants to work. Even if you screw something up you’ll usually get something non-random back. RL must be forced to work. If you screw something up or don’t tune something well enough you’re exceedingly likely to get a policy that is even worse than random. And even if it’s all well tuned you’ll get a bad policy 30% of the time, just because.

Long story short your failure is more due to the difficulty of deep RL, and much less due to the difficulty of 「designing neural networks」.
但我一開始並沒有注意到。其實導師也一直有提到說他覺得我的 project 比較有風險,特別是他覺得現在除了 Berkeley, OpenAI,DeepMind 之外很少有 DRL 做的不錯的實驗室,這本身就表明這個方向可能有一些無形的門檻。現在我覺得這些可能包括計算資源和設備(機器人),對相關 trick 和坑瞭然於胸的相對資深的研究人員等等。客觀上這些地方的人綜合水平和工程能力也是強的讓人髮指,直接競爭非常困難。雖然我自己比較弱,但這些對於打算進入 DRL 的同學們都需要慎重考慮一下。
最後的最後還是要強推 Alex 的這篇文章,他列的這些點很多 DRL 的研究人員可能已經非常瞭解了,但之前沒有人這樣完整、有組織地介紹一遍。對於想要做 DRL 的同學們來說實在是福音。拙作是看完他文章後第一時間的感想和概括,對於我不夠了解的有些地方就一筆帶過了,或者表述也不夠準確。原文很長,我在對大部分內容比較熟悉的情況下看了一個半小時,但也很有意思,還是強烈推薦。
最後本文可能有些標題黨,並不是真的要完全勸退大家,Alex 的本意是希望大家更加冷靜地看待目前 DRL 研究的進展,避免重複踩坑。評論區裏有提到因爲困難纔有做的價值,還有機器人、控制論背景的朋友提到他覺得 drl can do anything 如果你有正確的超參數,這些意見也很值得大家參考。

留言

這個網誌中的熱門文章

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示 LIS   發表於 2017年11月16日 10:31   收藏此文 2017通訊大賽「聯發科技物聯網開發競賽」決賽於11月4日在台北文創大樓舉行,共有29個隊伍進入決賽,角逐最後的大獎,並於11月24日進行頒獎,現場會有全部進入決賽團隊的展示攤位,總計約為100個,各種創意作品琳琅滿目,非常值得一看,這次錯過就要等一年。 「聯發科技物聯網開發競賽」決賽持續一整天,每個團隊都有15分鐘面對評審團做簡報與展示,並接受評審們的詢問。在所有團隊完成簡報與展示後,主辦單位便統計所有評審的分數,並由評審們進行審慎的討論,決定冠亞季軍及其他各獎項得主,結果將於11月24日的「2017通訊大賽頒獎典禮暨成果展」現場公佈並頒獎。 在「2017通訊大賽頒獎典禮暨成果展」現場,所有入圍決賽的團隊會設置攤位,總計約為100個,展示他們辛苦研發並實作的作品,無論是想觀摩別人的成品、了解物聯網應用有那些新的創意、尋找投資標的、尋找人才、尋求合作機會或是單純有興趣,都很適合花點時間到現場看看。 頒獎典禮暨成果展資訊如下: 日期:2017年11月24日(星期五) 地點:中油大樓國光廳(台北市信義區松仁路3號) 我要報名參加「2017通訊大賽頒獎典禮暨成果展」>>> 在參加「2017通訊大賽頒獎典禮暨成果展」之前,可以先在本文觀看各團隊的作品介紹。 決賽29強團隊如下: 長者安全救星 可隨意描繪或書寫之電子筆記系統 微觀天下 體適能訓練管理裝置 肌少症之行走速率檢測系統 Sugar Robot 賽亞人的飛機維修輔助器 iTemp你的溫度個人化管家 語音行動冰箱 MR模擬飛行 智慧防盜自行車 跨平台X-Y視覺馬達控制 Ironmet 菸消雲散 無人小艇 (Mini-USV) 救OK-緊急救援小幫手 穿戴式長照輔助系統 應用於教育之模組機器人教具 這味兒很台味 Aquarium Hub 發展遲緩兒童之擴增實境學習系統 蚊房四寶 車輛相控陣列聲納環境偵測系統 戶外團隊運動管理裝置 懷舊治療數位桌曆 SeeM智能眼罩 觸...
opencv4nodejs Asynchronous OpenCV 3.x Binding for node.js   122     2715     414   0   0 Author Contributors Repository https://github.com/justadudewhohacks/opencv4nodejs Wiki Page https://github.com/justadudewhohacks/opencv4nodejs/wiki Last Commit Mar. 8, 2019 Created Aug. 20, 2017 opencv4nodejs           By its nature, JavaScript lacks the performance to implement Computer Vision tasks efficiently. Therefore this package brings the performance of the native OpenCV library to your Node.js application. This project targets OpenCV 3 and provides an asynchronous as well as an synchronous API. The ultimate goal of this project is to provide a comprehensive collection of Node.js bindings to the API of OpenCV and the OpenCV-contrib modules. An overview of available bindings can be found in the  API Documentation . Furthermore, contribution is highly appreciated....

完形心理學!?讓我們了解“介面設計師”為什麼這樣設計

完形心理學!?讓我們了解“介面設計師”為什麼這樣設計 — 說服客戶與老闆、跟工程師溝通、強化設計概念的有感心理學 — 情況 1 : 為何要留那麼多空白? 害我還要滾動滑鼠(掀桌) 情況 2 : 為什麼不能直接用一頁展現? 把客戶的需求塞滿不就完工啦! (無言) 情況 3: 這種設計好像不錯,但是為什麼要這樣做? (直覺大神告訴我這樣設計,但我說不出來為什麼..) 雖然世界上有許多 GUI 已經走得又長又遠又厲害,但別以為這種古代人對話不會出現,一直以來我們只是習慣這些 GUI 被如此呈現,但為何要這樣設計我們卻不一定知道。 由於 完形心理學 歸納出人類大腦認知之普遍性的規則,因此無論是不是 UI/UX 設計師都很適合閱讀本篇文章。但還是想特別強調,若任職於傳統科技公司,需要對上說服老闆,需要平行說服(資深)工程師,那請把它收進最愛;而習慣套用設計好的 UI 套件,但不知道為何這樣設計的 IT 工程師,也可以透過本文來強化自己的產品說服力。 那就開始吧~(擊掌) 完形心理學,又稱作格式塔(Gestalt)心理學,於二十世紀初由德國心理學家提出 — 用以說明人類大腦如何解釋肉眼所觀察到的事物,並轉化為我們所認知的物件。它可說是現代認知心理學的基礎,其貫徹的概念就是「整體大於個體的總合 “The whole is other than the sum of the parts.” —  Kurt Koffka」。 若深究完整的理論將會使本文變得非常的艱澀,因此筆者直接抽取個人認為與 UI 設計較為相關的 7 個原則(如下),並搭配實際案例做說明。有興趣了解全部理論的話可以另外 Google。 1. 相似性 (Similarity)  — 我們的大腦會把相似的事物看成一體 如果數個元素具有類似的尺寸、體積、顏色,使用者會自動為它們建立起關聯。這是因為我們的眼睛和大腦較容易將相似的事物組織在一起。如下圖所示,當一連串方塊和一連串的圓形並排時,我們會看成(a)一列方塊和兩列圓形(b)一排圓形和兩排三角形。 對應用到介面設計上,FB 每則文章下方的按鈕圖標(按讚 Like / 留言Comment / 分享 Share)雖然功能各不相同,但由於它們在視覺上顏色、大小、排列上的相似性,用戶會將它們視認為...