為什么說強化學(xué)習(xí)在近年不會被廣泛應(yīng)用?
來源:知乎
https://www.zhihu.com/question/404471029
文章僅做學(xué)術(shù)分享,著作權(quán)歸屬作者,侵刪
攻城獅子(南洋理工大學(xué),擅長強化學(xué)習(xí)、軟件架構(gòu)、模糊測試)回答:
做過兩年多RL,發(fā)過幾篇頂會,以及有幸與國內(nèi)top的游戲公司合作過,落地這塊有一定的經(jīng)驗。
嘗試用大白話說點本質(zhì)問題。
不被廣泛應(yīng)用的原因是:
數(shù)據(jù)收集過程不可控
跟監(jiān)督學(xué)習(xí)不一樣,強化學(xué)習(xí)的數(shù)據(jù)來自agent跟環(huán)境的各種交互。對于數(shù)據(jù)平衡性問題,監(jiān)督學(xué)習(xí)可以通過各種補數(shù)據(jù)加標簽來達到數(shù)據(jù)平衡。但這件事情對強化學(xué)習(xí)確實非常難以解決的,因為數(shù)據(jù)收集是由policy來做的,無論是DQN的Q-network還是AC架構(gòu)里的actor,它們在學(xué)習(xí)過程中,對于任務(wù)激勵信號的理解的不完善的,很可能絕大部分時間都在收集一些無用且重復(fù)的數(shù)據(jù)。
舉個例子,比如一個走迷宮任務(wù),分為A、B兩個房間,agent需要從A出發(fā),到B中拿到鑰匙。從A走出去大約需要100步,這意味著需要收集房間B里的state-transition信息,需要先解決怎么繞出A。而學(xué)習(xí)在B中拿到鑰匙這個目標,需要收集大量的重復(fù)經(jīng)驗。這些重復(fù)經(jīng)驗的規(guī)模很可能遠遠大于房間B中學(xué)習(xí)拿到鑰匙所收集的數(shù)據(jù)。雖然有prioritized replay buffer來解決訓(xùn)練優(yōu)先級的問題,但實際上是把重復(fù)的經(jīng)驗數(shù)據(jù)都丟棄了。在實際應(yīng)用中,面對一些稍微復(fù)雜點的任務(wù)還是需要收集一大堆重復(fù)且無用的數(shù)據(jù)。這也是DRL sample efficiency差的原因之一。
環(huán)境限制
DRL問題中,環(huán)境都是從初始狀態(tài)開始,這限制了很多可能的優(yōu)化方向。比如在狀態(tài)空間中,可以針對比較“新”的狀態(tài)重點關(guān)注,控制環(huán)境多到這個狀態(tài)。但目前的任務(wù),很多環(huán)境的state-transition function都是stochastic的,都是概率函數(shù)。即便記錄下來之前的action序列,由于環(huán)境狀態(tài)轉(zhuǎn)移的不確定性,也很難到達類似的狀態(tài)。更別提policy本身也是stochastic的,這種雙重stochastic疊加,不可能針對“重點”狀態(tài)進行優(yōu)化。
同時這種限制也使得一些測試場景成為不可能。比如自動駕駛需要測試某個彎道,很難基于當(dāng)前的policy在狀態(tài)空間中達到類似的狀態(tài)來重復(fù)測試policy在此狀態(tài)下的魯棒性。
玄之又玄,可解釋性較差
本來Q-learning就是一個通過逐步學(xué)習(xí)來完善當(dāng)前動作對未來收益影響作出估計的過程。加入DNN后,還涉及到了神經(jīng)網(wǎng)絡(luò)近似Q的訓(xùn)練。這就是“不靠譜”上又套了一層“不靠譜”。如何驗證策略是正確的?如何驗證Q function是最終收斂成為接近真實的估計?這些問題對于查表型的Q-learning來說,是可以解決的,無非就是工作量的問題。但對于大規(guī)模連續(xù)狀態(tài)空間的DQN來說,基本上沒法做。論證一個policy有效,也就是看看render以后的效果,看看reward曲線,看看tensorborad上的各個參數(shù)。連監(jiān)督學(xué)習(xí)基本的正確率都沒有。然后還要根據(jù)這些結(jié)果來調(diào)reward function,基本上都在避免回答why這個問題。
隨機的探索
DRL的探索過程還是比較原始?,F(xiàn)在大多數(shù)探索,epsilon-greedy,UCB都是從多臂老虎機來的,只針對固定state的action選擇的探索。擴展到連續(xù)狀態(tài)空間上,這種隨機探索還是否有效,在實際落地過程中,還是要打個問號。因為也不能太隨機了。大家都說PPO好,SAC強,探索過程也只不過是用了stochastic policy,做了個策略分布的熵的最大化。本質(zhì)還是純隨機。雖然有些用好奇心做探索的工作,但也還是只把探索任務(wù)強加給了reward,指標不治本。
比如在自動駕駛?cè)蝿?wù)中,學(xué)習(xí)車不上馬路牙子這件事情。DRL的探索策略是,我開車的時候都正常開,突然有一剎那我想來點新鮮的,拐到馬路牙子上探索一下上馬路牙子是什么后果(reward -1000?。?/p>
然后它并沒有學(xué)乖,通常要在類似位置上幾千幾萬次馬路牙子才能漲點記性,因為這個規(guī)模的數(shù)據(jù)才能回傳給之前的狀態(tài)轉(zhuǎn)移,通過大規(guī)模訓(xùn)練影響決策。然而,因為探索概率還在,下次碰上隨機時刻,又要上一下。這只是針對樣式A的馬路牙子,對于樣式BCDEF,都要重復(fù)類似過程才能最終訓(xùn)出來一個看起來不錯的司機。人類不一樣,成年了(多年的智力開發(fā)),教練說別上馬路牙子,基本上通過幾次低速的左拐右拐就能完全勝任這個任務(wù)。DRL對于Q的估計過程過于粗暴,不會像人類那樣總結(jié)出來“只要是馬路牙子就不能上”這樣形式化的概念,而是收集海量馬路牙子的案例,來訓(xùn)練狀態(tài)操作空間中對于類似的與之關(guān)聯(lián)的操作的估計。
所以總結(jié)一下,當(dāng)前DRL的實際科研的進步速度要遠遠慢于大眾對于AI=DL+RL的期望。
能解決的問題:
固定場景:狀態(tài)空間不大,整個trajectory不長
問題不復(fù)雜:沒有太多層次化的任務(wù)目標,獎勵好設(shè)計
試錯成本低:咋作都沒事
數(shù)據(jù)收集容易:百萬千萬級別的數(shù)據(jù)量,如果不能把數(shù)據(jù)收集做到小時級別,那整個任務(wù)的時間成本就不太能跟傳統(tǒng)的監(jiān)督相比
目標單純:容易被reward function量化,比如各種super-human的游戲。對于一些復(fù)雜的目標,比如幾大公司都在強調(diào)擬人化,目前沒有靠譜的解決方案
領(lǐng)域來講也就只有游戲了,而且是簡單游戲,比如固定場景、小地圖上的格斗,比如街霸、王者之類。要是大地圖、開放世界的話,光撿個槍、開個寶箱就能探索到猴年馬月了。
而且現(xiàn)在游戲的落地,也沒想象中那么fancy,基本沒有圖像類輸入,全是傳感器類的內(nèi)部數(shù)據(jù),所以同類型任務(wù)的訓(xùn)練難度還沒到Atari級別。比如敵方英雄冷卻時間,人類是記住之后估算的,強化agent可以直接拿到實際值(這種非視覺的輸入很欺負人,比如LOL的各種躲技能腳本)。其實有點類似作弊,很多行業(yè)內(nèi)應(yīng)用都是類似的trick搭起來的。(這里提一句,如果質(zhì)疑其公平性,其實有些落地項目都不能嚴格說是super human的)而且訓(xùn)練代價超級高,特別是解決收集數(shù)據(jù)+探索,耗的CPU用量真的燒錢。最近這幾年時間,DOTA2和星際基本上是游戲領(lǐng)域內(nèi)到頂?shù)穆涞亓恕?/p>
給大三大四研一的,想做強化的同學(xué)們一點信息:
強化學(xué)習(xí)崗位很少,因為落地難+燒錢,基本只有幾個頭部游戲公司會養(yǎng)一個規(guī)模不大的團隊。
純強化的技術(shù)棧不太好跳槽,除了游戲外,別的領(lǐng)域很難有應(yīng)用。
20年huawei的強化夏令營,同時在線也有好幾萬人,想想這規(guī)模,未來幾年這些研究生到j(luò)ob market會多卷。。。
建議是,做強化的盡量讀博走研究道路,找工作要結(jié)合領(lǐng)域,比如游戲AI,多看點行為樹之類的,這樣找工作要容易一些。
有同學(xué)問推薦,我的建議是以推薦為主,RL為輔的姿態(tài)來看待這個事情。

王源(運籌優(yōu)化博士、機器學(xué)習(xí)半吊子)回答:
講個段子,權(quán)當(dāng)聽相聲,各位看官切勿當(dāng)真:
每當(dāng)有人問我強化學(xué)習(xí)能否解決他們的問題時,我會說“不能”。而且我發(fā)現(xiàn)這個回答起碼在70%的場合下是正確的。
強化學(xué)習(xí)是唯一一個可以明目張膽地在測試集上進行訓(xùn)練的機器學(xué)習(xí)網(wǎng)絡(luò)。
都2020了強化學(xué)習(xí)除了能玩游戲還能做什么?
很多時候我都不知道自己 是在做強化學(xué)習(xí) 還是在做一個仿真系統(tǒng)。
強化學(xué)習(xí)不就是 Approximation dynamic programming 嗎?(model predictive control 和 LQR 紛紛表示不服)
如果有人說機器學(xué)習(xí)是玄學(xué)煉丹的話,那是因為他還沒有嘗試過Reward function的設(shè)計。
說到這里我覺得我并不是不看好強化學(xué)習(xí)的應(yīng)用前景,我個人感覺強化學(xué)習(xí)是目前值得研究的一個topic,那么之所以拋出上面這些對強化學(xué)習(xí)的吐槽,是希望能夠全面看待問題。我非常欣賞的一句話就是 每個科研人員都必須學(xué)會如何憎恨自己研究的領(lǐng)域。
尤其在寫paper的時候我們多少都會刻意強調(diào)優(yōu)點而掩蓋或者回避掉缺點,這其實對于真正想要落地的研究領(lǐng)域是非常不健康的。希望在有生之年 可以見證在各位的努力下 能把上面那些吐槽的難題都解決了。青山不改,綠水長流,科研不易,道阻且長。

納米醬回答:
首先,強化學(xué)習(xí)的特點是面向目標的算法,過程你基本很難拆解,沒法管控,如果你的目標沒法在商業(yè)公司被很好的認可,你用強化就失去了意義。
其二,目標導(dǎo)向最強的無非就是賺錢和省錢,就拿容易賺錢的場景,而且賺錢就是主要目標的黃賭毒系統(tǒng)來說。強化學(xué)習(xí)目前的樣本使用率還是低,提高樣本效率對系統(tǒng)入侵性還是太強。工業(yè)屆目前大部分黃賭毒系統(tǒng)設(shè)計初衷是分離訓(xùn)練和推理階段的,而且訓(xùn)練的批處理以及線上的流處理不是同一套系統(tǒng),甚至完全接口都不是一個邏輯,強化學(xué)習(xí)真的完全做到online,需要耦合訓(xùn)練和推理過程,工程上需要批流一致化,把線上推理和online的學(xué)習(xí)放到一個工程模塊里面,但是批流一致基本上不會落盤讓你cat 一下中間結(jié)果,對從業(yè)者寫代碼能力要求略高,容易搞得線上線下不一致。
其三,有大量日記和行為數(shù)據(jù)可以重構(gòu)出整個環(huán)境,而且基本上,我們不會認為最優(yōu)解會超出日記的覆蓋范圍,最優(yōu)解肯定是日記分布的一個子集。不然按照目前整個互聯(lián)網(wǎng)kpi的設(shè)定,這個系統(tǒng)也是做成一坨屎才有如此顯著的缺陷性,只是到底處于日記分布那一塊,這個無法探明,需要人去理解目標。
最后,整個鏈路的優(yōu)化非常扯,確實業(yè)務(wù)鏈路很多參數(shù)可以調(diào),有很多貌似可以提升的操作空間,但是別忘了,一個鏈路節(jié)點只要是被人占據(jù),就是一個kpi,然后系統(tǒng)成型以后不會有人讓你把整個系統(tǒng)都交給一個算法管理,這種社會問題很多,導(dǎo)致做強化的只能做一個很小的單點問題的提升,不是系統(tǒng)性解決方案,強化的策略空間的可操作范圍不大,沒有實質(zhì)的意義。

np.random(電子科大,CS碩士在讀)回答:
這里嘗試從兩個方面進行回答:
1. 強化學(xué)習(xí)對環(huán)境的強依賴性
2. 強化學(xué)習(xí)的難封裝性。
環(huán)境強依賴性
一直以來強化學(xué)習(xí)都憑借其對先驗數(shù)據(jù)樣本的低依賴性而備受人們的喜愛,但由于整個數(shù)據(jù)訓(xùn)練中所有的數(shù)據(jù)樣本都來自于與環(huán)境進行真實互動得到,即“試驗的同時獲取數(shù)據(jù)”,這就導(dǎo)致了強化學(xué)習(xí)必須不斷和環(huán)境進行交互才能不斷成長、不斷進步。而強化學(xué)習(xí)的“試錯機制”又決定了在訓(xùn)練初期,模型需要經(jīng)歷過非常多次的“挫折”才能學(xué)會“避免挫折”,但在某些真實場景中試錯成本是很高的,拿無人駕駛來說,如果從零開始訓(xùn)練,汽車需要經(jīng)歷過很多次的撞車后才能學(xué)會不再撞車,但這樣的試錯成本太高了,使得人們難以接受。
為此,人們考慮過建立真實環(huán)境的模擬仿真,把在仿真中訓(xùn)練好的模型直接遷移應(yīng)用到真實世界中,但這樣就對仿真系統(tǒng)提出了極高的要求,仿真系統(tǒng)必須對真實世界進行完美的逼近仿真,保證仿真中所產(chǎn)生的訓(xùn)練數(shù)據(jù)要和現(xiàn)實世界中所產(chǎn)生的數(shù)據(jù)有非常高的還原性,即數(shù)據(jù)一致性問題。這樣一來一個強化學(xué)習(xí)問題就變成了一個完美仿真的構(gòu)建問題了,很多時候搭建一個高還原度仿真的難度甚至大過了強化學(xué)習(xí)本身的難度,有一點本末倒置的感覺。
“學(xué)習(xí)自仿真”又“應(yīng)用于仿真”的最好實例就是游戲中的AI模型,從訓(xùn)練到最后應(yīng)用都是在游戲環(huán)境中,這也是為什么目前RL大多數(shù)取得的成就基本都是基于游戲環(huán)境(諸如星際/騰訊的覺悟等),因此我覺得RL要想落地應(yīng)用的話,訓(xùn)練環(huán)境應(yīng)該是其中一個非常重要的考慮因素吧,如果虛擬到現(xiàn)實的遷移問題一旦被解決,我認為RL落地的項目會越來越多。
難封裝性
為什么說RL難封裝?現(xiàn)在不是已經(jīng)有那么多成熟的算法框架了嗎,不是可以直接用嗎?其實這里主要還是和視覺作比較得出來的結(jié)論,在之前做項目的時侯曾經(jīng)接觸過國外某大廠開源的一個視覺分類的框架,從GUI到算法都給你寫好,你只需要按路徑加載自己的圖片分類數(shù)據(jù)集,點一點手指按下訓(xùn)練按鈕算法就開始自己運行了,你甚至都不用了解Deep Learning相關(guān)的任何知識,按照使用說明加載數(shù)據(jù)集就能train出一個不錯的分類模型。這真是太棒了,從模型搭建到參數(shù)設(shè)置都不用用戶關(guān)心,用戶要做的只有搜集自己的數(shù)據(jù)集并加載就可以,整個訓(xùn)練過程對用戶均保持透明。那現(xiàn)在的RL能做到這樣嗎?就我的看法來說目前還是做不到的,其根本原因在于RL中一個非常重要的環(huán)節(jié)——Reward Design。
Reward的設(shè)計對于一次RL來說真的是太重要了,前段時間國外有個企業(yè)家批判現(xiàn)在的強化學(xué)習(xí)就是在waste time,其依據(jù)就是說RL的設(shè)計初衷本該是解放人們的勞動力,讓機器自己去試錯自己去學(xué)習(xí),人們不用過多的介入,但現(xiàn)在RL的效果并不是這樣,RL內(nèi)部存在非常多的human engineering,這違背了RL的設(shè)計初衷。我并不同意他說RL就是一門waste time的技術(shù),但就human engineering這一點上我確實深有體會,以我個人經(jīng)驗來說,每一次用RL解決實際問題的時候耗時最多的并不是在算法選型上,而是在做reward design。我們需要考慮大量的方法來引導(dǎo)模型能夠?qū)W到我們期望它學(xué)到的知識,并且使用很多技巧來讓每一個reward產(chǎn)生的是“有意義”的,也就是說目前的RL還沒有足夠智能到不需要人為的參與就能夠快速自我進化。因此,場景的多樣化和reward的處理機制復(fù)雜多樣成為了RL難以被封裝的一個重要原因。
因此,我個人認為要說RL在近幾年內(nèi)沒有辦法像視覺那樣成熟的被廣泛引用的話,主要原因應(yīng)該就是以上兩點吧。

俞揚(南京大學(xué),人工智能)回答:
已經(jīng)開始在應(yīng)用,并且未來2-3年學(xué)術(shù)界的落地突破將受到關(guān)注。一旦扎實的落地了,強化學(xué)習(xí)將展示出前AI技術(shù)所未有的通用性,同時也是極具威脅性的技術(shù),預(yù)測將迅速形成寡頭壟斷。

