- 深度強化學習算法與實踐:基于PyTorch的實現
- 張校捷編著
- 1914字
- 2022-05-06 17:08:39
3.2.3 Gym的Atari強化學習環境
另一個常用的強化學習環境是雅達利(Atari)強化學習環境,這個強化學習環境的來源是雅達利公司開發的雅達利2600(Atari 2600)游戲機上的一系列游戲。這是一些早期的像素游戲,包含常見的射擊類游戲(如《太空侵略者》,'SpaceInvaders-v0')、體育類游戲(如《乒乓》,'Pong-v0'),以及動作類游戲(如《陷阱》,'Pitfall-v0')等。在這些游戲里,智能體需要控制玩家代表的角色完成一系列動作,來盡可能獲取更高的分數。Atari強化學習環境比前面介紹的經典控制環境更復雜,而且包含了一些復雜的環境,因此很多強化學習算法往往都會把這個強化學習環境作為標準的強化學習環境,以便和其他的強化學習環境做對比。
下面用一個簡單的《太空侵略者》('SpaceInvaders-v0')來演示一下如何使用OpenAI Gym框架下的Atari強化學習環境。需要注意的是,Atari強化學習環境需要安裝atari_py依賴項,如果讀者沒有安裝這個依賴項,可以在命令行中使用pip install'gym[atari]'命令進行安裝。另外,對于Atari強化學習環境來說,每個強化學習環境有兩個版本,比如太空侵略者,我們可以使用'SpaceInvaders-v0',也可以使用'SpaceInvaders-ram-v0'來使用這個強化學習環境。前者和后者的區別在于,前者直接輸出的是可以渲染的210像素×160像素×3像素大小的圖像,其中210×160分別代表圖像的高和寬,3代表圖像是RGB三通道圖像;后者輸出的則是一個128B的數組,并且用這個數組代表游戲環境所處的狀態,其原因是雅達利2600游戲機中只有128B的可用內存。這兩款游戲的強化學習環境的狀態表示各有優劣,前者的好處是直觀,我們可以根據狀態直接畫出游戲當前的屏幕畫面,而且能使用卷積神經網絡對圖像進行處理,但是對應的環境表示需要比較大的空間;后者的優點是壓縮了狀態空間的大小,缺點是不能有一個直觀的游戲狀態空間的表示,而且可能會為后續的神經網絡特征提取增加困難。本書會統一使用圖像形式的Atari強化學習環境來進行算法演示。在這種情況下,為了能夠進一步壓縮輸入空間的大小,我們可以裁剪掉圖像的一部分,并且把三通道合并成為一通道(可以直接對通道求平均),然后把處理過的圖像作為深度學習神經網絡的輸入來估計價值和策略分布。
圖3.6演示了一個Atari強化學習環境中的太空侵略者游戲的強化學習環境。在這個環境中,智能體控制的是底部的飛船,通過發射子彈消滅掉上面數排的外星生物,并且獲取對應的獎勵分數。具體使用方法的代碼和代碼3.4似,讀者可以參考文件ex_3_5.py中的代碼來掌握如何使用對應的強化學習環境,并且可以更換不同的Atari強化學習環境,看看具體的游戲在獎勵、狀態空間和動作空間上的區別。

圖3.6 太空侵略者環境示意圖
在Atari強化學習環境中,可以看到同一個強化學習環境有很多版本,不同版本的強化學習環境的行為會不太一樣。以常用的'SpaceInvaders'環境為例進行說明,這個環境有以下四個版本。
● 'SpaceInvaders-v0',有25%的概率環境會重復上一步同樣的動作,隨機跳過2~5幀。
● 'SpaceInvaders-v4',環境會嚴格執行智能體給定的動作,隨機跳過2~5幀。
● 中間加了deterministic。結合第1種和第2種情況,如'SpaceInvadersDeterministic-v0',環境有25%的概率會重復上一步同樣的動作,同時會固定跳過3幀(其他環境又可能跳過4幀,因為太空侵略者游戲中飛船發出的光束會閃爍,奇數幀能夠捕捉到這種情況。
● 'SpaceInvadersNoFrameskip-v4',沒有任何跳幀,也沒有任何隨機重復的動作,環境嚴格按照智能體給出的動作執行。
本書大多數情況下會使用版本3中描述的強化學習環境嚴格執行智能體輸出的動作,同時會隨機跳過一定的幀數(這樣可以加快強化學習環境的采樣,同時對算法最后收獲的獎勵影響也比較小),比如'SpaceInvadersDeterministic-v4'強化學習環境。
最后值得注意的是,Atari強化學習環境中并不是所有的強化學習環境都很容易使用深度強化學習算法來實現完美的通關。著名的比較難的強化學習環境有《陷阱》('Pitfall-v0')和《蒙特祖瑪的復仇》('MontezumaRevenge-v0'),這些強化學習的特點是獎勵具有稀疏性(Sparsity)。其中能獲得更高獎勵的步驟往往是幾個簡單步驟的復雜組合,而對應的組合失敗后遭到的懲罰(負的獎勵)也很大。在強化學習算法中,簡單的探索已經不足以找到這種情況下的全局最優的策略,往往只能找到其中一兩個簡單的得分點。在這種情況下,需要通過更加復雜的探索策略和算法,比如Go-Explore算法,或者隨機網絡蒸餾(Random Network Distillation, RND)才能獲取比較好的分數。由于這些算法超出了本書的論述范圍,有興趣的讀者可以根據本書參考文獻來閱讀相關的算法論文和對應的實現。
需要說明的是,截至本書截稿時,Gym對Atari強化學習環境的支持已經轉移到了街機強化學習環境上(Arcade Learning Environment, ALE)。如果讀者需要繼續在Gym上使用Atari強化學習環境,可以使用pip install atari==0.19.0命令強制安裝Atari-0.19.0版本的強化學習環境,這樣本書使用這個強化學習環境的代碼仍然可以通用(也保持了和歷史代碼的一定兼容性);如果讀者要使用Atari-0.20.0以上版本的Atari強化學習環境,請參考ALE在GitHub上的網站,下載Atari強化學習環境的ROM,按照說明步驟使用ALE強化學習環境(接口和Gym一致,不過導入強化學習環境的方法略有差別)。
- 深入理解Android(卷I)
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- Vue.js快跑:構建觸手可及的高性能Web應用
- 羅克韋爾ControlLogix系統應用技術
- Getting Started with PowerShell
- Python Web數據分析可視化:基于Django框架的開發實戰
- PySide 6/PyQt 6快速開發與實戰
- FFmpeg開發實戰:從零基礎到短視頻上線
- Java EE 7 with GlassFish 4 Application Server
- WildFly Cookbook
- Appcelerator Titanium:Patterns and Best Practices
- Python硬件編程實戰
- Android智能手機APP界面設計實戰教程
- 精益軟件開發管理之道
- C語言程序設計