編者按:強化學習是機器學習中的一個領域,它強調如何基於環境而行動,以取得最大化的預期利益。近年來,強化學習的大型研究層見迭出,以AlphaGo爲表明的成果不只轟動了學術界,也吸引了媒體的目光。那麼強化學習真的是人工智能的新但願嗎?春節期間,軟件工程師Alex Irpan引用了過去幾年Berkeley、Google Brain、DeepMind和OpenAI的論文,詳細介紹了強化學習的弱點和侷限。html
一次,我在Facebook上發了這樣一句話:算法
每當有人問我強化學習可否解決他們的問題時,我會說「不能」。並且我發現這個回答起碼在70%的場合下是正確的。markdown
現在深度強化學習(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物理模擬器中的一組任務。在這些任務中,系統的輸入一般是某個模擬機器人每一個關節的位置和速度。但即使是這麼簡單的任務,系統一般也要通過105—107個步驟才能完成學習,它所需的經驗量大得驚人。
下面演示的是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年代之前就被提出,其中的一些方法甚至已經被用深度學習模型進行太重新審視,但它們並不能在全部環境中都發揮做用。我一直在期待一種通用型更強的探索技巧,相信在以後的幾年內,行業內就能給出更好的答案。
我曾把強化學習想象成一個滿懷惡意的對象,它故意曲解你的獎勵,以後再積極尋找最偷懶的局部最優解。雖然聽起來有點荒謬,但這實際上仍是一個蠻貼切的形容。
強化學習是受歡迎的,由於它是惟一一個能夠只在測試集上進行訓練的機器學習網絡。
強化學習的一個好處在於,若是你想在一個環境中表現更好,你能夠瘋狂地過擬合。可是這樣作的缺點是這個系統只在特定任務中起做用,若是你想擴展到其餘環境,對不起作不到。
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還很不穩定,這也成了制約研究的一個瓶頸。
剛進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如今看起來是一個很是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