深度強化學習的弱點和局限

作者:Alex Irpan

編者按:強化學習是機器學習中的一個領域,它強調如何基於環境而行動,以取得最大化的預期利益。近年來,強化學習的大型研究層見迭出,以AlphaGo為代表的成果不僅轟動了學術界,也吸引了媒體的目光。那麼強化學習真的是人工智慧的新希望嗎?春節期間,谷歌軟體工程師Alex Irpan引用了過去幾年Berkeley、Google Brain、DeepMind和OpenAI的論文,詳細介紹了強化學習的弱點和局限。

一次,我在Facebook上發了這樣一句話:

每當有人問我強化學習能否解決他們的問題時,我會說「不能」。而且我發現這個回答起碼在70%的場合下是正確的。

如今深度強化學習(Deep RL)已經被大量媒體宣傳包圍。從積極的角度看,強化學習(RL)稱得上是萬金油,而且它的效果好得令人難以置信,理論上講,一個強大的、高性能的RL系統應該能解決任何問題。在這基礎上,我們把深度學習的思想與之結合起來,這樣的嘗試是合適的。而且就當前的情況看,Deep RL是最接近AGI的事物之一,它也為吸引了數十億美元投資的「人工智慧夢」提供了助燃劑。

但不幸的是,Deep RL目前還有許多局限。

我相信Deep RL前途無限,如果不是,我也不會選擇它作為自己的努力方向。但是說實話,Deep RL還存在很多問題,而且許多問題從根源上就很難解決。表面上人們看到的是彷彿擁有智力的智能體漂亮地完成了任務,但它背後的血汗和淚水只有我們知道。

有好幾次,我看到有人被近期的Deep RL工作所吸引,然後毅然投身研究,但他們無一例外地低估了強化學習的深層困難。「玩具問題」並沒有他們想像中那麼容易,入門強化學習,很可能也就意味著將面對很多次徹底失敗,直到那些人在跌倒中學會如何設定現實的研究預期。

我希望能在未來看到更多深層次的RL研究,也希望這個領域能有源源不斷的新鮮血液,但是,我也希望這些新人能真正知道他們進入的是一個什麼樣的世界。

深度強化學習堪憂的採樣效率

雅達利遊戲是深度強化學習最著名的一個基準。正如Deep Q-Networks論文所示,如果將Q-Learning與合理大小的神經網路,以及一些優化技巧相結合,研究人員可以在幾個雅達利遊戲中實現與人類持平或超越人類的表現。

雅達利遊戲以每秒60幀的速度運行,那麼試想一下,如果要讓現在最先進的DQN達到人類玩家的水準,它需要多少幀?

答案取決於遊戲。我們可以先看看DeepMind近期的一篇論文:Rainbow: Combining Improvements in Deep Reinforcement Learning。這篇論文對原始DQN框架做了一些漸進式改進,證明他們的RainbowDQN性能更優。在實驗中,智能體進行了57場雅達利遊戲,並在40場中超越了人類玩家。

最上方的彩色曲線為RainbowDQN

上圖的y軸是人類玩家表現的中等水平得分,研究人員觀察了DQN在57場比賽的中的表現,計算了智能體得分情況,之後把人類表現作為衡量指標,繪製出智能體性能曲線。可以看到,RainbowDQN曲線的縱軸在1800萬幀時突破100%,也就是超越人類。這相當於83個小時的遊戲時間,其中包括訓練用時和真實遊戲用時,但在大多數時候,人類玩家上手雅達利遊戲可能只需要短短几分鐘。

需要注意的是,相比較Distributional DQN(橙線)的7000萬幀,其實RainbowDQN1800萬的成績稱得上是一個不小的突破。要知道僅在三年前,Nature刊登了一篇介紹了原始DQN(黃線)的強化學習論文,而它在實驗中的表現是在2億幀後還無法達到100%。

諾貝爾獎獲得者Kahneman和Tversky曾提出一個概念:規劃謬誤(planning fallacy)。它指的是人們對於完成某件事會持樂觀心裡,因此低估任務完成時間。Deep RL有其自身的規劃謬誤——學習策略需要的樣本往往比事先預想的多得多。

事實上雅達利遊戲並不是唯一的問題。強化學習領域另一個頗受歡迎的基準是MuJoCo基準測試,這是MuJoCo物理模擬器中的一組任務。在這些任務中,系統的輸入通常是某個模擬機器人每個關節的位置和速度。但即便是這麼簡單的任務,系統通常也要經過100000—10000000個步驟才能完成學習,它所需的經驗量大得驚人。

下面演示的是DeepMind的跑酷機器人,研究人員在論文Emergence of Locomotion Behaviours in Rich Environments中介紹稱實驗用了64名worker和100小時,雖然他們並沒有解釋worker是什麼,但我認為一個worker就相當於一個CPU。

觀看視頻請前往:深度強化學習的弱點和局限

DeepMind的成果很棒,這個視頻剛發布時,我還因強化學習能讓機器人學會跑步驚訝了許久。但在看過論文後,6400小時的CPU耗時還是有點令人沮喪。這不是說我認為它耗時過久,而是Deep RL的實際採樣效率還是比預想的高了幾個數量級,這一點更讓人失望。

這裡有一個問題:如果我們忽略採樣效率,後果會怎樣?如果只是為了獲取經驗,有時我們只需要調整幾個參數就可以了,遊戲就是一個很典型的例子。但是如果這個做法不管用了,那強化學習就會陷入艱難的境地。不幸的是,大多數現實世界的任務屬於後者。

如果只關心最終性能,其他方法效果更好

在為研究課題尋找解決方案時,研究人員往往要做出「抉擇」。一方面,他們可以只關心任務的完成效果,即優化一種性能最佳的方法;另一方面,他們也可以參考前人的成果,優化一種科研價值更高的方法,但它的最終效果不一定是最好的。理想的情況是兼顧性能最優和貢獻最大,但魚與熊掌不可兼得,這樣的研究課題可遇不可求。

談及更好的最終效果,Deep RL的表現有些不盡如人意,因為它實際上是被其他方法吊打的。下面是MuJoCo機器人的一個視頻,通過在線軌跡優化控制,系統可以近乎實時地在線進行計算,而無需離線訓練。需要提一點的是,這是2012年的成果。

觀看視頻請前往:深度強化學習的弱點和局限

這個視頻剛好可以拿來和跑酷視頻相比。兩篇論文最大的不同在於這篇論文使用的是模型預測控制,它可以針對地面實況世界模型(物理模擬器)進行規劃,而不構建模型的強化學習系統沒有這個規劃的過程,因此學習起來更困難。

換言之,如果直接針對某個模型進行規劃效果更好,那我們為什麼還要花精力去訓練RL策略?

同樣的,現成的蒙特卡洛樹搜索在雅達利遊戲中也能輕鬆超越DQN。2014年,密歇根大學的論文Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning被NIPS收錄,它研究的是在實時Atari遊戲中用離線蒙特卡洛樹搜索的效果。如下圖所示,研究人員把DQN的得分和UCT(UCT是如今MCTS的標準版本)智能體的得分相比較,發現後者的性能更加優秀。

需要注意的是,這又是一次不公平的對比,因為DQN不能搜索,而MCTS可以根據地面實況模型(雅達利模擬器)執行搜索。但是這種程度的不公平有時是不重要的,如果你只想得到一個好結果的話。

強化學習理論上可以用於任何事情,包括世界模型未知的環境。然而,這種通用性也是有代價的,就是我們很難把它用於任何有助於學習的特定問題上。這迫使我們不得不需要使用大量樣本來學習,儘管這些問題可能用簡單的編碼就能解決。

因此除少數情況外,特定領域的演算法會比強化學習更有效。如果你入門強化學習是出於對它的熱愛,這沒問題,但當你想把自己的強化學習成果和其他方法相比較時,你要做好心理準備。此外,如果你還對機器人這個問題感到費解,比如Deep RL訓練的機器人和經典機器人技術製作的機器人的差距究竟有多大,你可以看看知名仿生機器人公司的產品——如波士頓動力。

這個雙足機器人Atlas沒有用到任何強化學習技術,閱讀他們的論文可以發現,它用的還是time-varying LQR、QP solvers和凸優化這些傳統手段。所以如果使用正確的話,經典技術在特定問題上的表現會更好。

強化學習通常需要獎勵

強化學習的一個重要假設是存在獎勵,它能引導智能體向「正確」的方向前進。這個獎勵函數可以是研究人員設置的,也可以是離線手動調試的,它在學習過程中一般是一個固定值。之所以說「一般」,是因為有時也有例外,如模仿學習和逆RL,但大多數強化學習方法都把獎勵視為「預言」。

更重要的是,為了讓智能體做正確的事,系統的獎勵函數必須能準確捕捉研究人員想要的東西。注意,是準確。強化學習有一種惱人的傾向,就是如果設置的獎勵過度擬合你的目標,智能體會容易鑽空子,產生預期外的結果。這也是雅達利遊戲是一個理想基準的原因,因為遊戲不僅能提供大量樣本,每場比賽的目標都是最大限度地提高得分,所以我們不用擔心怎麼定義獎勵。

同樣的,MuJoCo由於是在在模擬中運行的,所以我們對目標的所有狀態了如指掌,獎勵函數容易設計,這也是它廣受歡迎的主要原因。

上圖是Reacher任務,我們需要控制連接到中心點(藍點)的這個手臂,讓手臂末端(橙點)與紅色目標物重合。由於所有位置都是已知的,我們可以把獎勵定義為手臂末端到目標的距離,再加上一個小的控制成本。理論上,如果感測器足夠靈敏,我們完全可以把這個任務放到現實環境中實現。但一旦涉及通過解決這個問題我們想讓系統做什麼,任務的獎勵就很難設計了。

當然,就其本身而言,有獎勵函數並不是什麼太大的問題,但是它之後會造成一些連鎖反應。

獎勵函數設計困難

設置一個回報函數不是什麼難事,但當你試圖設計一個獎勵函數來鼓勵想要的行動,同時仍想讓智能體不斷學習時,困難就隨之而來了。

在HalfCheetah環境中,我們有一個受限於一個垂直平面的雙足機器人,這意味著它只能向前或向後運動。

機器人的目標是學會跑步步態,獎勵是速度。這是一種形式化的獎勵,機器人越接近獎勵目標,系統給予的獎勵就越多。這和稀疏獎勵形成鮮明對比,因為這種獎勵只在目標狀態下給予獎勵,在其他任何地方則沒有獎勵。這種形式化的獎勵通常更容易促進學習,因為即使策略沒有找到解決問題的完整解決方案,它們也能提供積極的反饋。

不幸的是,形式化的獎勵也可能會影響學習效果。如前所述,它可能會導致機器人動作與預期不符。一個典型的例子是OpenAI的博文Faulty Reward Functions in the Wild,如下圖所示,這個賽艇遊戲的預定目標是完成比賽。你可以想像,一個稀疏的獎勵會在給定的時間內給予+1獎勵,否則獎勵為0。研究人員在這個遊戲中設置了兩種獎勵,一是完成比賽,二是收集環境中的得分目標。最後OpenAI的智能體找到了一片「農場」反覆刷分,雖然沒能完成比賽,但它的得分更高。

說實在的,這篇文章剛發布時,我有點氣憤,因為這並不是強化學習的問題,而是獎勵設置的問題。如果研究人員給出了奇怪的獎勵,強化學習的結果肯定也是奇怪的。但在寫這篇文章時,我發現這樣一個吸睛力很強的錯誤案例也很有用,因為每次提到這個問題,這個視頻就能被拿來做演示。所以基於這個前提,我會勉強承認這是篇「不錯」的博客。

強化學習演算法關注的是一個連續統一的過程,它假設自己或多或少地了解現在所處的環境。最廣泛的無模型強化學習和黑盒優化技術差不多,它只允許假設存在於MDP中,也就是智能體只會被簡單告知這樣做可以獲得獎勵+1,至於剩下的,它得自己慢慢摸索。同樣的,無模型強化學習也會面臨和黑盒優化技術一樣的問題,就是智能體會把所有獎勵+1都當做是積極的,儘管這個+1可能是走了邪門歪道。

一個典型的非強化學習例子是有人把遺傳演算法應用到電路設計中,並得到了一幅電路圖。在這個電路中,最終設計需要一個不連接的邏輯門。

圖中灰色單元需要接收正確的動作指令,包括左上角那個獨立的灰色單元

更多相關研究可以看Salesforce2017年的博客,他們研究的方向是自動生成文字摘要。他們把基準模型用監督學習進行訓練,然後使用一種名為ROUGE的自動化度量進行評估。ROUGE是不可微的,但強化學習可以處理其中的非微分獎勵,因此他們也嘗試著直接用強化學習來優化ROUGE。雖然實驗效果不錯,但文章並沒有給出詳細總結,以下是一個例子:

Button denied 100th race start for McLaren after ERS failure. Button then spent much of the Bahrain Grand Prix on Twitter delivering his verdict on the action as it unfolded. Lewis Hamilton has out-qualified and finished ahead of Mercedes team-mate Nico Rosberg at every race this season. Bernie Ecclestone confirms F1 will make its bow in Azerbaijan next season.

儘管強化學習模型評分最高,但是他們最後還是用了別的模型……

另一個有趣的例子是2017年波波夫等人的「樂高堆疊」論文。研究人員用分散式的DDPG來學習掌握學習策略,在他們的實驗中,機器人的目標是抓住紅色樂高積木,並把它堆疊到藍色積木上方。

他們的研究總體上取得了成功,但也存在一些失敗的地方。對於一開始的提升動作,研究人員設置的獎勵是紅色積木的高度,也就是紅色積木底面的z軸數值,在學習過程中,機器人發現簡單地把積木翻轉過來,凸點面朝下,也能獲得相當的獎勵。

解決這一問題的方法是把獎勵變得稀疏,只在機器人把積木堆疊起來後再給予回報。當然,有時候這是有效的,因為稀疏的獎勵也可以促進學習。但一般情況下,這種做法並不可取,因為積極獎勵的缺乏會讓學習經驗難以穩固,從而訓練困難。另一種解決方法則是更小心地設置獎勵,增加新的獎勵條件或調整現有的獎勵係數,直到機器人不再走任何捷徑。但這種做法本質上是人腦和強化學習的博弈,是一場無情的戰鬥,雖然有時候「打補丁」是必要的,但是我從來沒有覺得自己能從中學到什麼。

如果你不信,可以看看「樂高堆疊」的獎勵函數做個參考:

我不知道他們在設計這個獎勵上花了多少時間,但是根據條件數量和不同係數的數量,我猜測這個數值會「很高」。

在與其他強化學習方向的研究人員交流時,我也聽到了許多關於不當獎勵設置的軼事:

  • 某人正在訓練機器人室內導航。如果智能體走出「房間」,情節就會終止,系統判定機器人為「自殺」,不會有任何負面獎勵。訓練到最後,機器人幾乎每次都選擇「不活了」,因為積極獎勵太難獲取,而負面獎勵又異常豐富,對它來說,0獎勵快速終止是一種更可取的方法。
  • 某人正在訓練一個模擬機器人手臂,以讓它達到桌面上的一個點。這個實驗出現問題的關鍵在於有沒有定義桌子,這是個移動的桌子還是被固定在某地的桌子。經過長時間訓練,智能體習得的最佳策略是猛砸桌子,使桌子翻倒並讓目標點自動滾到手臂末端。
  • 某人正在訓練讓機器人用鎚子錘釘子。剛開始的時候,他們定義的獎勵是釘子推入洞孔的距離,因此機器人完全忽視了鎚子,而是用四肢不斷敲打釘子。後來,他們增加了一些獎勵條件,如鼓勵機器人拿起鎚子,重新訓練後,機器人學會了撿起鎚子,但它又馬上扔掉了,繼續用四肢敲敲打打。

不可否認,這些都是道聽途說,並沒有現成的視頻或論文佐證,但以我多年被強化學習「坑害」的經驗來看,它們都合情合理。我也認識那些喜歡談論諸如「回形針產量最大化」故事的人,我真的理解他們的恐懼,但像這樣通過假想超現實的AGI來編造一起「毀滅人類」故事的套路實在令人心生厭煩。尤其是當上述這些傻乎乎的案例一次次地出現在我們面前。

最合理的獎勵也不能避免局部最優

之前的這些強化學習案例被稱為「獎勵黑客」(reward hacking),對我而言,這其實就是一個聰明的開箱即用解決方案,智能體最終能獲得比研究者預期值更多的獎勵。當然,獎勵黑客其實只是一些例外,強化學習中更常見的問題是因為「獲取觀察值—採取行動」這一流程出現錯誤,導致系統得到局部最優解。

下圖是一個HalfCheetah環境中的Normalized Advantage Function的實現,它很典型:

從旁觀者的角度看,這個機器人有點傻。但我們也只能評論它「傻」,因為我們站在上帝視角,並且擁有大量先驗知識。我們都知道用腳跑步更合理,但是強化學習不知道,它看到的是一個狀態向量、自己即將採取的動作向量,以及之前獲得的獎勵而已。

在學習過程中,智能體是這麼想的:

  • 在隨機探索過程中,前進策略不站著不動更好;
  • 自己可以一直持續這種行為,所以保持前進狀態;
  • 策略實施後,如果一下子用更大的力,自己會做後空翻,這樣得分更高;
  • 做了足夠多的後空翻後,發現這是一個刷分的好主意,所以把後空翻納入已有策略中;
  • 如果策略持續倒退,哪一種會更容易?是自我修正然後按「標準方式」運行,還是學會在仰卧時用背部前進?選擇後者。

這之中的思路很有趣,但決不是研究人員所期待的。

另一個失敗案例來自我們之前提到過的Reacher。

在這個任務中,最初的隨機權重會傾向於輸出高度正面或者高度負面的動作輸出,也就是大部分動作會輸出最大或最小的加速度。這就出現一個問題,就是這個連桿機械臂一不小心就會高速旋轉,只要在每個關節輸入最大力,它就會轉得完全停不下來。在這種情況下,一旦機器人開始訓練,這種沒有多大意義的狀態會使它偏離當前策略——為了避免這種情況的發生,你必須實現做一些探索來阻止不停旋轉。雖然理論上這是可行的,但是動圖中的機器人沒能做到。

這些就是經典的探索—利用困境(exploration-exploitation dilemma),它是困擾強化學習的一個常見問題:你的數據來源於你當前的策略,但如果當前策略探索得過多,你會得到一大堆無用數據並且沒法從中提取有效信息。而如果你進行過多的嘗試(利用),那你也無法找到最佳的動作。

對於解決這個問題,業內有幾個直觀而簡便的想法:內在動機、好奇心驅動的探索和基於計數的探索等。這些方法中有許多早在20世紀80年代以前就被提出,其中的一些方法甚至已經被用深度學習模型進行過重新審視,但它們並不能在所有環境中都發揮作用。我一直在期待一種通用型更強的探索技巧,相信在之後的幾年內,行業內就能給出更好的答案。

我曾把強化學習想像成一個滿懷惡意的對象,它故意曲解你的獎勵,之後再積極尋找最偷懶的局部最優解。雖然聽起來有點荒謬,但這實際上還是一個蠻貼切的形容。

Deep RL起作用時,它可能只是過度適應環境中的怪異模式

強化學習是受歡迎的,因為它是唯一一個可以只在測試集上進行訓練的機器學習網路。

強化學習的一個好處在於,如果你想在一個環境中表現更好,你可以瘋狂地過擬合。但是這樣做的缺點是這個系統只在特定任務中起作用,如果你想擴展到其他環境,對不起做不到。

DQN可以解決很多雅達利遊戲問題,但它的做法是把所有學習中在一個目標上——在一個遊戲中獲得非常出色的效果,因此它的最終模型不適用於其他遊戲。你可以微調參數,讓已經訓練好的模型適應新的遊戲(論文:Progressive Neural Networks),但你並不能保證它能轉化,而且人們一般不指望它能轉化。因為從預訓練的ImageNet圖像來看不是很有效。

當然,有些人對此會持不同想法。的確,原則上來說如果在廣泛分布的環境中訓練,模型應該能避免這些問題,導航就是一個例子,您可以隨機抽樣目標位置,並使用通用值函數進行概括(Universal Value Function Approximators)。我覺得這項工作非常有前途,稍後會給出更多這方面的例子,但是,我依然認為Deep RL的泛化能力不足以處理多種任務。雖然它的「感知」更敏銳了,但它還沒有到達「用於控制ImageNet」的水平,OpenAI Universe試圖挑戰這一點,但它現在還有諸多局限。

在高度泛化的Deep RL到來之前,我們現在面對的還是適應面十分狹小的學習策略。對此,我參與的論文Can Deep RL Solve Erdos-Selfridge-Spencer Games?可以提供一個合適的案例。我們研究的是一個雙人組合的玩具遊戲,它只有一個封閉式的解決方案來獲得最佳成果。在第一個實驗中,我們保持玩家1不變,並用強化學習演算法訓練玩家2,這實際上是把玩家1作為環境的一部分。通過玩家2和玩家1的對抗,最後我們得到了最佳性能的玩家2。但當我們反過來訓練玩家1時,我們卻發現它的表現越來越差,因為它只會對抗最佳的玩家2,而不會對抗非最佳的其他情況。

Marc Lanctot等人被NIPS 2017收錄的論文A Unified Game-Theoretic Approach to Multiagent Reinforcement Learning也展示了類似的結果。下圖中有兩個智能體正在玩laser tag(激光槍遊戲),它們的訓練方式是多智能體的強化學習。為了檢測系統的通用性,研究人員用5個種子隨機生成的智能體進行遊戲,以下是固定一個玩家,並用強化學習訓練另一個玩家的結果:

可以發現,玩家1和玩家2相互靠近,並朝對方射擊。之後,研究人員把這個實驗中的玩家1放進另一個實驗去對抗玩家2。訓練結束後,理論上應該學會所有對抗策略的玩家們卻變成了這樣:

這似乎是多智能體強化學習的一個特點:當智能體互相訓練時,他們會共同進化;智能體善於對抗,但當它是和一個看不見的對手一起訓練時,它的性能則會下降。以上兩張動圖用了相同的學習演算法、相同的超參數,它們的唯一區別是前者用了隨機種子,它的發散行為完全來自初始條件下的隨機性。

話雖如此,這類競爭遊戲環境也有一些看似矛盾的結果。OpenAI的這篇博客Competitive Self-Play介紹了他們在這方面的研究進展,自我博弈也是AlphaGo和AlphaZero的重要組成部分。對此我的猜想是,如果智能體以同樣的速度學習,它們可以互相對抗彼此並加速自己進化,但是,如果其中一方學習速度較快,它就會過多利用較落後的另一方並導致過擬合。這看似容易解決,但當你把對稱博弈改成一般的多智能體對抗時,你就知道確保相同的學習速率有多困難。

Deep RL不穩定,結果難以重現

超參數會影響學習系統的行為,它幾乎存在於所有機器學習演算法中,通常是手動設置或隨機搜索調試的。監督學習是穩定的:固定的數據集、實時目標。如果你稍微改變超參數,它不會對整個系統的性能造成太大影響。雖然超參數也有好有壞,但憑藉研究人員多年來積累的經驗,現在我們可以在訓練過程中輕鬆找到一些反映超參數水平的線索。根據這些線索,我們就能知道自己是不是已經脫離正軌,是該繼續訓練還是回頭重新設計。

但是目前Deep RL還很不穩定,這也成了制約研究的一個瓶頸。

剛進Google Brain時,我做的第一件事是根據NAF演算法論文重現他們的演算法。我想著自己能熟練使用Theano(方便轉成TensorFlow),也有不少Deep RL經歷,論文的一作也在Google Brain,我可以隨時向他請教,這樣的天時地利人和,2—3周應該就能搞定了吧。

但事實證明,我花了6周時間才重現了他們的結果。失敗的原因主要是一些軟體bug,但重點是,為什麼要這麼長時間?

對於這個問題,我們可以先看OpenAI Gym中最簡單的任務:Pendulum。Pendulum有一個錨點固定在一點上的鐘擺,向擺錘施加力後它會擺動起來。它的輸入狀態是三維的(鐘擺的位置和速度),動作空間是一維的(向擺錘施加的力),我們的目標是完美平衡鐘擺。它的實現方法很簡單,既然要讓鐘擺接近垂直(倒立),那我們就可以針對鐘擺和垂直方向的夾角來設置獎勵:夾角越小,獎勵越高。由此可知獎勵函數是凹形的。

一個幾近成功的策略,雖然它沒有做到完全倒立,但它會輸出抵消重力所需的扭矩

下圖是我修正所有bug後得到的一張性能曲線圖,每一條線都是獨立跑了10次計算出來的,它們用了同樣的超參數,但隨機種子不同。

可以發現,10個actor中只有7個起作用了。其實30%的失敗率也還算正常,讓我們來看Variational Information Maximizing Exploration這篇論文的結果,他們的環境是HalfCheetah,獎勵稀疏,圖中y軸是episode獎勵,x軸是時間步長,使用的演算法是TRPO。

深色曲線是10個隨機種子的表現中值,陰影部分則表示25%—75%。首先要聲明一點,這張圖是支持VIME的一個很好的論據,但就是這樣一個表現非常好的實驗,它在25%的時間內獎勵一直接近0,也就是有25%的失敗率,而且原因僅僅是因為隨機種子。

所以雖然監督學習很穩定,但在少數情況下它也有例外。如果我的監督學習代碼有30%的概率不能擊敗隨機情況,那我可以確信是代碼出了問題。但是如果這是強化學習,那我就不知道這些bug是因為超參數還是只是因為我臉不好。

上圖來自一篇文章「為什麼機器學習這麼難?」,作者的核心觀點是機器學習會為失敗案例空間增加許多維度,這些維度進一步豐富了失敗的種類方式。而Deep RL的在強化學習基礎上又增加了一個「隨機」的新維度,它的唯一應對之法就是在問題上投入更多的實驗來減少雜訊數據。

之前提到了,Deep RL演算法原本就存在採樣效率低、訓練結果不穩定等問題,隨機維度無疑是雪上加霜,會大大降低最後的成果率。也許原本我們只要跑100萬步,但乘上5個隨機種子,再加上超參數調整後,光是檢驗假設我們都要爆炸級的計算量。

Andrej Karpathy還在OpenAI時曾說過這樣一段話:

給你一個安慰。我之前在處理一系列強化學習問題時,要花50%的時間,也就是差不多6周重新建立策略梯度。那會兒我已經干這行很久了,還有一個GPU陣列可以用,而且還有一大幫關係很好的經驗老道的專家朋友可以天天見面。 但我發現對於強化學習這個領域,自己從監督學習上學到的所有關於CNN的設計理論好像都沒什麼用。什麼credit assignment、supervision bitrate,完全沒有用武之地;什麼ResNets、batchnorms、深層網路,完全沒有話語權。 在監督學習里,如果我們想要實現什麼,即使最後做的很糟糕,我們還是能總結一些非隨機性的東西。但是強化學習不是這樣的,如果函數設計錯了,或者超參數沒調好,那最後的結果可能比隨機生成的都差。而且就是因為它是強化學習,即使一切條件都很完美,我們還會有30%的失敗率。 簡而言之,你的失敗不是因為選了神經網路這條路,而是因為選了Deep RL這條不歸路。

隨機種子就像放入礦坑檢查氣體是否有毒的金絲雀,它尚且能導致這樣大的差異,那麼如果我們的代碼出現偏差,最後的結果可想而知……當然,一個好消息是,我們不用自己絞盡腦汁想像,因為有人幫我們想好了—— Deep Reinforcement Learning That Matters。他們給出的結論是:

  • 將獎勵和常數相乘可能會對性能造成顯著影響;
  • 5個隨機種子(論文常用標準)可能不足以說明問題,因為仔細篩選後可以得到非重疊的置信區間;
  • 即使使用全部相同的超參數、演算法,不同實現在解決同一任務時也會出現性能不一的情況。

我對此的看法是,強化學習對初始化過程和訓練過程中發生的變化非常敏感,因為所有數據都是實時收集的,而我們唯一可以監控的指標——獎勵,是一個標量。隨機表現出色的策略會比隨機不適用的策略更快地被啟用,而好的策略如果沒能及時給出優秀案例,那強化學習會貿然斷定它的所有表現都是差的。

Deep RL的落地應用

不可否認,Deep RL現在看起來是一個非常cool的領域,尤其是在新聞宣傳方面。試想一下,單個模型只用原始圖像就能學習,還無需為每個遊戲單獨調整,再想想AlphaGo和AlphaZero,是不是到現在還有點小激動?

但是,除了這幾個成功的案例,我們很難再找到其他具有現實價值的Deep RL應用案例。

我也考慮過如何把Deep RL技術用於現實生活,生活的、生產的,最後發現實現起來太過困難。最後,我只找到兩個看起來有點前途的項目——一個是降低數據中心耗電量,另一個則是最近剛提出的AutoML Vision工作。兩個都是谷歌的項目,但OpenAI之前也提出過類似後者的東西。

據我所知,奧迪也在嘗試強化學習方面的探索,他們在NIPS上展示了一輛自動駕駛汽車,據說使用了Deep RL技術。另外也有基於Deep RL的文本摘要模型、聊天機器人、廣告投放,但一旦涉及商用,即便真的已經做到了,現在他們也會「理智」地選擇沉默。

所以Deep RL現在還只是一個狹窄的、比較熱門的研究領域,你可以猜測大公司存在什麼商業陰謀,但作為業內人士,我覺得這個的可能性不大。

展望未來

學術圈有句老話——每個科研人員都必須學會如何憎恨自己研究的領域。它的梗在於大多數科研人員是出於熱情和興趣從事這項工作的,他們不知疲倦。

這大概也是我在研究強化學習過程中的最大體驗。雖然只是我個人的想法,但我依然覺得我們應該把強化學習擴展到更豐富的領域,甚至到那些看起來沒有應用空間的問題上。我們應該把強化學習研究得更透徹。

以下是我認為有助於Deep RL實現進一步發展的一些條件:

  • 易於產生近乎無限的經驗;
  • 把問題簡化稱更簡單的形式;
  • 將自我學習引入強化學習;
  • 有一個清晰的方法來定義什麼是可學習的、不可取消的獎勵;
  • 如果獎勵必須形成,那它至少應該是種類豐富的。

下面是我列出的一些關於未來研究趨勢的合理猜測 ,希望未來Deep RL能帶給我們更多驚喜。

  • 局部最優就足夠了。我們一直以來都追求全局最優,但這個想法會不會有些自大呢?畢竟人類進化也只是朝著少數幾個方向發展。也許未來我們發現局部最優就夠了,不用盲目追求全局最優;
  • 代碼不能解決的問題,硬體來。我確信有一部分人認為人工智慧的成就源於硬體技術的突破,雖然我覺得硬體不能解決所有問題,但還是要承認,硬體在這之中扮演著重要角色。機器運行越快,我們就越不需要擔心效率問題,探索也更簡單;
  • 添加更多的learning signal。稀疏獎勵很難學習,因為我們無法獲得足夠已知的有幫助的信息;
  • 基於模型的學習可以釋放樣本效率。原則上來說,一個好模型可以解決一系列問題,就像AlphaGo一樣,也許加入基於模型的方法值得一試;
  • 像參數微調一樣使用強化學習。第一篇AlphaGo論文從監督學習開始,然後在其上進行RL微調。這是一個很好的方法,因為它可以讓我們使用一種速度更快但功能更少的方法來加速初始學習;
  • 獎勵是可以學習的。如果獎勵設計如此困難,也許我們能讓系統自己學習設置獎勵,現在模仿學習和反強化學習都有不錯的發展,也許這個思路也行得通;
  • 用遷移學習幫助提高效率。遷移學習意味著我們能用以前積累的任務知識來學習新知識,這絕對是一個發展趨勢;
  • 良好的先驗知識可以大大縮短學習時間。這和上一點有相通之處。有一種觀點認為,遷移學習就是利用過去的經驗為學習其他任務打下一個良好的基礎。RL演算法被設計用於任何馬爾科夫決策過程,這可以說是萬惡之源。那麼如果我們接受我們的解決方案只能在一小部分環境中表現良好,我們應該能夠利用共享來解決所有問題。之前Pieter Abbeel在演講中稱Deep RL只需解決現實世界中的任務,我贊同這個觀點,所以我們也可以通過共享建立一個現實世界的先驗,讓Deep RL可以快速學習真實的任務,作為代價,它可以不太擅長虛擬任務的學習;
  • 難與易的辨證轉換。這是BAIR(Berkeley AI Research)提出的一個觀點,他們從DeepMind的工作中發現,如果我們向環境中添加多個智能體,把任務變得很複雜,其實它們的學習過程反而被大大簡化了。讓我們回到ImageNet:在ImageNet上訓練的模型將比在CIFAR-100上訓練的模型更好地推廣。所以可能我們並不需要一個高度泛化的強化學習系統,只要把它作為通用起點就好了。

原文地址:www.alexirpan.com/2018/02/14/rl-hard.html

某號地址:深度強化學習的弱點和局限(如果你願意關注我們一下~)


推薦閱讀:

TAG:深度學習DeepLearning | 強化學習ReinforcementLearning | 人工智慧 |