深度強化學習(deep reinforcement learning,DRL)是深度學習與強化學習相結合的產物,它整合了深度學習在視覺等感知問題上強大的理解能力,以及強化學習的決策能力,實現了端到端學習。深度強化學習的出現使得強化學習技術真正走向實用,得以解決現實場景中的複雜問題。深度強化學習被認為是通往通用人工智慧聖盃的必經之路。但是,事實如何呢?
現在,我們剛進入 2020 年,我想看看 2019 年人工智慧進展怎麼樣了。特別是深度強化學習(Deep Reinforcement Learning,Deep RL),已經被炒作是通往通用人工智慧(Artificial General Intelligence,AGI)的下一個關鍵階段,通用人工智慧是一種計算機演算法,可以像人類一樣學習做任何事情。
幾年來,研究人員一直在致力於深度強化學習的研究,取得了漸進性進展。圍繞深度強化學習的想法和希望是,你可以輕鬆地訓練智慧體去做理論上的任何事情,比如開車、疊衣服、玩電子遊戲、打掃房間、解魔方等等,而所有這些都不需要掌握學習過程。其中一些實驗已經取得了一定的成功,你可以教會深度強化學習智慧體玩一些電子遊戲和棋類遊戲,但是將深度強化學習的任何成果轉移到現實世界的生產系統中,卻無一例外都失敗了。截止目前,2020 年 1 月,我仍然不知道有哪一個生產系統使用了深度強化學習。
深度強化學習系統有很多問題,在本文中,有關這些問題的細節我不打算贅述,因為有很多博文已經討論了這些問題。
深度強化學習存在什麼問題?
如果這些問題中,哪怕只得到了一點點改善或者解決,比如,找到更抽象的方法來表示神經網路內部的資訊,我並不會為此感到震驚,但是,如果不能解決那些我認為是核心問題,也沒有關係:手動獎勵函式(工程)。在深度強化學習中,我想說的是,大部分時間都花在了設計你的獎勵函式上,以便讓你的智慧體能夠做你想做的事情。用更傳統的機器學習術語來說,獎勵函式就是一個目標函式,演算法使用這個函式來判斷它是否朝著正確的方向前進,獲得的獎勵越多,模型就越“好”。
例如,教會機械臂疊衣服,假設你有一堆褲子,你該如何寫一個獎勵函式來正確地疊衣服呢?當你向另一個人描述這一點聽起來很容易,不過是“把這堆褲子疊整齊了”。但是,計算機根本就不理解這些規則是什麼意思。對於每個實驗,你必須用一種計算機能夠自己衡量進展的方式來設計你的獎勵函式,而不需要知道它實際在做什麼。因此,你可能會從機械臂觸控褲子開始獎勵,然後機械臂抓住褲子或者移動褲子就獎勵更多的分數。實際的摺疊動作這塊,你該如何獎勵呢?疊三折可以得到獎勵嗎?不起皺的話,獎勵怎麼算?你最終花了如此多的時間試圖引導智慧體遵循正確的路徑,以至於它基本上已經變成了完全監督式學習的問題。
從理論上講,你可以讓一個人監視訓練過程,然後他為系統採取的每個動作打分進行獎勵,但這個並不具有規模性。這些深度強化學習系統需要在任何地方執行,從成千上萬次到數百萬次的迭代,嘗試各種動作的變化,以找出實現目標的正確序列,而人類不可能監視計算機所採取的所有步驟。目前,有很多活躍的研究,試圖透過模仿學習來實現這種規模化,但對我來說,這些做法只不過是在原本就已經支離破碎的東西上修修補補而已。
在試圖訓練機械臂疊褲子的過程中,你可能需要不斷調整獎勵函式,因為機械臂可能會不小心撕爛褲子、掉落部件、從裡往外翻過來時摺疊它們,或者以看起來沒有任何意義的、奇怪的方式進行摺疊。獎勵工程變成了一個不斷試錯的實驗過程,透過反覆實驗來確定什麼是有效的操作。有無數的記錄報告表明,深度強化學習模型經常會做出各種意想不到的動作。強化學習通常被與監督式和無監督式機器學習一起被歸為第三類,但在我看來,它實際上就是監督式學習。
當前,深度強化學習的過程是:你開始訓練這個模型,然後你看著模型失敗,然後,你一遍又一遍地調整獎勵函式,直到可能,只是可能,你得到了一個你想要的輸出。這裡面有哪個部分沒有給它提供訓練資料呢?你已經讓整個過程變得複雜化了,將答案以非直接的方式提供給智慧體,從而使所有的事情都變得更加困難了。如果計算機要從它們的環境中學習,它就必須在百分百無人監督的環境裡進行。
為何深度強化學習有如此鋪天蓋地的炒作?
如果你從抽象層次來看待深度強化學習的話,它會被描述為是這樣的一個智慧體,能夠隨著時間的推移從它所在的環境中進行學習。這看起來似乎是完全正確的,而且也確實模仿了現實,所有的生物都是從出生開始就學習如何在它們所處的環境中生存和探索。我們之所以知道這一點,是因為我們已經進行了許多實驗,經驗表明,如果我們改變和限制新生生物所在的生存環境,它們就會學到不同的東西,並且,行為也會有所不同。
深度強化學習與傳統的機器學習方法(如監督分類)有很大的不同,在傳統的機器學習方法中,它是一個靜態模型,可以用於獲取原始資料、回答問題並構建用於生產環境的模型。傳統的深度強化學習框架中存在問題的是訊號源。這些人工智慧體必須直接從環境中學習,而不是從我們提供給它們的某種手動獎勵函式中學習。當 DeepMind 推出一個可以在幾乎沒有任何干預的情況下玩雅達利(Atari)電子遊戲的深度強化學習智慧體時,人們認為它可以擴充套件到其他領域的各種問題,甚至是潛在的通用人工智慧。而我們所瞭解到的是,生物和人類所做的大多數事情,都不能建模成電子遊戲,在遊戲中,智慧體會為了獲得儘可能多的獎勵而進行最佳化。不要被深度強化學習無需人工操作就能贏得遊戲所唬住,獎勵函式(工程)仍然會發生——40 年前,當時電子遊戲製造商僱傭了整個團隊來製作這些遊戲。
許多人犯了錯誤,他們認為深度強化學習就是通往通用人工智慧的下一步,甚至谷歌對此也表現出了極大的熱情,並斥資 5 億美元收購了 DeepMind,希望將人工智慧提升到一個新的水平。社群似乎也將深度強化學習當成了聖盃,因為它是最接近於模仿我們自身現實的機器學習形式,儘管在現實中,它實際上還差得很遠。我們最後得到的只是許多雕蟲小技,小小的人工智慧玩具可以玩各種電子遊戲、棋類遊戲,除此之外就別無它用了。
從更傳統的機器學習方法轉向深度學習的主要好處在於,它使人工繁重的工程不復存在。從理論上講,你可以為模型提供大量資料,執行最佳化演算法,它將無需你手動編寫特徵提取程式碼即可進行學習。因此,深度學習已經被應用到強化學習的一部分,主要是在智慧體一端以畫素的形式獲得感知資料,但如果你仍然花費大部分時間花在手工設計系統,那麼在我看來,它仍然沒有起到應有的作用。我甚至沒有深入討論其他深度強化學習問題的細節,比如如果你需要稍微修改目標,就要做好重新訓練整個系統的準備;或者環境中的細微變化通常會導致前功盡棄……而通用人工智慧還在路上。
這就是為什麼我們現在有頂尖的機器學習研究機構,DeepMind 和 OpenAI,仍然將大部分時間和資源花在深度強化學習上的原因。他們不斷地用公關資訊轟炸網際網路,展示他們正在取得的巨大進步:深度強化學習可以下圍棋、打星際爭霸、Dota 2、解魔方等等。
我搞不懂他們為什麼繼續花這麼多時間來構建深度強化學習系統,這些深度強化學習系統只不過是用明確定義的規則和積分系統擊敗遊戲罷了。我想,現在每個人都已經明白,只要有足夠的時間、金錢和算力來暴力完成每一個可能的動作,深度強化學習幾乎可以打敗任何遊戲。我相信他們的策略很大一部分是公關文章丟擲煙幕彈,展示最新的深度強化學習如何擊敗下一個最好的遊戲,這樣,他們就可以繼續忽悠那些不太瞭解的人來投資,只要看看 Microsoft 給 OpenAI 的 10 億美元,還有 Google 仍然繼續為 DeepMind 燒錢。DeepMind 最近取得的成功之一(在被 Google 收購約 5 年後),是他們訓練了一個深度強化學習的智慧體來下圍棋、國際象棋、日本將棋和雅達利遊戲。是的,更多的電子遊戲!我並不是想要打擊他們,我真的很高興他們始終沒有放棄,一直努力解決通用人工智慧的問題。
是時候讓深度強化學習做點什麼了
但問題在於,他們製造了許多錯誤的認知,最終在死衚衕上浪費了大量的人力。首先,他們釋出的所有公關文章如出一轍,如“我們的文字生成模型(GPT-2)太過危險而不能釋出”之類,讓公眾認為我們離通用人工智慧越來越近了,但實際上,業內每個人都知道,我們離通用人工智慧還遠著呢。其次,更重要的是,他們向人工智慧研究人員發出了錯誤的訊號,讓他們將更多的時間花在深度強化學習上。許多研究人員和駭客都仰望這些公司,看到這些公關文章氾濫成災,當他們本可以將精力集中在更大、更根本的問題上時,他們卻花了無數的時間來解決同樣的問題。如果人工智慧和通用人工智慧要向前發展,我認為,是時候停止玩電子遊戲,集中精力解決更棘手的問題了。
幸運的是,DeepMind 和 OpenAI 確實在其他問題領域花費了時間,但正如我所言,深度強化學習仍然是他們的主要關注點。
目前的深度強化學習系統似乎非常適合那些已經接受過基本訓練的系統。想一下遷移學習,在這種情況下,如果智慧體對其所在的環境和自身有了基本的瞭解會怎麼樣。觀察一個人類嬰兒從出生開始,他首先要學會看形狀和顏色,動動手指,觸控物體,控制他的身體,辨別聲音,瞭解重力、物理現象、下墜、柔軟、彈力,瞭解物體的滲透性等等。而所有這一切都在不同程度上發生在每一個活生生的人和生物身上。通常情況下,當人類嬰兒掌握了大量的知識之後,就可以走路、抓住物體、上廁所、進行基本的交談等等,然後就進行更正式的訓練,例如把小孩送到學校,在那裡他會經歷更有組織的學習過程:家庭作業、評分和測驗,以訓練孩子從課程中學習到知識。
當前的深度強化學習系統似乎可以很好地用於這種正式的訓練,在這種訓練中,可以清楚地達到期望的目標,並且在智慧體已經基本掌握它所在的環境後,大多數情況下能夠自動進行評分。如果孩子不能背誦 ABC,就是不及格;如果他們能夠背下整個字母表,就算及格。目前,深度強化學習是本末倒置的,我們試圖從零開始訓練計算機來完成複雜的任務,有時候可能會能完成,但這是因為這些模型是為特定的任務而不是泛化進行訓練的,他們對自己的環境沒有全面的瞭解,最終導致系統過於脆弱,無法很好地工作。只要獎勵函式不是固定的,那麼再多新的學習演算法,如反向轉播、DQN、PPO、DDPG、TRPO,都無法修復深度強化學習。
我相信,我們會不斷改進,也許會從星際爭霸中獲得更多的分數,但如果沒有基本的架構轉變,允許智慧體以無監督的方式從它所在的環境中學習,那麼它就不會為通用人工智慧的聖盃做出巨大的貢獻。
我自己的設想是,學習生物的獎勵功能實際上是保持穩態和最小化意外來驅動的。穩態是生物維持生存所需的穩定條件的過程。每個生物都必須生存下來,並保持其身體與外界環境分離。飢餓時,它就會進食;疲倦時,它就會睡眠;口渴時,它會喝水;被追捕時,它會逃避;天熱時,它會避暑;如此等等。這些與生俱來的原始訊號告訴生物在環境中探索時應該做什麼,以及關注什麼。如果做不到這些的話,就會導致無法維持穩態,最終導致夭折。
當生物在四處遊蕩時,它會建立一個模型,它自己的感知運動與環境互動,因為它要與外界互動。它的模型開始將所有的東西組合在一起:天黑的時候,天氣應該是寒冷的;當打嗝的時候,應該能聽到一個聲音;當用手指撫觸杯子時,應該能感覺到光滑的表面;當透過聲帶發出聲音時,應該在耳朵裡聽到相應的聲音;等等。如果發生任何意外情況,偏離了它的模型,那麼模型就會重新調整它的預測,直到它得到所期望的結果,這可能會導致更多的變化。如果失敗了,那麼就會出現真正的意外,這些神經元就會被標記為“需要模型更新”,在這種情況下,重新學習和重新最佳化可能會實時發生,也可能在生物睡眠時發生。最佳化發生在智慧體的內部環境模型和實際環境之間,並持續執行以最大程度減少意外。這些觀點在神經科學和哲學中已經討論了很長一段時間,像 Andy Clark 的關於 預測處理 的觀點、Karl Friston 和他的 自由能原理(free energy principle)。據我所知,我還沒有看到這些想法在機器學習環境中成功部署。我認為存在很多技術問題:計算機中如何模擬穩態,模型的內部表示如何儲存,智慧體的感覺器官與換進高剪枝的低解析度,以及低保真度環境等問題。
我寫下本文的本意並非要使用引起網路論戰的標題,但我想不出一種方法,該如何向公眾解釋當前的深度強化學習架構存在根本性的缺陷。我們不需要更多的模型來玩更多的電子遊戲,我們需要的是,實現可以學習智慧體和它們所處的環境之間的廣義表示,可以在完全無監督的“莊園”中學習。這種新架構可能會被稱為深度強化學習 3.0,、主動推理、預測處理或其他完全不同的東西,但是請不要在這個死衚衕上浪費時間了。
深度強化學習的研究已經提出了一些很酷炫、很有趣的工作,但現在是時候繼續前進了。無論是誰,只要能夠找到一種方法,構建下一代的人工智慧架構,能夠在無監督的情況下從自身環境中寫序,都將帶來鉅變,並推動這一領域向前發展。
作者介紹:
JToy(朱仲光),研究認知,用智力模型進行實驗,思考意識的問題。目前正在撰寫一本關於人工智慧的書籍。熱衷進行計算藝術,愛好構建軟體公司,目前正在建立 Cloudapp。