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