2019 年,深度強化學習可以算得上 AI 研究的 Top 關鍵詞之一。
無論是 DeepMind 星際2 AI 「AlphaStar」血虐人類玩家,還是 OpenAI 最終因太過強大而被認為可能有風險所以不公開發布的語言模型 GPT-2,無疑都在過去一年中最轟動的 AI 大事件之列,也吸引了 AI 社區的越來越多的研究者投身深度強化學習研究之列。
然而,也有很多反對的聲音認為深度強化學習現在的一系列成果,其實更像是一種虛假的「繁榮」。
本文作者朱仲光便是其中的一位。他指出,深度強化學習會給研究者們尤其是各位不明真相的大眾帶來「離通用人工智能越來越近」的錯覺,而更為嚴重的是,深度強化學習會耗費掉研究者們本可以用來研究其他更重要的問題和更有前景的方向的時間和精力。
他的具體觀點,我們下面來看:
一、2019 年都過去了,并沒有離現實世界更進一步
隨著 2019 年的結束,我想回顧一下人工智能所取得的進展。在這一年,AI 社區尤其將深度強化學習大肆宣揚為下一個朝著通用人工智能(AGI)前進的革命性的一步。
通用人工智能,顧名思義,就是指能夠像人類一樣以一種通用的方式學習萬事萬物的計算機算法。
近年來,研究者們針對深度強化學習開展了大量研究工作,現在也逐漸取得了一定進展。
圍繞深度強化學習的想法和期望是,理論上,我們能輕而易舉地訓練一個能做任何事情的智能體,比如開車、疊衣服、玩電子游戲、打掃房間、玩魔方等等,并且所有智能體的學習過程都不需要人工干涉。其中一些實驗已經取得一些成功,你可以教一個深度強化學習的智能體玩一些電子游戲和棋類游戲,但是一旦涉及現實世界,進入生產系統,這些實驗都會以失敗告終。
據我所知,2019 年都過去了,仍然沒有出現任何能夠使用深度強化學習技術的生產系統。
二、到底解決哪些問題,才有意義?
深度強化學習系統有許多問題,我并不打算詳細討論這些問題的細節,因為有很多博客文章已經討論過這些問題。感興趣的讀者可參考下文:
- 《Deep Reinforcement Learning Doesn't Work Yet》,https://www.alexirpan.com/2018/02/14/rl-hard.html
如果這些問題中有一部分得到改善或解決,例如找到更抽象的方式來表征神經網絡內部的信息,我也不會太驚訝,但如果不能解決我所認為的核心問題,即有關手動設置獎勵的問題,那所謂的「改善」或「解決」也就意義不大了。
在深度強化學習中,我認為大部分時間都花在了設計獎勵函數來讓智能體完成想讓它做的事情。用更傳統的機器學習術語來說,獎勵函數就是目標函數,指的是算法利用獎勵函數來了解系統是否朝著正確的方向運行,模型得到的獎勵越多,它就「越好」。
比如教一支機械臂疊衣服,假如說你有一堆褲子,那么你如何編寫獎勵函數來讓機械臂正確地疊這些褲子呢?當向另外一個人解釋這一點時,聽起來很簡單,只是「把褲子疊成整齊的一堆」,但是計算機并不知道這些規則的含義。
對于每一個實驗,你設計的獎勵必須要讓計算機在完全不知道自己實際正在做什么的情況下,可以自己衡量自己的運行過程。因此,你設計的獎勵程序可以在機械臂碰到褲子時就開始給它獎勵,之后再針對是否正確抓住了褲子以及移動了褲子,來給它更多獎勵得分。
那如何基于機械臂在實際折疊褲子中的表現給予獎勵?疊三次可以得分嗎?沒有將褲子疊皺又得多少分?
最終,你花了太多時間試圖去引導智能體遵循正確的路徑,以至于它基本上處在完全的監督之下。
理論上,你的確可以讓一個人監督著整個訓練過程,這個人可以為系統采取的每一個動作指定一個分數,但這種方式是不能泛化的。
這些深度強化學習系統需要基于數萬到數百萬次的迭代來試驗動作的每一個變化,以找出實現最終目標的正確序列,個人很難監控計算機采取的所有步驟。研究者也正在積極探索,試圖將這個范圍縮小至有限次數的學習,但對我來說,這只是試圖改進一些從根本上而言沒有意義的東西。
在你試圖訓練機器人折疊褲子的過程中,你可能需要不斷調整獎勵函數,因為它可能會意外地撕破褲子、弄掉一些零部件、不把褲子翻出來就直接折疊,或者以看起來毫無意義的奇怪方式折疊褲子。這樣的話,獎勵的設計變成了一個試驗性的過程,即通過反復的嘗試和試錯來確定什么是有效的獎勵。有無數的報告記錄了深度強化學習模型做出的各種意想不到的動作。
強化學習通常被劃分為除監督機器學習和無監督機器學習以外的第三類,但在我看來,它其實就是監督學習。
當前的強化學習實現步驟是這樣的:你開始訓練模型,然后你看著它失敗然后「死掉」,接著你花費大量的時間一次又一次調整獎勵函數,直到你「有可能」得到一個理想的結果,但僅僅是「有可能」。
這個過程中有哪一步你沒有給系統提供訓練數據?事實上你把整個過程復雜化了,你僅僅是把答案以間接的方式提供給智能體,而這恰恰讓一切變得更加困難。
如果計算機要從周圍的環境中學習,那必須在一個 100% 無監督的環境里進行。
三、當公關大于實質進步,會帶來哪些危害?
那么,為什么關于深度強化學習的炒作如此之多?
如果你站在一個抽象的角度來看待深度強化學習,你就會知道它被描述為一個隨著時間的推移從其環境中學習的智能體。
這似乎是絕對正確的,而且確實「很像」是真的,所有生物都是從出生開始學習如何從其環境中生存和行動。
我們之所以知道這一點,是因為我們做了許多實驗,經驗告訴我們,如果我們改變和限制新生有機體的環境,它們會學到不同的東西,行為也會有所不同。
深度強化學習與諸如監督分類的傳統機器學習方法有很大的不同,傳統的機器學習是一個靜態模型,它獲取原始數據和答案并最終建立一個模型用于生產。在傳統的深度強化學習框架中,系統犯錯的部分就是信號的來源。這些人工智能體必須直接從它們自身和環境中學習,而不是從我們提供給它們的某種人工獎勵函數中學習。
當 DeepMind 推出一個單一的不進行任何人為干涉就可以學會玩 Atari 電子游戲的深度強化學習智能體時,人們認為這種智能體可以泛化到其他領域的各種問題,甚至是通用人工智能。
但我們所了解到的是,有機體和人類所做的大多數事情,都無法建模成通過讓智能體持續優化從而盡可能獲得更多獎勵的電子游戲。不要被「深度強化學習不需要人為干涉就能夠在游戲中獲勝」的新聞所愚弄!設計獎勵這一操作仍然存在,并且在 40 年前,當電子游戲制造商雇傭整支隊伍來制作這些游戲時,就已存在這種操作。
很多人都誤認為深度強化學習是實現通用人工智能的下一個創舉,甚至谷歌也「過分熱情」地花了 5 億多美元收購 DeepMind,希望把人工智能提升到一個新的水平。與此同時,AI 社區似乎也把深度強化學習當成了圣杯,因為它是在某種程度上與我們所處的世界最接近的機器學習形式,盡管實際上還相差甚遠。
我們最終實現的不過是一些「小把戲」,這些智能體也不過是可以玩各種各樣的電子游戲、棋類游戲的小 AI 玩具。
從更傳統的機器學習方法向深度學習轉變的主要好處是,不再需要手動的工程設計。理論上,你可以給模型提供一堆數據,運行優化算法,它不需要你手動編寫特征提取代碼也能進行學習。因此,深度學習已經被應用到部分強化學習中,主要體現在智能體以像素的形式接收感知數據的部分,但是仍然需要研究者花大部分時間來手動設計程序。
這在我看來,深度學習并沒有發揮什么作用!我甚至沒有具體討論其他深度強化學習問題,比如如果你需要稍微調整一下目標,那么你就要準備好重新訓練整個系統,以及環境中的細微變化通常也會導致整個系統徹底失敗,等等。通往通用人工智能的路還很長……
現在DeepMind 和 OpenAI 這樣頂尖的機器學習研究機構,仍然在深度強化學習研究上投入主要的時間和資源。他們不斷地用發布公關新聞轟炸互聯網,展示他們正在取得的巨大進步:深度強化學習系統可以下圍棋,玩 StarCraft、Dota 2,玩魔方等等。
我很困惑,為什么他們繼續花那么多時間來開發有明確的定義規則和得分的系統、能在游戲中獲勝的深度強化學習系統?
我相信現在每個人都明白,如果有足夠多的時間、金錢和計算機來機械地訓練每一個可能的動作,深度強化學習系統幾乎可以在任何游戲中獲勝。我認為他們大部分的策略僅僅是用一些「小把戲」來不斷制造公關效應,以展示最新的深度強化學習系統如何在下一個最佳游戲中大獲全勝,這樣他們就可以繼續從那些不太「懂行」的人那里獲得投資,比如微軟最近給 OpenAI 的 投了10 億美元,谷歌則繼續作為 DeepMind 的「存錢罐」給其投入資金。
DeepMind 最近,也就是在被谷歌收購 5 年后的一個成功案例是,他們訓練了一個深度強化學習的智能體來下圍棋、國際象棋、將棋和玩 Atari 游戲。是的,更多的電子游戲!!!
我的本意并不是抨擊他們,我真的很高興他們仍然在為實現通用人工智能貢獻力量。但問題是,他們制造了很多錯誤的認知,并最終導致大量的人力物力浪費在「死胡同」上。
首先,他們發布的所有公關言論,比如「我們的文本生成模型(GPT-2)太危險了,不能發布」,使得普通大眾認為我們離通用人工智能更近了,然而 AI 行業中的每個人都明白并沒有更近。
其次也是更重要的是,他們錯誤地引導著人工智能研究者們花更多的時間在深度強化學習上。許多研究人員和黑客從這些研究深度學習的公司那里看到了一波又一波為深度強化學習「叫好」的 PR 新聞,當他們原本可以將精力集中在更大、更根本的問題上時,他們卻花費了無數的時間去破解那些相同的問題。
四、要實現通用人工智能,真正要做的是什么?
如果人工智能和通用人工智能要向前發展,我認為是時候停止讓深度強化學習系統玩電子游戲,轉而集中精力解決更棘手的問題了。
所幸 DeepMind 和 OpenAI 的確有花時間解決其他問題,但正如我所說,深度強化學習似乎仍然是他們的主要關注點。
目前的深度強化學習系統似乎可以很好地契合已經有基礎訓練的系統。遷移學習中的智能體已經對其環境和自身有了基本的了解。我們不妨觀察一個人類嬰兒的學習歷程:從出生開始,她(他)首先開始學習觀察形狀和顏色,移動手指,觸摸物體,控制自己的身體,辨別聲音,學習有關重力、物理、墜落、蠕動、彈跳的知識,學習物體恒常性等。每一個人或有機體都會在不同程度上經歷這些學習過程。
通常在嬰兒掌握了大量的知識之后,即當她(他)可以走路、抓握物體、自己上廁所、進行基本的交流等等之后,接下來就是更為正式的訓練,比如家長會送孩子去學校,孩子在學校中會經歷一個結構性更強的學習過程:學校通過家庭作業、評分以及測驗訓練孩子從課程中學習知識。
當前的深度強化學習系統似乎原本可以很好地適用于這種形式化的訓練,在這種訓練中,當智能體對環境有了基本的了解之后,系統可以清晰地、最大程度自動化地給所期待達成的目標指定分數。比方說如果孩子不能背誦 ABC 這三個字母,記為不及格,但如果他們能背誦整個字母表則記為及格。
當前深度強化學習技術正在本末倒置,我們正試圖訓練計算機從零開始完成一些復雜的任務,這種訓練有時可能會有效,但由于這些模型是針對特定的任務而不是泛化能力而訓練的,它們對自己的環境沒有泛化的了解,最終導致系統過于脆弱,效果也不是很好。
只要獎勵函數的問題沒有被解決,再多新的學習算法,如BP 算法、DQN、PPO、DDPG、TRPO 都無法真正解決深度強化學習的問題。
我確信我們會有一些進步,也許會在 Starcraft 中贏得更多的分數,但是如果沒有一個根本性的架構轉變,來實現智能體在無監督的情況下從環境中進行學習,那么這些所謂的進步對于我們實現通用人工智能這一偉大夢想,也就沒有太多的意義。
我自己的假設是,針對學習體的獎勵函數實際上是由維持穩態和將「意外」最小化的動力所驅動的。
穩態是生物維持生存所需的穩定條件的過程。任何有機體都要生存,都必須保持其身體與外界環境分離。生物饑餓的時候要進食,疲倦的時候要睡覺,口渴的時候要喝水,受傷的時候要休息,被獵殺的時候要逃離,炎熱的時候要讓自己涼快一點等等。有機體在環境中行動時,這些與生俱來的原始信號指導著它們該做什么和該關注什么。如果它們不能勝任這些事情,則會導致有機體內失去平衡,最終導致過早死亡。
當生物在四處游蕩時,它會建構自己的感知運動交互作用模型以及與周圍世界交互作用的環境,該模型開始把各種事件匯聚到一起:天黑的時候應該比較冷;當我打嗝,我應該聽到打嗝的聲音;當我向左移動,我應該看到視野在 X 軸上變化;當一只動物走在我前面,它應該繼續向前移動;當我的手指在杯子上掃過,我應該感受到光滑的表面;當我通過聲帶發出聲音,我應該能在我的耳朵里聽到相應的聲音等等。
如果有什么意外的事情發生,有什么東西偏離了它的模型,那么該模型會重新調整它的預期,直到得到它所預期的結果,這也可能會導致更多的移動。如果最終不能得到預期的結果,那么真正的「意外」就會出現,這些神經元就被標記為「需要更新模型」,在這種情況下,重新學習和重新優化可能會實時發生,也可能是在機體處于睡眠狀態時發生。
優化過程會在智能體的內部環境模型和實際環境之間進行,并持續優化以使意外最小化。神經科學和哲學已經在很長一段時間里對這些思想展開過討論,比如 Andy Clark 提出的預測處理的思想以及 Karl Friston 提出的自由能量原理(Free Energy Principle)。
據我所知,這些思想還沒有成功地應用于機器學習環境中。我認為這其中有很多技術問題:如何在計算機中模擬穩態狀態,如何存儲模型的內部表征,智能體的感官和環境之間的低分辨率以及低保真環境等等。
我并非意在采用一個煽動性的標題來寫這篇文章,但我也無法以一種更恰當的方式來向人們說明「當前的深度強化學習架構從根本上而言就是錯的」這一問題。
我們不需要更多可以玩多種電子游戲的深度強化學習模型,我們需要實現的模型是這樣的:它可以在完全無監督的環境中學習智能體和環境之間的泛化表征。這種新的架構可以被稱為「深度強化學習 3.0」、「積極推理」、「預測處理」或其他完全不同的東西,但是請不要再在這個「死胡同」上浪費時間了。
深度強化學習的研究已經取得了一些很有成效且有趣的成果,但是時候繼續前進了。誰能找到方法來構建一個可以在無監督情況下從環境中學習的泛化的人工智能系統,誰就會對 AI 領域做出巨大的貢獻并推動這個領域繼續向前發展。
來源 | 雷鋒網