0
雷鋒網(wǎng) AI 科技評論按:本文作者 Frankenstein,首發(fā)于作者的知乎主頁,雷鋒網(wǎng) AI 科技評論獲其授權(quán)轉(zhuǎn)載。
今天在學(xué)校又雙叒叕提到了 Deep Reinforcement Learning That Matters 這篇打響 DRL(Deep Reinforcement Learning, 深度強化學(xué)習)勸退第一槍的文章后,回來以后久違刷了一下推特,看到了這篇爆文 Deep Reinforcement Learning Doesn't Work Yet,或可直譯為深度強化學(xué)習還玩不轉(zhuǎn)或意譯為深度強化學(xué)習遠不能即插即玩。
看完以后很多從自己去年七月入坑以來隱隱約約的困惑都得到了解答。讀完大有如不見此文,萬古如長夜之感。心里激動,一時難以自抑。知乎上深度強化學(xué)習的內(nèi)容比較少,最好的私以為是智能單元,此外還有許多零散的論文介紹、課程筆記、問答等等,但好像沒人提過這篇文章。這篇文章是我入坑以來看到的深度強化學(xué)習方面最好的階段性總結(jié),強烈建議應(yīng)該作為深度強化學(xué)習的第一課,看完以后大家再慎重考慮到底要不要入坑。
先看一下作者的背景。作者叫 Alex Irpan,現(xiàn)為谷歌大腦機器人團隊的軟件工程師。他從伯克利拿到的計算機科學(xué)本科學(xué)位,本科的時候曾經(jīng)在伯克利人工智能實驗室(Berkeley AI Research (BAIR) Lab)進行本科科研,導(dǎo)師是 DRL 大牛 Pieter Abbeel,他還和 John Schulman 工作過。
這篇文章一上來就指出深度強化學(xué)習是個大坑。它的成功案例其實很少,但每個都太有名了,例如用 Deep Q Network(DQN)在 Atari games 上用原始像素圖片作為狀態(tài)達到甚至超越人類專家的表現(xiàn)、通過左右互搏(self-play)等方式在圍棋上碾壓人類、大大降低了谷歌能源中心的能耗等等。造成的結(jié)果就是沒有從事過深度強化學(xué)習的研究人員對它產(chǎn)生了很大的錯覺,高估了它的能力,低估了它的難度。
強化學(xué)習本身是一個非常通用的人工智能范式,在直覺上讓人覺得非常適合用來模擬各種時序決策任務(wù),如語音、文本類任務(wù)。當它和深度神經(jīng)網(wǎng)絡(luò)這種只要給我足夠?qū)雍妥銐蚨嗟纳窠?jīng)元,可以逼近任何函數(shù)的非線性函數(shù)近似模型結(jié)合在一起感覺要上天啊,無怪乎 DeepMind 經(jīng)常號稱人工智能=深度學(xué)習+強化學(xué)習。
然而 Alex 告訴我們別急,讓我們先來審視一些問題:
1.它的樣本利用率非常低。換言之為了讓模型的表現(xiàn)達到一定高度需要極為大量的訓(xùn)練樣本。
2.最終表現(xiàn)很多時候不夠好。在很多任務(wù)上用非強化學(xué)習甚至非學(xué)習的其它方法,如基于模型的控制(model based control),線性二次型調(diào)節(jié)器(Linear Quadratic Regulator)等等可以獲得好得多的表現(xiàn)。最氣人的是這些模型很多時候樣本利用率還高。當然這些模型有的時候會有一些假設(shè)比如有訓(xùn)練好的模型可以模仿,比如可以進行蒙特卡洛樹搜索等等。
3.DRL 成功的關(guān)鍵離不開一個好的獎勵函數(shù)(reward function),然而這種獎勵函數(shù)往往很難設(shè)計。在 Deep Reinforcement Learning That Matters 作者提到有時候把獎勵乘以一個常數(shù)模型表現(xiàn)就會有天和地的區(qū)別。但獎勵函數(shù)的坑爹之處還不止如此。獎勵函數(shù)的設(shè)計需要保證:
加入了合適的先驗,良好的定義了問題和在一切可能狀態(tài)下的對應(yīng)動作??拥氖悄P秃芏鄷r候會找到作弊的手段。Alex 舉的一個例子是有一個任務(wù)需要把紅色的樂高積木放到藍色的樂高積木上面,獎勵函數(shù)的值基于紅色樂高積木底部的高度而定。結(jié)果一個模型直接把紅色樂高積木翻了一個底朝天。仔啊,你咋學(xué)壞了,阿爸對你很失望啊。
獎勵函數(shù)的值太過稀疏。換言之大部分情況下獎勵函數(shù)在一個狀態(tài)返回的值都是 0。這就和我們?nèi)藢W(xué)習也需要鼓勵,學(xué)太久都沒什么回報就容易氣餒。都說 21 世紀是生物的世紀,怎么我還沒感覺到呢?21 世紀才剛開始呢。我等不到了啊啊啊啊啊。
有的時候在獎勵函數(shù)上下太多功夫會引入新的偏見(bias)。
要找到一個大家都使用而又具有好的性質(zhì)的獎勵函數(shù)。這里Alex沒很深入地討論,但鏈接了一篇陶神(Terence Tao)的博客,大家有興趣可以去看下。
4.局部最優(yōu)/探索和剝削(exploration vs. exploitation)的不當應(yīng)用。Alex舉的一個例子是有一個連續(xù)控制的環(huán)境里,一個類似馬的四足機器人在跑步,結(jié)果模型不小心多看到了馬四腳朝天一頓亂踹后結(jié)果較好的情況,于是你只能看到四腳朝天的馬了。
5.對環(huán)境的過擬合。DRL 少有在多個環(huán)境上玩得轉(zhuǎn)的。你訓(xùn)練好的 DQN 在一個 Atari game上work 了,換一個可能就完全不 work。即便你想要做遷移學(xué)習,也沒有任何保障你能成功。
6.不穩(wěn)定性。
讀 DRL 論文的時候會發(fā)現(xiàn)有時候作者們會給出一個模型表現(xiàn)隨著嘗試 random seed 數(shù)量下降的圖,幾乎所有圖里模型表現(xiàn)最終都會降到 0。相比之下在監(jiān)督學(xué)習里不同的超參數(shù)或多或少都會表現(xiàn)出訓(xùn)練帶來的變化,而 DRL 里運氣不好可能很長時間你模型表現(xiàn)的曲線都沒有任何變化,因為完全不 work。
即便知道了超參數(shù)和隨機種子,你的實現(xiàn)只要稍有差別,模型的表現(xiàn)就可以千差萬別。這可能就是 Deep Reinforcement Learning That Matters 一文里 John Schulman 兩篇不同文章里同一個算法在同一個任務(wù)上表現(xiàn)截然不同的原因。
即便一切都很順利,從我個人的經(jīng)驗和之前同某 DRL 研究人員的交流來看只要時間一長你的模型表現(xiàn)就可能突然從很好變成完全不 work。原因我不是完全確定,可能和過擬合和 variance 過大有關(guān)。
特別是上述第六點,幾乎是災(zāi)難性的。作者提到自己實習的時候一開始實現(xiàn) Normalized Advantage Function (NAF),為了找出 Theano 本身的 bugs 花了六周,這還是在 NAF 作者就在他旁邊可以供他騷擾的情況下的結(jié)果。原因就是DRL的算法很多時候在沒找好超參數(shù)的情況下就是不 work 的,所以你很難判斷自己的代碼到底有沒有 bug 還是運氣不好。
作者也回顧了 DRL 成功的案例,他認為 DRL 成功的案例其實非常少,大體包括:
各類游戲:Atari Games, Alpha Go/Alpha Zero/Dota2 1v1/超級馬里奧/日本將棋,其實還應(yīng)該有 DRL 最早的成功案例,93年的西洋雙陸棋(backgammon)。
DeepMind 的跑酷機器人。
為 Google 的能源中心節(jié)能。
Google 的 AutoML。
作者認為從這些案例里獲得的經(jīng)驗教訓(xùn)是 DRL 可能在有以下條件的情況下更可能有好的表現(xiàn),條件越多越好:
數(shù)據(jù)獲取非常容易,非常 cheap。
不要急著一上來就攻堅克難,可以從簡化的問題入手。
可以進行左右互搏。
獎勵函數(shù)容易定義。
獎勵信號非常多,反饋及時。
他也指出了一些未來潛在的發(fā)展方向和可能性:
局部最優(yōu)或許已經(jīng)足夠好。未來某些研究可能會指出我們不必過于擔心大部分情況下的局部最優(yōu)。因為他們比起全局最優(yōu)并沒有差很多。
硬件為王。在硬件足夠強的情況下我們或許就不用那么在乎樣本利用率了,凡事硬剛就可以有足夠好的表現(xiàn)。各種遺傳算法玩起來。
人為添加一些監(jiān)督信號。在環(huán)境獎勵出現(xiàn)頻次太低的情況下可以引入自我激勵(intrinsic reward)或者添加一些輔助任務(wù),比如DeepMind就很喜歡這套,之前還寫了一篇 Reinforcement Learning with Unsupervised Auxiliary Tasks(https://arxiv.org/abs/1611.05397) 。LeCun 不是嫌蛋糕上的櫻桃太少嗎,讓我們多給他點櫻桃吧!
更多融合基于模型的學(xué)習從而提高樣本使用率。這方面的嘗試其實已經(jīng)有很多了,具體可以去看 Alex 提到的那些工作。但還遠不夠成熟。
僅僅把 DRL 用于 fine-tuning。比如最初 Alpha Go 就是以監(jiān)督學(xué)習為主,以強化學(xué)習為輔。
自動學(xué)習獎勵函數(shù)。這涉及到 inverse reinforcement learning 和 imitation learning。
遷移學(xué)習和強化學(xué)習的進一步結(jié)合。
好的先驗。
有的時候復(fù)雜的任務(wù)反而更容易學(xué)習。Alex 提到的例子是 DeepMind 經(jīng)常喜歡讓模型學(xué)習很多同一環(huán)境的變種來減小對環(huán)境的過擬合。我覺得這也涉及 curriculum learning,即從簡單的任務(wù)開始逐步加深難度??梢哉f是層層遞進的遷移學(xué)習。另外一個可能的解釋是很多時候人覺得困難的任務(wù)和機器覺得困難的任務(wù)是相反的。比如人覺得倒水很簡單,你讓機器人用學(xué)習的路子去學(xué)倒水就可以很難。但反過來人覺得下圍棋很簡單而機器學(xué)習模型卻在下圍棋上把人擊敗了。
最后 Alex 總體還是非常樂觀的。他說盡管現(xiàn)在有很多困難,使得 DRL 或許還不是一個強壯(robust)到所有人都可以輕易加入的研究領(lǐng)域并且很多時候一些問題用DRL遠沒有監(jiān)督學(xué)習簡單和表現(xiàn)好,但或許過幾年你再回來 DRL 就 work 了也未知啊。這還是很振奮人心的。田淵棟老師也表達過類似的想法,覺得正因為這個領(lǐng)域還不夠成熟所以還有很多機會。他們都是了不起的研究人員。
看到這篇文章我總體是非常激動的。但實話說也有些遺憾,如果去年暑假就有這篇文章的話也許我就會再慎重考慮一下到底要不要在實驗室沒有積累自己又離畢業(yè)和申請不遠的情況下開始這樣一個主題了。這是一個教訓(xùn),就是開始一個領(lǐng)域前要對這個領(lǐng)域要有充分的了解,之前零零散散在網(wǎng)上也有了一點相關(guān)的聲音,比如 Karpathy 就提到他在實現(xiàn) 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”.
來源:https://news.ycombinator.com/item?id=13519044
但我一開始并沒有注意到。其實導(dǎo)師也一直有提到說他覺得我的 project 比較有風險,特別是他覺得現(xiàn)在除了 Berkeley, OpenAI,DeepMind 之外很少有 DRL 做的不錯的實驗室,這本身就表明這個方向可能有一些無形的門檻?,F(xiàn)在我覺得這些可能包括計算資源和設(shè)備(機器人),對相關(guān) trick 和坑了然于胸的相對資深的研究人員等等??陀^上這些地方的人綜合水平和工程能力也是強的讓人發(fā)指,直接競爭非常困難。雖然我自己比較弱,但這些對于打算進入 DRL 的同學(xué)們都需要慎重考慮一下。
最后的最后還是要強推 Alex 的這篇文章,他列的這些點很多 DRL 的研究人員可能已經(jīng)非常了解了,但之前沒有人這樣完整、有組織地介紹一遍。對于想要做 DRL 的同學(xué)們來說實在是福音。拙作是看完他文章后第一時間的感想和概括,對于我不夠了解的有些地方就一筆帶過了,或者表述也不夠準確。原文很長,我在對大部分內(nèi)容比較熟悉的情況下看了一個半小時,但也很有意思,還是強烈推薦。
最后本文可能有些標題黨,并不是真的要完全勸退大家,Alex 的本意是希望大家更加冷靜地看待目前 DRL 研究的進展,避免重復(fù)踩坑。評論區(qū)里有提到因為困難才有做的價值,還有機器人、控制論背景的朋友提到他覺得 drl can do anything 如果你有正確的超參數(shù),這些意見也很值得大家參考。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。