深度強化學習是最接近於通用人工智慧(AGI)的正規化之一。不幸的是,迄今為止這種方法還不能真正地奏效。在本文中,作者將為我們解釋深度強化學習沒有成功的原因,介紹成功的典型案例,並指出讓深度強化學習奏效的方法和研究方向。
本文所引文獻大多數來自於 Berkeley、Google Brain、DeepMind 以及 OpenAI 過去幾年的工作,因為它們更容易獲得。我難免遺漏了一些比較古老的文獻和其他研究機構的工作,我表示很抱歉——畢竟一個人的時間精力有限。
簡介
我曾經在 Facebook 說過:
當別人問我強化學習能否解決他們的問題時,至少有 70% 的時候我的回答是:不能。
深度強化學習被成堆的炒作包圍著,並且都有足夠好的理由!強化學習是一種難以置信的通用正規化,原則上,一個魯棒而高效能的強化學習系統可以處理任何任務,而且將這種正規化和深度學習的經驗學習能力相結合是很自然的。深度強化學習是最接近於通用人工智慧(AGI)的正規化之一。
不幸的是,它目前還不能真正地奏效。
但現在,我相信它會取得成功的。如果我不相信強化學習,我是不會從事相關工作的。但是在通往成功的路上存在很多問題,而且很多問題從根本上來說都是很困難的。智慧體的漂亮 demo 背後隱藏著創造它們的過程中所付出的所有心血、汗水和淚水。
我多次看到人們被最新的研究所吸引,他們初次嘗試使用深度強化學習,而且沒有失敗,於是低估了深度強化學習所面臨的困難。毫無疑問,「玩具問題」並不像看起來那麼簡單。無一例外,這個領域會數次「摧殘」他們,直至他們學會設定更現實的研究期望。
實際上這並不是任何人的錯,它更像是一個系統問題。講述積極結果的故事是很容易的,但承認消極的結果是很困難的。問題在於消極的結果是研究者最常遇到的。某種程度上,消極的結果實際上比積極的結果更加重要。
在這篇文章的其餘部分,我會解釋一下深度強化學習沒有成功的原因,它成功的典型案例,以及將來讓深度強化學習更加可靠地工作的方式。我相信如果在這些問題上可以達成一致,並實實在在地討論相關的問題,而不是獨立地重複地去一次又一次地重新發現相同的問題。
我希望看到更多的關於深度強化學習的研究。我希望有新人加入這個研究領域,我也希望知道新人們能夠了解他們正在做什麼。
在開始文章的剩餘部分之前,有幾點提示:
我在這篇文章中引用了一些論文。通常,我會因其令人信服的負面例子而引用一篇論文,而不引用正面例子。這並不意味著我不喜歡那些論文。我喜歡這些論文,如果有時間的話,它們是值得一讀的。
我在這篇文章中可互換地使用「reinforcement learning,強化學習」和「deep reinforcement learning,深度強化學習」,因為在我的日常工作中,強化學習一直蘊含著深度強化學習的意思。我所批判的是深度強化學習的經驗行為,而不是一般的強化學習正規化。我所引用的論文中通常使用了深度神經網路的智慧體。儘管這種經驗批判可能同樣適用於線性強化學習或者列表格式強化學習,但是我並不認為這也適用於到更小的問題。強化學習有望被應用於大型、複雜、高維的環境中,在這些環境中良好的函式逼近是必要的。受此驅動,人們才炒作強化學習,這些炒作正是需要重點解決的問題。
這篇文章的基調是由悲觀向樂觀轉換的。我知道文章有些長,但是我更希望你花點時間讀完全文再做回覆。
深度強化學習可能是非常取樣低效的(sample inefficient)
用於深度強化學習的最著名的基準測試就是 Atari 遊戲。正如目前最出名的深度 Q 網路論文中所展示的一樣,如果你將 Q-Learning 與合理規模的神經網路和一些優化技巧相結合,你可以在幾款 Atari 遊戲中實現和人類相當甚至超越人類的效能。
Atari 遊戲以每秒 60 幀的速度執行,那麼目前最先進的 DQN 需要多塊的速度才能達到人類的效能呢?
這個問題的答案取決於遊戲,那麼我們一起來看一下最近 deepmind 發表的一篇論文 Rainbow DQN。這篇論文對原始 DQN 的幾個漸變版本的體系結構進行了 ablation study(類似於控制變數法,對模型進行簡化測試),結果證明組合所有的改進可以得到最佳的效能。在試驗的 57 場 Atari 遊戲中,有超過 40 場的表現超越了人類。結果如下圖所示:
y 軸是「人類效能標準化的中值得分」。通過為 57 個 Atari 遊戲中的每一個訓練一個 DQN 模型,然後將每個智慧體的得分進行標準化,使得人類的效能是 100%,然後將模型在 57 款遊戲上的中值得分畫出來。RainbowDQN 模型的訓練資料達到約 1800 萬幀的時候突破了 100% 的閾值。這相當於玩了 83 小時的遊戲,再加上訓練模型所花的時間。而人類通常能夠在幾分鐘之內學會一款 Atari 遊戲。
請注意,1800 萬幀實際上已經是相當好的結果了,如果考慮到之前的記錄,分散式 DQN(Distributed DQN)需要 7000 萬幀才能達到 100% 的中值效能,大約是 4 倍於 RainbowDQN 的訓練時間。至於發表在 nature 上的關於 DQN 的論文,即便經歷了 2 億幀的遊戲體驗,也從未達到 100 的中值效能。
規劃謬誤理論認為,完成一件事情所花的時間通常要比你想象的更多。強化學習也有其規劃謬誤,學習一個策略通常需要比想象更多的樣本。
這並不是 Atari 遊戲特有的問題。另一個非常流行的測試基準是 MuJoCo 基準,這是在 MuJoCo 物理模擬器中設定的一個任務集合。在這些任務中,輸入狀態通常是模擬機器人各關節的位置和速度。即使不必解決視覺問題,根據任務的不同,這些基準的學習仍然需要 105105 到 107107 的學習時間步。對於控制一個如此簡單的環境而言,這是一個驚人的實驗量。
在 DeepMind 的跑酷論文(Emergence of Locomotion Behaviours in Rich Environments)的 demo 中,使用了 64 個 worker 在超過一百小時的時間裡訓練策略。這篇論文並沒有闡明 worker 的含義,但是我認為它的意思是一個 worker 意味著 1 個 CPU。
這些結果超級酷。當它剛出現的時候,我很驚訝,強化學習竟然可以學習這些奔跑的步態。
同時,需要 6400 個 CPU 小時訓練的事實多少有些令人沮喪。並不是說我期望用更少的時間,更讓人沮喪的是深度強化學習仍然比實踐水平的取樣效率水平要低好幾個數量級。
有一個顯而易見的對比:倘若我們忽略了取樣效率呢?某些環境設定比較易於生成經驗,遊戲就是一個很好的例子。但是,對於任何不正確的設定,強化學習將面臨一場艱苦的戰鬥,不幸的是,大多數現實世界的設定都屬於這一類。
如果你僅僅關心最終的效能,那麼很多問題都能夠通過其他方法更好地解決
在尋求任何研究問題的解決方案時,通常會在不同的目標之間進行權衡。你可以通過優化以獲得針對該研究問題的真正好的解決方案,也可以優化以做出良好的研究貢獻。最好的問題就是需要作出很好的研究貢獻以得到解決方案的問題,但是滿足這種標準是很困難的。
對於單純地得到良好的效能,深度強化學習方法得到的記錄並不是那麼好,因為它們總是被其他方法擊敗。MuJoCo 機器人由線上的路徑優化控制。正確的動作幾乎是實時、線上計算得到的,而且沒有經過任何離線訓練。等等,它是執行在 2012 個硬體上面的(Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization)。
我覺得這些行為可以和那篇跑酷論文相提並論。那麼這兩篇論文的差別是什麼呢?
差別在於 MuJoCo 機器人中使用的是模型預測控制,這種控制方法可以根據真實世界的模型 (物理模擬器) 執行規劃。而無模型的強化學習不做這種規劃,因此它的訓練過程更困難。另一方面,如果根據一個模型來規劃會有如此大的幫助,那麼為何還要訓練一個強化學習策略來自尋煩惱呢?
類似的情況,在 Atari 遊戲中,使用現成的蒙特卡洛樹搜尋也能夠很容易地得到強於 DQN 的效能。這是 Guo 等人在 NIPS 2014 上發表的基準資料(Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning)。他們比較了訓練好的 DQN 和 UCT 智慧體的得分。其中 UCT 是目前使用的蒙特卡洛樹搜尋的一個標準版本。
同樣,這是一個不公平的比較,因為 DQN 沒有執行任何搜尋,蒙特卡洛樹搜尋會執行基於真實世界模型(Atari 模擬器)的搜尋。然而,有時候我們並不需要關心比較是否公平,有時候我們只是想讓它起作用。如果你對 UCT 的全面評估感興趣,你可以參考原始論文「The Arcade Learning Environment: An Evaluation Platform for General Agents」。
理論上強化學習可以解決任何問題,包括在世界模型未知的環境中執行任務。然而,這種泛化是需要代價的:很難利用任何特定問題的資訊來幫助學習,這就迫使我們使用大量的樣本來學習那些可能已經被硬編碼的東西。
然而經驗法則是,除了極少數情況,特定領域的演算法都會比強化學習表現得更快更好。如果僅僅是為了強化學習而做強化學習,那這不是問題,但是,我個人覺得,將強化學習的效能與其他任何方法進行比較的時候都會令人沮喪。我非常喜歡 AlphaGo 的一個原因是,它是強化學習的明確勝利,而且這不會經常發生。
這使得我更難向外行人士解釋為什麼我的問題很酷、很難、很有趣,因為他們通常缺乏相應的經驗,來理解為什麼這些問題很困難。在人們認為強化學習能做什麼和強化學習實際上能做什麼之間存在一個理解鴻溝。我現在從事於機器人學相關的研究。當提到機器人的時候,很多人都會想到一家公司:波士頓動力。
這個並沒有使用強化學習。我經歷過幾次談話,人們認為波士頓動力的機器人使用了強化學習,但是實際上並沒有。如果你查閱這個研究團隊的論文,你會發現有一篇提到時變 LQR、QP 求解器和凸優化的論文(https://dspace.mit.edu/openaccess-disseminate/1721.1/110533)。換言之,他們絕大多數情況使用的是經典的機器人技術。事實證明,當你正確地使用這些經典技術的時候,它們能夠工作得相當好。
強化學習通常需要一個獎勵函式
強化學習假定存在一個獎勵函式。通常,獎勵函式要麼是給定的,要麼是離線手動調整的並在學習過程中保持固定。這裡說「通常」,是因為存在例外情況,例如模仿學習或者逆強化學習,但是絕大多數強化學習方法都將獎勵函式視為必要的。
重要的是,為了讓強化學習做正確的事,你的獎勵函式必須精確地捕捉到你希望得到的東西,我的意思是準確無誤地捕捉。強化學習有個惱人的傾向,它會把獎勵函式過擬合,從而導致不希望出現的結果。這正是 Atari 為什麼是出色基準的原因,在 Atari 遊戲中,不僅能夠輕易地得到大量的樣本,而且每款遊戲的目標都是將得分最大化,所以根本不必擔心獎勵函式的定義,每款遊戲都有一樣的獎勵函式。
這同樣也是 MuJoCo 如此受歡迎的原因。因為它們執行在模擬環境中,你擁有關於所有物件狀態的完美知識,這一切都使得獎勵函式的定義變得更加容易。
在 Reacher 任務中,你控制著一個兩段機器臂,它被連線在一箇中心點上,這個任務的目標就是將機器臂的端點移動到目標位置。
由於所有的位置都是已知的,獎勵函式可以定義為機械臂端點到目標點之間的距離,再加上一個小的控制代價。原則上,如果你擁有足夠多的感測器來獲取環境中足夠精確的位置,在現實世界也可以做到這點。但是,根據系統任務的不同定義合理的獎勵函式可能會很困難。
就其本身而言,需要一個獎勵函式並不是什麼大事,除非......
獎勵函式的設計是困難的
建立一個獎勵函式並不是很困難。困難在於設計可學習的獎勵函式去激勵智慧體得到期望的行動。
在 HalfCheetah 環境中,你擁有一個兩條腿的機器人,它被限制在一個豎直平面中,這意味著它只能向前或者向後移動。
這裡的目標是學習一個奔跑的步態。獎勵函式是 HalfCheetah 的速度。
這是一種定型的獎勵,也就是說它越接近最終目標,給出的獎勵就越高。與之對應的是稀疏獎勵函式,它僅僅在目標狀態給出獎勵,在其他任何地方都沒有獎勵。定型獎勵函式通常更加容易學習,因為即便所學的策略沒有給出問題的完全解決方案,它也能給出積極的反饋。
不幸的是,定型的獎勵函式會給學習帶來偏差。正如之前所說的,這會導致並不期望得到的行為。一個典型的例子就是 OpenAI 部落格中的賽船遊戲(https://blog.openai.com/faulty-reward-functions/)。其目標是完成比賽。你可以想象,稀疏獎勵函式會在某個時間內完成遊戲時給出+1,否則就是 0。
該提供的獎勵函式會在你命中關卡的時候給出分數,也會因為收集能更快完成比賽的能量而給出獎勵。結果收集能量能夠比完成比賽獲得更多的分數。
老實說,當我看到 OpenAI 的這篇部落格的時候是有些惱火的。很明顯,在獎勵函式不匹配的情況下,強化學習會得到很詭異的結果!我覺得他們那篇部落格在給定的例子上做了大量的不必要的工作。
然後我就開始寫這篇部落格,而且意識到最引人注目的誤匹配獎勵函式的視訊就是那個賽船遊戲的視訊。並且從那時開始,這個視訊就被用在了好幾個闡明這個問題的報告中。所以,好吧,我很不情願地承認這是一篇很好的部落格。
強化學習演算法沿著一個連續體發展,在這個連續體中演算法需要或多或少地假設一些關於它們所處環境的知識。最廣泛應用的是無模型強化學習,它幾乎和黑箱優化是一樣的。這些方法僅僅被允許假設它們處於一個馬爾科夫決策過程(MDP)中。否則,它們將沒有任何意義。智慧體只是被簡單地告知這個會給它+1 的獎勵,這個不會給它獎勵,它必須自行學會其餘的東西。就像黑箱優化一樣,問題在於任何一個能夠給出+1 獎勵的都是好的,即使有時候+1 的獎勵並不是源於正確的原因。
一個經典的非強化學習的例子就是使用遺傳演算法來設計電路,最終得到的電路中,一個未連線的邏輯閘竟然是最終設計中所必須的。
灰色的單元是為了得到正確的行為所必須的,也包括左上角的那個單元,儘管它並沒有被連線。
最近的一個例子,可以參考 Salesforce 公司的這篇部落格(https://www.salesforce.com/products/einstein/ai-research/tl-dr-reinforced-model-abstractive-summarization/)。他們的目標是文字摘要。他們的基線模型是用監督學習訓練得到的,然後使用叫做 ROUGE 的自動指標去評估模型。ROUGE 是不可微的,但是由於強化學習可以處理不可微的獎勵函式,所以他們嘗試直接使用強化學習的方法來優化 ROUGE。這個方法得到了很高的 ROUGE,但是它卻無法給出一個很好的摘要。下面是一個例子:
Button 在邁凱輪車隊的第 100 場比賽被拒絕,因為 ERS 阻止了他進入起跑線。這對英國人來說是一個悲慘的週末。Button 已經合格了。在巴林比的尼科羅斯伯格之前完成。Lewis Hamilton,在 11 場比賽中領先 2000 圈……
所以,儘管強化學習模型得到了最高的 ROUGE 得分,他們最終還是選擇了另外一個模型。
這裡還有另外一個例子,是 Popov 等人的論文(Data-efficient Deep Reinforcement Learning for Dexterous Manipulation),有時候被稱為「樂高堆疊」。作者使用了 DDPG 的一個分散式版本來學習抓取策略。它的目標就是抓到紅色的方塊,並將其堆疊在藍色的方塊上面。
他們使系統跑通了,但是遇到了非常嚴重的失敗案例。在原始的舉起動作中,獎勵函式是基於紅色方塊被舉的高度,通過底平面的 Z 座標來定義。其中一種失敗的模式就是學到的策略將紅色的方塊翻了過來,並沒有將它撿起來。
顯然這並不是期望的解決方案。但是強化學習並不關心這個。從強化學習的角度來看,翻轉紅色的方塊會得到獎勵,從而它會繼續翻轉。
解決這個問題的一種方式是,僅僅在機器人完成方塊堆疊之後才給出正獎勵使獎勵函式稀疏化。有時候這種方式會奏效,因為稀疏獎勵函式是可學習的,然而通常都不會起作用,因為缺乏正增強會使得整個過程都變得很困難。
解決這個問題的另一個方式就是仔細地進行獎勵函式調整,新增新的獎勵項並調整已有的係數,直至得到期望學到的行為。在這條戰線上「打贏強化學習之戰」是可能的,但是這是一場不怎麼令人稱心的戰鬥。有時候這樣做是必要的,但是我並不覺得我從中學到了什麼。
作為參考,以下列出了「樂高堆疊」那篇論文中的獎勵函式之一。
我不清楚設計這麼一個獎勵函式花費了多少時間,但是由於這裡存在這麼多的項和不同的係數,我猜應該是花費了「大量的」時間。
在與其他強化學習研究者交談的過程中,我聽到了一些因為沒有設計合適的獎勵函式,而導致奇怪結果的軼事。
我的一位合作者在教智慧體進行室內導航。如果智慧體走出了邊界,事件就會終止。然而當事件以這種方式終止的時候,他並沒有增加任何懲罰項。最終智慧體學到的策略表現出了自殺的行為,因為負獎勵太多了,而正獎勵很難實現。
一個朋友訓練機械臂來到達桌子上的一個點。而事實是這個目標點是相對於桌子定義的,而桌子並沒有固定到任何東西上。結果策略學會了猛烈地撞擊桌子,最終將桌子掀翻,目標點也被移動了。目標點湊巧落在了機械臂末端的旁邊。
一位研究者談論了使用強化學習來訓練模擬機器手,使它拿起錘子釘釘子。最開始,獎勵是由釘子插入孔中的距離決定的。機器人並沒有拿起錘子,而是使用自己的肢體將釘子砸入了孔中。因此,他們增加了一個獎勵項來鼓勵機器人拿起錘子,並重新訓練策略。最後他們得到了拿起錘子的策略....... 但是後來它將錘子扔在了釘子上,而不是使用錘子去砸釘子。
誠然,這些都是我道聽途說的,我並沒有見過任何一個相關的視訊。然而,沒有一個聽起來是難以置信的。我已經被強化學習雷了好多次了,所以我選擇相信。
即使給定了較好的獎勵函式,也很難跳出區域性最優
之前關於強化學習的例子有時候被稱作「reward hacking」。對我而言,這意味著存在一個更加聰明的現成的解決方案,它能夠給出比獎勵函式的設計者預期更多的獎勵。
Reward hacking 是一個例外。更普遍的情況則是比較糟糕的區域性最優解,這個區域性最優解源於「探索—利用」權衡過程中的錯誤。
這裡有一段我喜歡的視訊。它是對「Normalized Advantage Function」的實現(Continuous Deep Q-Learning with Model-based Acceleration),是在 HalfCheetah 環境中學習得到的。
從外部角度來看,這實在是很愚蠢。但是隻有當我們以第三人的角度來看,並且大量的預置知識告訴我們靠雙足奔跑才是更加好的,才會覺得它很蠢。然而強化學習並不知道這個!它只看到了一個狀態向量,並且輸出動作向量,並且它知道自己能夠獲得某些正獎勵。這是它知道的所有。
我猜,在它學習的過程中發生了以下這些現象:
在隨機探索中,策略發現向前撲倒比原地不動要更好一些。
它做了大量努力來「銘記」那種行為,所以它現在會連續地向前撲倒。
在向前撲倒之後,策略學習到,如果它一次使很大的勁,它會做一次後翻,這個後翻能夠得到稍微多一點的獎勵。
它做了足夠多的探索之後,相信後翻是一個不錯的注意,然後就將後翻銘刻在了策略之中。
一旦後翻策略持續進行,這對已學到的策略而言更加容易:是糾正自己按照「標準姿勢」奔跑,還是學會如何躺著仰面前行?我想應該是後者。
這是很有趣的,但是這絕對不是我們想讓機器人所做的。
下面另一次失敗的執行,這次是發生在 Reacher 環境中的。
在這次執行中,初始隨機權重傾向於輸出特別大的正值或特別小的負值的動作輸出。這使得絕大多數的動作輸出可能是最大加速度或者最小加速度。這實際上很容易發生超快的旋轉:在每個關節處輸出高強度的力。一旦機器人開始執行,它很難以一種有意義的方式偏離這種策略—如果要偏離,必須採取一些探索步驟來阻止這種瘋狂的旋轉。這當然是可能的,但是在這次執行中,並沒有發生。
這些都是一直以來困擾著強化學習的經典「探索—利用」問題的兩種情況。你的資料來自於目前的策略。如果你當前的策略探索太多,那將會得到大量的垃圾資料,從而學習不到任何東西。利用太多,則記憶的行為經常是非最優的。
這裡有幾個解決這個問題的直觀想法—內在動機、好奇心驅動的探索、基於重要性的探索,等等。其中很多方法都是在上世紀 80 年代或者更早的時候提出來的,而且一些方法已經使用深度學習的模型進行了重新研究。然而,據我所知,這些方法都不能在所有的環境中一致奏效。有時候它們會有幫助,有時候則不會。如果已經存在一種探索技巧能夠在所有環境中起作用的話,那將會是很好的,但是我很懷疑這種萬精油會不會在近期被發現。不是因為人們沒有嘗試解決這個問題,而是因為探索—利用問題實在是太難了。可以參考維基百科中的多臂老虎機問題:
這一問題最初由二戰中的盟軍科學家考慮到的,但事實證明非常棘手,據 Peter Whittle 說,這個問題被提議擱置在德國,以便德國科學家也能在這個問題上浪費時間。(參考: Q-Learning for Bandit Problems, Duff 1995)
我開始想象深度強化學習是一個惡魔,故意曲解你的獎勵,並積極尋找最懶的區域性最優解。這有點荒謬,但我發現這實際上是一種富有成效的思維方式。
即使當深度強化學習成功的時候,它也有可能僅僅是過擬合了環境中的某些奇怪的模式
深度強化學習之所以流行是因為它是唯一一個被認可在測試集上做訓練的機器學習方法。
強化學習的好處在於如果你想在一個環境中做得很好,你可以肆意地進行過擬合。但是不好的地方在於如果你想把模型泛化到另一個環境中,你可能會做得很糟糕。
DQN 可以解決很多 Atari 遊戲,但是它是通過將所有的學習聚焦在一個單獨的目標上實現的—僅在一款遊戲中表現得極其好。最終的模型不會泛化到其他的遊戲中,因為它沒有以其他遊戲中的方式訓練過。你也可以將一個學到的 DQN 模型精調到一款新的 Atari 遊戲中(Progressive Neural Networks (Rusu et al, 2016)),但是不能保證它能夠完成遷移,而且人們通常不期望它能夠完成這種遷移。這並不是我們已經在 ImageNet 中所見證的巨大成功。
原則上,在一個廣泛的環境分佈中訓練應該會使這些問題消失。在某些情況下,你可以免費地使用這種分佈。導航就是其中的一個例子,你可以隨機地取樣目標位置,然後使用統一的價值函式去泛化(Universal Value Function Approximators, Schaul et al, ICML 2015)。我發現這項工作是很有希望的,我後續會給出關於這項工作更多的一些例子。然而,我認為深度強化學習的泛化能力還不足以處理很多樣的任務集合。認知感測已經變得更好了,但是深度強化學習還沒有達到 ImageNet 的成就。OpenAI 嘗試挑戰這個問題,但是據我所知,這個問題太難解決了,所以也沒有多少進展。
在擁有這種泛化能力之前,我們還是會受到策略被侷限在極小範圍內的困擾。有這麼一個例子(這也是 daq 我打趣自己所做工作的機會),考慮一下這個問題:Can Deep Reinforcement Learning Solve Erdos-Selfridge-Spencer Games?(Raghu et al, 2017) 我們研究了一個輕量級的兩玩家組合遊戲,存在一個尋求最優玩法的閉環形式分析解決方案。在我們初次進行的一個實驗中,我們固定了玩家 1 的行為,然後用強化學習的方法去訓練玩家 2。這樣,你可以將玩家 1 的動作視為環境的一部分。通過用玩家 1 的最優解來訓練玩家 2,最終證明強化學習可以達到很高的效能。但是當我們將策略部署到一個非最優的玩家 1 上時,它的效能下降了。
Lanctot 等人在 NIPS 2017 的論文中展示了類似的結果(A Unified Game-Theoretic Approach to Multiagent Reinforcement Learning)。其中有兩個智慧體在玩鐳射標記。它們都是以多智慧體強化學習的方式訓練得到的。為了測試其泛化能力,他們用 5 個隨機種子來執行訓練過程。下圖的兩個智慧體都是在對方的基礎上訓練得到的。
它們學會了朝著彼此射擊。然後他們從一個實驗中選擇玩家 1,與另一個實驗中的玩家 2 進行對戰。如果學習到的策略可以泛化,那麼我們應該能夠看到類似的行為。
劇透:它們並沒有!
這是多智慧體強化學習中的一個常見問題。當智慧體進行對抗訓練時,就發生了某種協同進化。智慧體非常擅長和對手對抗,但是當它們被部署在一個沒有見過的智慧體上時,效能就會下降。我還想指出的是,這些視訊中唯一不同的地方就是隨機種子。完全相同的學習演算法,完全相同的超級引數。它們的不同表現完全來自於初始條件的隨機性。
話雖如此,但是競爭性自我對抗博弈中的一些簡單例子貌似是與此矛盾的。OpenAI 的部落格介紹了他們在這個領域中的一些工作(學界 | openai 競爭性自我對抗訓練:簡單環境下獲得複雜的智慧體)。自我對抗也是 AlphaGo 和 AlphaZero 的重要部分。我的直覺是:智慧體在相同的環境中學習,它們可以不斷地挑戰彼此,並加速彼此的學習,但是如果其中的一個學習得比較快,它就會過度地利用較弱的那個智慧體,並導致過擬合。當從對稱自我博弈鬆弛化到多智慧體環境中時,保證以同樣的速度學習就會變得更加困難。
即使忽略了泛化問題,最終的結果也可能是不穩定的和難以復現的
幾乎每個機器學習演算法都有能夠影響模型行為和學習系統的超引數。通常,這些引數都是通過手動挑選得到的,或者是通過隨機搜尋得到的。
監督學習是穩定的。固定的資料集,固定的真實目標。如果對超引數做了很小的改動,最終的效能並不會改變很多。並不是所有的超引數都具有很好的效能,但是,基於多年來發現的經驗技巧,很多引數都會在學習得過程中表現出一種生命跡象。這種生命跡象是很重要的,因為它們會告訴你,你走上了正確的道路,值得投入更多的時間。
目前,深度強化學習一點都不穩定,這對於研究來說是非常惱人的。
當我開始在 Google Brain 工作的時候,我所做的第一批工作之一就是實現那篇「Normalized Advantage Function」的論文。我本以為花費大約兩到三個星期就可以完成了。對我而言需要做以下幾件事情:對 Theano 要有一定的熟悉(當然現在轉移到了 TensorFlow),一些深度強化學習的經驗,由於 NAF 論文的一作也在 Google Brain 實習,所以我可以向他請教。
由於幾個軟體 bug,最終我花了 6 個星期復現了結果。而問題在於,為什麼花了這麼久才找到 bug?
為了回答這個問題,我們先考慮一下 OpenAI Gym 中最簡單的連續控制問題:擺任務。在這個任務中,有一個擺,它被固定在一個點上,受到重力作用。輸入狀態是 3 維的。動作空間是 1 維的,也就是施加的力矩。目標是使這個擺完全直立。
這是一個比較簡單的問題,通過一個較好的定型獎勵函式可以很容易做到。獎勵函式被定義為擺的角度。將擺靠近垂直方向的動作會給出獎勵,而且會給出遞增的獎勵。獎勵函式基本上是凸的。
下面展示了一個基本成功的策略(視訊見原文連結)。儘管它並沒有使擺保持直立平衡,但是它輸出了能夠抵消重力的準確力矩。
下面是修復了所有 bug 之後的效能圖。每一條曲線都是 10 次獨立執行中的獎勵函式。它們擁有相同的超引數,唯一的區別是隨機種子。
其中有 7 次執行是成功的,3 次沒有成功,成功率是 70%。這裡還有一些已經發表過的研究中的圖,「Variational Maximizing Exploration, Houthooft et al,NIPS 2016」。所用環境是 HalfCheetah 環境。雖然獎勵函式被修改得更加稀疏,但是這些細節並不是十分重要。Y 軸是事件獎勵,X 軸是時間步數,所用演算法是信賴域策略優化(TRPO)。
深色曲線是 10 個隨機種子的中值效能,淺色區域是第 25 至第 75 百分位數。別誤會,這幅圖是支援 VIME 的很好的證明。但是另一方面,第 25 個百分位確實很接近 0 獎勵。這意味著 25% 的執行失敗了,僅由於隨機種子的不同而導致。
注意,這種方差在監督學習中也是存在的,但是它很少會這麼糟糕。如果我的監督學習程式碼在 30% 的時間不能成功執行,那麼我會高度質疑資料載入或者訓練過程的可信度。但是,如果我的強化學習程式碼沒有隨機效能好,那我並不清楚到底是程式碼有 bug,還是超引數不太好,或者我只是運氣不好。
這幅圖來自於這篇部落格:「Why is Machine Learning 『Hard』?」。它的核心主題就是機器學習給失敗的案例空間中增加了維度,這些維度導致出錯形式的指數增加。深度強化學習增加了一個新的維度:隨機機率(random chance)。解決隨機機率的唯一方法就是在問題上投入足夠多的實驗來降低噪聲。
當你訓練一個樣本低效並且不穩定的演算法時,它會嚴重降低生產性研究的速度。或許它只需要一百萬步。但是如果你使用了 5 個隨機數種子,那就是將調節的超引數變成了原來的 5 倍,為了有效地測試你的假設,你需要極其多的計算量。
如果這樣能讓你感覺好一些的話,我願意分享一下我的一些經歷,我做這項工作已經有一段時間了,從零開始實現到能在很多強化學習問題上的 50% 時間中取得成功的策略梯度,花費了我大約六個星期的時間。我還有一個便於使用的計算機叢集,以及一群自我來到這個地區之後就可以每天共進午餐的朋友。
此外,我們從監督學習中瞭解到的良好的 CNN 設計似乎並不適用於強化學習,因為經常受到信任分配/監督位元率的限制,而並不是因為缺乏強大的表徵。ResNets、batchnorms 或者非常深的網路在這裡沒有任何作用。
[監督學習] 希望它起作用。即使把有些東西搞砸了,你也會得到一個非隨機的結果。但是強化學習是被強迫起作用的。如果你把某些事情搞砸了或者你沒有將一些東西調節到足夠好,你很有可能得到一個比隨機結果更糟糕的情況。即使一切都正常,你也有可能在 30% 的時間裡得到一些糟糕的策略。長話短說,僅僅是因為深度強化學習的難度,更少是因為「設計神經網路」的難度。
以上引用內容摘自 Andrej Karpathy 還在 OpenAI 工作時發表在 Hacker News 上的評論(https://news.ycombinator.com/item?id=13519044)。
隨機種子的不穩定性就像飛翔在礦井中的金絲雀。如果單純的隨機就足以在執行中導致如此大的差異,那麼想象一下程式碼中實際的差異會有多大。
幸運的是,我們不必進行這樣的想象。因為這已經被這篇論文檢驗過了——「Deep Reinforcement Learning That Matters」(Henderson et al, AAAI 2018)。論文結論如下:
給獎勵函式乘以一個常量會導致顯著的效能差別
5 個隨機種子(常用值)不足以證明這種顯著的結果,因為通過仔細挑選可以得到一些不重疊的置信區間。
同一演算法的在同一個任務上的不同實現會有不同的效能,甚至是當使用相同的超引數的時候。
我在這裡持有的觀點是:強化學習對初始化和訓練過程的動態變化都很敏感,因為資料總是線上採集到的,你可以執行的唯一監督只有關於獎勵的單個標量。在較好的訓練樣例上隨機碰到的策略會比其他策略更快地引導學習。沒有及時地遇到好的訓練樣本的策略會崩潰而學不到任何東西,因為它越來越堅信:它所嘗試的任何偏離都會導致失敗。
但是,我們又該如何看待深度強化學習的成功案例呢?
深度強化學習確實做了許多很酷的事情。雖然 DQN 現在已經是老生常談了,但是在那個時候確實是比較瘋狂的。單個模型就可以直接從原始畫素開始學習,而不需要為每個遊戲進行單獨地調節。後來 AlphaGo 和 AlphaZero 又繼續獲得了引人注目的成就。
然而,除了這些成功之外,很難在現實世界中發現深度強化學習產生實際價值的案例。
我曾經費盡心力去思考深度強化學習在現實世界中的生產應用,發現這是驚人的困難。我曾經期望在推薦系統中尋找有用的案例,但是我認為這些系統仍舊被協同過濾(collaborative filtering)和上下文老虎機 (contextual bandits) 主導著。
最終,我能找到的最好案例是 Google 的兩個專案:降低資料中心能耗(https://deepmind.com/blog/deepmind-ai-reduces-google-data-centre-cooling-bill-40/)和最近釋出的 Auto ML Vision。OpenAI 的 Jack Clark 在推特上的發問也得到了類似的結論。
我知道奧迪也在使用深度強化學習研發技術,因為他們在 NIPS 上展示了一輛自動駕駛汽車的 RC 版本,據說這款汽車使用了深度強化學習。我知道有一些優化大規模 TensorFlow 圖中裝置部署的優秀工作(Device Placement Optimization with Reinforcement Learning)。Salesforce 公司有自己的文字摘要模型,基本也可以工作。金融公司肯定正在嘗試使用強化學習,但是目前還沒有確鑿的證據。Facebook 一直在用深度強化學習做一些聊天機器人和廣告方面的優秀工作。每家網際網路公司可能都考慮過將深度強化學習新增到它們的廣告服務模型中,但是即使這麼做了,他們也會對此守口如瓶。
我認為,要麼深度強化學習仍然是一個研究課題,它不夠魯棒,所以沒有廣泛的應用,要麼,深度強化學習已經可用了,並且使用深度強化學習的人沒有公之於眾。我認為前者更有可能。
如果是影像分類的問題,我會推薦預訓練的 ImageNet 模型,它們很可能表現得更好。我們現在處於這麼一個世界,矽谷的人們可以開發出一款 Not Hotdog 應用來開玩笑。然而我很難看到深度強化學習也有如此的盛況。
在目前的侷限下,深度強化學習何時才能真正地工作呢?
很難說。嘗試用強化學習解決一切的問題其實就是用同一個方法解幾個特別不同的環境中的問題。不會總是成功的,這很自然。
儘管如此,我們還是可以從目前深度強化學習的成功案例得出一些結論。在這些專案中,深度強化學習要麼學會了十分令人印象深刻的東西,要麼它學會了相比以前的工作更好的東西。(誠然,這是非常主觀的判斷標準)
下面是我列出的清單:
之前所提及的:DQN、AlphaGo、AlphaZero、跑酷機器人、降低資料中心能耗的應用,以及使用神經架構搜尋的 Auto ML。
OpenAI 的 Dota2 1v1 暗影惡魔機器人,它在簡化版本的決鬥環境中擊敗了頂級人類職業玩家(https://blog.openai.com/dota-2/)。
超級粉碎機器混戰機器人(https://arxiv.org/abs/1702.06230),它在 1v1 的獵鷹 dittos 遊戲中可以擊敗職業玩家。
順便說一下:機器學習最近在無限注德州撲克中擊敗了專業玩家。Libratus(Brown et al, IJCAI 2017,https://www.ijcai.org/proceedings/2017/0772.pdf) 和 Deepstack(Moravčík,https://arxiv.org/abs/1701.01724)都完成了這樣的壯舉。我和一部分人交談過,它們認為這項工作使用了深度強化學習技術。它們都很酷,但是它們並沒有使用深度強化學習。而是使用了反事實後悔值最小化(CFR minimization)和巧妙的子游戲迭代求解。
我們可以從上面這個列表中發現一些讓學習變得更加容易的共同屬性。以下列出的屬性都不是學習所必需的,但是更多地滿足這些屬性學習效果會更好。
生成近乎無限多的經驗是很容易的。我們應該清楚為什麼這是有幫助的。擁有的資料越多,學習問題就會變得越容易。這適用於 Atari 遊戲、圍棋遊戲、象棋遊戲、日本將棋遊戲以及跑酷機器人的迷你環境。它也可能適用於電力中心的專案,因為之前 Gao 的工作已經顯示:神經網路能以很高的準確率預測能源效率。這正是你想要為一個強化學習系統訓練的模擬模型。它也可能適用於 Dota2 和 SSBN 的工作,但是它取決於遊戲執行速度的吞吐量,以及有多少機器可以用來執行遊戲。
問題被簡化成了一個更簡單的形式。我在深度強化學習中看到的一個常見的錯誤就是夢想過於龐大。總以為強化學習無所不能!但是這並不意味著可以立即達成一切。OpenAI 的 Dota2 機器人只玩早期的遊戲,只在使用硬編碼元件構建的 1v1 laning 環境中玩暗影惡魔和暗影惡魔的對抗,想必是為了避免感知問題而稱其為 Dota2 API。雖然 SSBM 機器人實現了超越人類的效能,但是那僅僅是 1v1 的遊戲,在無限時間的比賽中只有獵鷹隊長在戰場上。這不是在嘲諷任何一個機器人。你為何要在連一個簡單問題都無法解決的時候就去解決一個艱難的問題呢?所有研究的廣泛趨勢都是先去證明最小的問題上的概念,然後再去泛化。OpenAI 在擴充套件他們在 Dota2 上的工作,當然也存在將 SSBN 上的工作擴充套件到其他角色上的工作。
也有可以將自我對抗引入到學習中的方式。這是 AlphaGo、AlphaZero、DOTA2 暗影狂魔機器人以及 SSBN 獵鷹機器人的組成部分。應當注意的是,我在這裡所說的自我對抗指的是這樣的遊戲環境:遊戲是競爭性的,兩個玩家都可以被同一個智慧體控制。目前,這樣的環境似乎擁有最好的穩定性和最好的效能。
有一個簡潔的方式來定義一個可學習的、不冒險的獎勵函式。兩個玩家的遊戲有這樣的特點:贏了得到+1 的獎勵,輸了得到-1 的獎勵。Zoph 等人最早的文章有這樣的獎勵函式:驗證已訓練模型的準確率(neutral architecture search for reinforcement learning,ICLR,2017)。當你引入獎勵函式重塑時,就可能學習了一個優化錯誤目標的非最優策略。如果你對如何擁有一個更好的獎勵函式比較感興趣,「proper scoring rule」是一個不錯的檢索詞。至於可學習性,除了做實際嘗試之外,我沒有更好的建議。
如果必須對獎勵函式進行重塑,那麼它至少是結構較豐富的。在 Dota2 中,獎勵可以來自於上次的命中(每個玩家殺死一隻怪獸之後就會觸發)和生命值(在每一次攻擊或者技能命中目標之後就會觸發)。這些獎勵訊號出現的很快而且很頻繁。對 SSBN 機器人而言,可以對所造成的傷害給予獎勵,這將為每次的攻擊提供訊號。行動和結果之間的延遲越短,反饋迴路能夠越快地閉合,強化學習就越容易找到回報更好的路徑。
案例研究:神經架構搜尋
我們可以結合一些原則來分析神經架構搜尋的成功。從 ICLR 2017 中的原始版本論文中可以得知,在 12800 個樣本之後,深度強化學習能夠設計出最先進的神經網路架構。誠然,每個例子都需要訓練一個神經網路以得到收斂,但是這仍然是非常有效的。
正如上面所提到的,其獎勵函式是驗證準確率。這是結構非常豐富的獎勵訊號——如果一個神經網路的設計決策將準確率僅僅從 70% 提高到了 71%,強化學習仍然可以從這一點上獲得進展,此外,深度學習中的超引數接近線性無關。Hazan 等人在「Hyperparameter Optimization: A Spectral Approach」中進行了經驗證明。神經架構搜尋(NAS)並不是在調引數,但是我認為,神經網路設計決策是以類似的方式工作。這對學習來說是一個好訊息,因為決策和效能之間的關聯是很強的。
與其他環境中需要數百萬個樣本相比,以上這些要點的結合可以幫助我們理解為什麼「僅僅」需要 12800 個訓練好的神經網路就可以學習到一個更加好的網路架構。這個問題中的幾個部分都在朝著強化學習傾斜。
總之,如此強大的成功案例仍然是一種例外,而不是必然的規則。深度強化學習現在還是不是拿來即用的技術。
展望未來
有這麼一句話—每個研究人員都知道如何厭惡自己的研究領域。然而關鍵在於,儘管如此,大家還是會堅持下去,因為他們實在是太喜歡這些問題了。
這也是我對深度強化學習的大致感受。儘管我有所保留,但是我認為人們絕對應該將強化學習投入到不同的問題中去,包括那些可能不會成功的地方。那麼我們還能怎樣使強化學習變得更好呢?
給再多的時間,我也找不到深度強化學習無法工作的理由。當強化學習變得足夠魯棒和得到廣泛應用的時候,一些十分有趣的事情就會發生。問題在於如何到達那一步。
我在下面列舉出了一些比較合理的未來情況。對於基於進一步研究的未來,我已經引用了這些領域的相關研究論文。
區域性最優已經足夠好了:如果說人類在任何事情上都是最棒的,那可能有些傲慢。與其他物種相比,我想我們只是足夠好的到達了文明階段。同樣的,強化學習解決方案也不必獲得全域性最優解,只要它的區域性最優解能夠比人類的基線好就行了。
硬體解決一切:我知道一些人覺得可以為人工智慧做的最重要的事情就是簡單地擴充套件硬體。我自己則對硬體解決一切持懷疑態度,但是硬體確實是很重要的。你的執行速度越快,就可以越少地關心取樣低效,就可以更容易地暴力解決探索問題。
增加更多的學習訊號:稀疏獎勵函難以學習,因為你獲得的幫助資訊很少。我們要麼誤以為獲得了正獎勵(Hindsight Experience Replay),要麼通過自我監督學習建立更好的世界模型(Reinforcement Learning with Unsupervised Auxiliary Tasks)。可以說是在蛋糕上增加了更多的櫻桃。
基於模型的學習可以提高取樣效率:這是我對基於模型的強化學習的描述,「大家都想做,但是沒幾個人知道如何做」。原則上,一個好的模型可以解決一系列的問題。就像我們在 AlphaGo 中看到的一樣,擁有一個比較全面的模型使得學習解決方案變得更加容易。好的世界模型可以很好地遷移到新的任務上面,而世界模型的展開可以讓你想象新的體驗。據我所見,基於模型的方法使用的樣本也比較少。
問題在於學習一個好模型是很困難的。在我的印象中,低維度的狀態模型有時候會起作用,而影像模型則通常是比較困難的。但是,如果這個也變得很容易的話,一些有趣的事情就會發生。
Dyna 和 Dyna2 是這個領域中的經典論文。對於使用深度網路結合基於模型學習的論文而言,我想推薦一下最近伯克利機器人學實驗室的一些論文:
Neutral Network Dynamics for Model-Based Deep RL with Model-Free Fine-Tuning
Supervised Visual Planning with Temporal Skip Connections
Combining Model-Based and Model-Free Updates for Trajectory-Centric Reinforcement Learning
Deep Spatial Autoencoders for Visuomotor Learning
End-to-End Training of Deep Visuomotor Policies
僅將強化學習用作微調步驟:第一篇 AlphaGo 論文從監督學習開始,然後在此基礎上進行強化學習的微調。這是一個很好的方法,因為它可以讓你使用一個更快但功能不太強大的方法來加速初始學習。還存在其他環境下的工作——參考《Sequence Tutor: Conservative Fine-Tuning of Sequence Generation Models with KL-control》。可以將此視為以合理的先驗(而不是隨機先驗)開始強化學習過程,在這種情況下,學習先驗的問題可以用其他方法求解。
獎勵函式是可以學習的:機器學習的承諾是我們可以使用資料去學習到比人類設計更好的東西。如果獎勵函式設計這般難,為什麼不用它來學習到更好的獎勵函式呢?模仿學習和逆強化學習都是成果很豐富的領域,它們已經展示了獎勵函式可以通過人類的演繹或者評估來隱式地定義。
逆強化學習和模仿學習方面的著名論文有:
Algorithms for Inverse Reinforcement Learning
Apprenticeship Learning via Inverse Reinforcement Learning
A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
關於最近將這些思想擴充套件到深度學習領域的工作,可以參考以下論文:
Guided Cost Learning: Deep Inverse Optimal Control via Policy Optimization
Time-Contrastive Networks: Self-Supervised Learning from Video
Learning from Human Preferences
其中,《Learning from Human Preferences》這篇論文表明,從人類評級中獲得的獎勵實際上比原來的硬編碼獎勵更適合於學習。
對於無需深度學習的長期研究,我更喜歡:
Inverse Reward Design
Learning Robot Objectives from Physical Human Interaction
遷移學習可以節省時間:遷移學習承諾可以利用之前任務中學習到的知識來加快新任務的學習。我認為這絕對是未來的希望,那時候任務學習已經足夠魯棒來解決多個不同的任務。如果根本學習不到任何東西,就很難進行遷移學習,給定了任務 A 和任務 B,就很難預測 A 是否遷移到了 B。根據我的經驗,這要麼是超級明顯的,要麼是很不清楚的,即便是超級明顯的情況,也不會是很普通的工作。
這個方向上有三篇最近的論文:
Universal Value Function Approximators
Distral: Robust Multitask Reinforcement Learning
Enabling Continual Learning in Neural Networks
而比較早期的工作可以考慮一下 Horde:
Horde: A Scalable Real-time Architecture for Learning Knowledge from Unsupervised Sensorimotor Interaction
機器人學特別是在從模擬向真實的轉移方面的進展(模擬版本的任務和真實版本任務之間的遷移),參見:
Spam Detection in the Physical World
Sim-to-Real Robot Learning from Pixels with Progressive Nets
Closing the Simulation-to-Reality Gap for Deep Robotic Learning
好的先驗知識會大大縮短學習時間:這與前面的幾點息息相關。有一種觀點:遷移學習是使用過去的經驗來構建較好的學習其他任務所需的先驗知識。強化學習演算法被設計適用於任何馬爾科夫決策過程,這才是泛化性的痛點來源。如果承認我們的解決方案只能在一小部分環境中執行良好,我們就能夠以一種有效的方式利用共享結構來解決這些問題。
Pieter Abbeel 在他的演講中喜歡提到的一點是:深度強化學習只需要解決我們在現實生活中需要解決的任務。我贊同這個觀點。應該有一個現實世界的先驗知識,讓我們能夠快速學習新的現實世界的任務,代價是在非現實的任務上學習更慢,但這是一個完全可以接受的權衡。
困難在於設計這樣的一個現實世界先驗知識是很難的。然而,我認為不是不可能的。就我個人而言,我對最近在元學習方面的工作感到興奮,因為它提供了一種資料驅動的方法來生成合理的先驗知識。例如,如果我想使用強化學習進行倉庫導航,我會非常好奇如何使用元學習事先學習一個好的導航,然後針對機器人將要部署到的特定倉庫對這個先驗知識進行微調。這看起來很有希望,問題是元學習能否實現。
BAIR 在這篇文章中總結了最近的「學習到學習」方面的工作:http://bair.berkeley.edu/blog/2017/07/18/learning-to-learn/(參閱:學界 | 與模型無關的元學習,UC Berkeley提出一種可推廣到各類任務的元學習方法)。
更困難的環境可能會使問題變得更容易:DeepMind 的跑酷論文給我們的最大的教訓就是:如果可以通過增加一些任務變體使得任務變得非常困難,實際上你可以使學習變得更加容易,因為策略不能在不損失所有其他環境中的效能的情況下過擬合任何一個環境。在域隨機化的論文中,甚至在 ImageNet 中,我們也看到了類似的情況:在 ImageNet 上訓練的模型比在 CIFAR - 100 上訓練的模型更具泛化性。正如我前面提到的,也許我們只是一個「受控的 ImageNet」,而遠沒有使強化學習更通用。
環境方面倒是有很多選擇。OpenAI Gym 非常具有吸引力,當然也有街機學習環境(Arcade Learning Environment)、機器人學習環境(Roboschool)、DeepMind Lab、DeepMind 控制元件(DeepMind Control Suite),以及 ELF。
最後,儘管從研究的角度來看還是不盡如人意,但是深度強化學習的經驗問題或許對實際目的來說不是很重要的。作為一個假設的例子,假設一家金融公司正在使用深度強化學習。基於美國股市過去的資料,他們使用三個隨機數種子訓練了一個智慧體。在實時的 A/B 測試中,一個給出了 2% 的收益減少,第二個和第一個表現相同,第三個帶來了 2% 的收入增益。在這種假設下,再現性並不重要,你大可以部署那個帶來 2% 收入增益的模型,並準備慶祝。同樣地,交易智慧體可能只在美國表現良好,這也沒關係——如果它在全球市場泛化得不好,就不要在那裡部署它。在做一些非凡的事情和讓非凡的成功重現之間有很大的差距,也許值得把注意力集中在前者。
我們現在的處境
從很多方面來說,我發現自己對深度強化學習的現狀感到惱火。然而,它吸引了一些我所見過的最強烈的研究興趣。我的感受最能概括為吳恩達在他的演講《Nuts and Bolts of Applying Deep Learning》中所說的:短期悲觀,長期樂觀。深度強化學習目前還有些混亂,但是我仍然相信它可以成功。
話雖如此,下次有人問我強化學習能否解決他們的問題,我還是要告訴他們,不行,不行。但我也會告訴他們幾年後再問我。到那時,也許可以。
(原文視訊較多,文章無法一一展現,全部視訊請參見原文連結)