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