到目前為止,深度強化學習最成功、最有名的應(yīng)用仍然是 Atari 游戲、圍棋游戲等。即使深度強化學習有很多現(xiàn)實中的應(yīng)用,但其中成功的應(yīng)用并不多。為什么呢?本文總結(jié)目前的挑戰(zhàn)。
所需的樣本數(shù)量太大
深度強化學習一個嚴重的問題在于需要巨大的樣本量。
用 Rainbow DQN 玩 Atari 游戲,達到人類玩家水平,需要至少1800萬幀,且超過1億幀還未收斂。(已經(jīng)調(diào)優(yōu)了多種超參數(shù))
AlphaGo Zero 用了2900萬局自我博弈,每一局約有100 個狀態(tài)和動作。
TD3算法在MuJoCo物理仿真環(huán)境中訓練Half-Cheetah、 Ant、 Hopper等模擬機器人,雖然只有幾個關(guān)節(jié)需要控制,但是在樣本數(shù)量100萬時尚未收斂。甚至連Pendulum,Reacher這種只有一兩個關(guān)節(jié)的最簡單的控制問題,TD3也需要超過10萬個樣本。
現(xiàn)實的問題遠遠比Atari和MuJoCo復(fù)雜,其狀態(tài)空間和動作空間都遠大于Atari和MuJoCo,對于簡單問題RL尚需要百萬、千萬級的樣本,那對于現(xiàn)實復(fù)雜問題,可想樣本量的恐怖。而且,在游戲中獲取億萬樣本并不困難,但是在現(xiàn)實中每獲取一個樣本都比較困難。舉個例子,用機械手臂抓取一個物體至少需要幾秒鐘時間,那么一天只能收集一萬個樣本;同時用十個機械手臂,連續(xù)運轉(zhuǎn)一百天,才能收集到一千萬個樣本,未必夠訓練一個深度強化學習模型。強化學習所需的樣本量太大,這會限制強化學習在現(xiàn)實中的應(yīng)用。
探索階段代價太大
強化學習要求智能體與環(huán)境交互,用收集到的經(jīng)驗去更新策略。在交互的過程中,智能體會改變環(huán)境。在仿真、游戲的環(huán)境中,智能體對環(huán)境造成任何影響都無所謂。但是在現(xiàn)實世界中,智能體對環(huán)境的影響可能會造成巨大的代價。
在強化學習初始的探索階段,策略幾乎是隨機的。
如果應(yīng)用到推薦系統(tǒng)中,上線一個隨機的推薦策略,那么用戶的體驗會極差,很低的點擊率也會給網(wǎng)站造成收入的損失。
如果應(yīng)用到自動駕駛中,隨機的控制策略會導致車輛撞毀。
如果應(yīng)用到醫(yī)療中,隨機的治療方案會致死致殘。
在物理世界的應(yīng)用中,不能直接讓初始的隨機策略與環(huán)境交互,而應(yīng)該先對策略做預(yù)訓練,再在真實環(huán)境中部署。 其中涉及離線強化學習(Offline RL),是一個很有價值的研究方向。
- 一種方法是事先準備一個數(shù)據(jù)集,用行為克隆等監(jiān)督學習方法做預(yù)訓練。
- 另一種方法是搭建模擬器,在模擬器中預(yù)訓練策略。
超參數(shù)的影響非常大
深度強化學習對超參數(shù)的設(shè)置極其敏感,需要很小心調(diào)參才能找到好的超參數(shù)。
超參數(shù)分兩種:神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)超參數(shù)、算法超參數(shù)。這兩類超參數(shù)的設(shè)置都嚴重影響實驗效果。換句話說,完全相同的方法,由不同的人實現(xiàn),效果會有天壤之別。
- 結(jié)構(gòu)超參數(shù): 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)超參數(shù)包括層的數(shù)量、寬度、激活函數(shù),這些都對結(jié)果有很大影響。拿激活函數(shù)來說,在監(jiān)督學習中,在隱層中用不同的激活函數(shù)(比如 ReLU、Leaky ReLU)對結(jié)果影響很小,因此總是用 ReLU 就可以。但是在深度強化學習中,隱層激活函數(shù)對結(jié)果的影響很大;有時 ReLU 遠好于 Leaky ReLU,而有時 Leaky ReLU 遠好于 ReLU。由于這種不一致性,我們在實踐中不得不嘗試不同的激活函數(shù)。
- 算法超參數(shù): 強化學習中的算法超參數(shù)很多,包括學習率、批大小 (Batch Size)、經(jīng)驗回放的參數(shù)、探索用的噪聲。(Rainbow 的論文調(diào)了超過 10 種算法超參數(shù)。)
實驗效果嚴重依賴于實現(xiàn)的好壞。哪怕是一些細微的超參數(shù)區(qū)別,也會影響最終的效果。 即使都用同一個算法,比如 TRPO 和 DDPG 方法,不同人的編程實現(xiàn),實驗效果差距巨大。
實驗對比的可靠性問題。如果一篇學術(shù)論文提出一種新的方法,往往要在 Atari、MuJoCo 等標準的實驗環(huán)境中做實驗,并與 DQN、DDPG、TD3、A2C、TRPO 等有名的基線做實驗對照。但是這些基線算法的表現(xiàn)嚴重依賴于編程實現(xiàn)的好壞,如果你把自己的算法實現(xiàn)得很好,而從開源的基線代碼中選一個不那么好的做實驗對比,那你的算法可以輕松打敗基線。
穩(wěn)定性極差
強化學習訓練的過程中充滿了隨機性。除了環(huán)境的隨機性之外,隨機性還來自于神經(jīng)網(wǎng)絡(luò)隨機初始化、決策的隨機性、經(jīng)驗回放的隨機性。想必大家都有這樣的經(jīng)歷:用完全相同的程序、完全相同的超參數(shù),僅僅更改隨機種子(Random Seed),就會導致訓練的效果有天壤之別。如果重復(fù)訓練十次,往往會有幾次完全不收斂。哪怕是非常簡單的問題,也會出現(xiàn)這種不收斂的情形。
所以實驗時即使代碼和超參數(shù)都是對的,強化學習也有可能會出現(xiàn)不收斂的情況。監(jiān)督學習則幾乎沒有這種擔憂。
總結(jié)與未來
RL需要過多的數(shù)據(jù)量,且現(xiàn)實應(yīng)用中收集數(shù)據(jù)成本和代價太大。即使收集到合適數(shù)據(jù),訓練網(wǎng)絡(luò)時,超參數(shù)和隨機種子等因素對模型的訓練影響非常大,不穩(wěn)定。
近年來,研究人員提出了多種方法來應(yīng)對這些問題,提高RL的實用性和效率。以下是一些前沿的改進方法:
- 使用模擬環(huán)境和數(shù)據(jù)增強,減少對真實世界數(shù)據(jù)的需求,但是這樣訓練出來的模型如溫室的花朵。
- 事先準備一個數(shù)據(jù)集,用行為克隆等監(jiān)督學習方法做預(yù)訓練,再進入現(xiàn)實做環(huán)境交互,進一步訓練。
- 遷移學習與元學習,減少新任務(wù)所需數(shù)據(jù)量。
- 多任務(wù)學習和強化學習的結(jié)合,同時學習多個相關(guān)任務(wù),共享知識以提高學習效率和泛化能力。
- 模型基的RL,構(gòu)建環(huán)境模型以預(yù)測未來狀態(tài)和獎勵,減少對真實環(huán)境交互的依賴。
- 自適應(yīng)超參數(shù)調(diào)整。
- 集成學習和強化學習結(jié)合,結(jié)合多個模型或策略,以減少單一模型或策略的不穩(wěn)定性和偏差。
- 利用大模型,具身智能等技術(shù),讓模型更具泛化性。
本文內(nèi)容為看完王樹森和張志華老師的《深度強化學習》一書的學習筆記,十分推薦大家去看原書!