關(guān)于OpenAI Gym的定義和使用
譯文譯者 | 布加迪
審校 | 重樓
如果您無法從頭開始構(gòu)建一個(gè)機(jī)器學(xué)習(xí)模型,或者缺少相應(yīng)的基礎(chǔ)設(shè)施,僅僅將應(yīng)用程序連接到工作模型就可以填補(bǔ)這個(gè)缺口。
人工智能可供所有人以某種方式來使用。至于OpenAI Gym,有許多值得一試的訓(xùn)練環(huán)境為您的強(qiáng)化學(xué)習(xí)代理饋送內(nèi)容。
那么,OpenAI Gym到底是什么?它是如何工作的?您可以用它來構(gòu)建什么?
OpenAI Gym的定義
OpenAI Gym是一個(gè)Python風(fēng)格的API,為強(qiáng)化學(xué)習(xí)代理提供模擬的訓(xùn)練環(huán)境,使其可以根據(jù)環(huán)境觀察采取行動(dòng),每個(gè)動(dòng)作都有積極或消極的獎(jiǎng)勵(lì),這種獎(jiǎng)勵(lì)在每個(gè)時(shí)間步長都會(huì)累積。雖然代理旨在實(shí)現(xiàn)獎(jiǎng)勵(lì)最大化,但它會(huì)因每個(gè)意想不到的決定而受到懲罰。
時(shí)間步長是環(huán)境進(jìn)入到另一種狀態(tài)的離散時(shí)間單位。當(dāng)代理的動(dòng)作改變環(huán)境狀態(tài)時(shí),它就會(huì)累加。
OpenAI Gym如何運(yùn)作?
OpenAI Gym環(huán)境基于馬爾可夫決策過程(MDP),這是一種用于強(qiáng)化學(xué)習(xí)的動(dòng)態(tài)決策模型。因此,只有當(dāng)環(huán)境改變狀態(tài)時(shí),獎(jiǎng)勵(lì)才會(huì)出現(xiàn)。而下一個(gè)狀態(tài)的事件只依賴當(dāng)前狀態(tài),因?yàn)?/span>MDP不考慮過去的事件。
在繼續(xù)介紹之前,不妨通過一個(gè)例子快速了解OpenAI Gym在強(qiáng)化學(xué)習(xí)中的應(yīng)用。
假設(shè)您打算在賽車游戲中訓(xùn)練一輛汽車,可以在OpenAI Gym中啟動(dòng)賽道。在強(qiáng)化學(xué)習(xí)中,如果車輛向右轉(zhuǎn)而不是向左轉(zhuǎn),它可能會(huì)得到-1的負(fù)獎(jiǎng)勵(lì)。賽道在每個(gè)時(shí)間步長都發(fā)生變化,并在隨后的狀態(tài)中可能變得更復(fù)雜。
消極的獎(jiǎng)勵(lì)或懲罰對于強(qiáng)化學(xué)習(xí)中的代理來說不是壞事。在一些情況下,它會(huì)鼓勵(lì)代理更快地實(shí)現(xiàn)目標(biāo)。因此,隨著時(shí)間的推移,汽車逐漸了解賽道,并使用一系列獎(jiǎng)勵(lì)熟練掌握導(dǎo)航。
比如說,我們創(chuàng)建了FrozenLake-v1環(huán)境,在這個(gè)環(huán)境中,代理因掉進(jìn)冰洞會(huì)而受到懲罰,但因找回禮盒而得到獎(jiǎng)勵(lì)。
我們第一次運(yùn)行生成的懲罰較少,沒有獎(jiǎng)勵(lì):
然而,第三次迭代生成了更復(fù)雜的環(huán)境。但代理得到了一些獎(jiǎng)勵(lì):
上面的結(jié)果并不意味著代理會(huì)在下一次迭代中得到改進(jìn)。雖然下一次它可能會(huì)成功地避開更多的洞,但它可能得不到任何獎(jiǎng)勵(lì)。但修改幾個(gè)參數(shù)可能會(huì)提高學(xué)習(xí)速度。
OpenAI的組件
OpenAI Gym API圍繞以下組件:
- 訓(xùn)練代理所在的環(huán)境。您可以使用gym.make方法初始化環(huán)境。OpenAI Gym還支持多代理環(huán)境。
- 用于修改現(xiàn)有環(huán)境的包裝器。雖然每個(gè)基本環(huán)境在默認(rèn)情況下都預(yù)先包裝,但您可以使用max_actions、min_actions和max rewards等參數(shù)重新調(diào)整其規(guī)模。
- 動(dòng)作定義了代理在觀察環(huán)境中的變化時(shí)所做的事情。環(huán)境中的每個(gè)動(dòng)作都是一個(gè)步驟,定義了代理對觀察結(jié)果的響應(yīng)。步驟完成就返回觀察值、獎(jiǎng)勵(lì)、信息以及截?cái)嘀祷蚪K止值。
- 觀察定義代理在環(huán)境中的經(jīng)驗(yàn)。一旦觀察到結(jié)果,動(dòng)作就會(huì)跟隨其信息。info參數(shù)是一個(gè)執(zhí)行日志,便于調(diào)試。一旦一個(gè)步驟結(jié)束,環(huán)境將重置n次,這取決于所指定迭代的次數(shù)。
可以用OpenAIGym做什么?
由于OpenAI Gym允許您啟用自定義學(xué)習(xí)環(huán)境,以下是在現(xiàn)實(shí)場景中使用它的幾個(gè)方法。
1. 游戲模擬
您可以利用OpenAI Gym的游戲環(huán)境來獎(jiǎng)勵(lì)所需的行為、創(chuàng)建游戲獎(jiǎng)勵(lì),并增加每個(gè)游戲級別的復(fù)雜性。
2. 圖像識別
在數(shù)據(jù)、資源和時(shí)間有限的情況下,OpenAI Gym便于開發(fā)圖像識別系統(tǒng)。在更深層次上,您可以擴(kuò)展它來構(gòu)建人臉識別系統(tǒng),該系統(tǒng)將獎(jiǎng)勵(lì)正確識別人臉的代理。
3.機(jī)器人訓(xùn)練
OpenAI Gym還提供了3D和2D模擬的直觀環(huán)境模型,您可以將所需的行為實(shí)現(xiàn)到機(jī)器人中。Roboschool就是一個(gè)例子,可以使用OpenAI Gym構(gòu)建擴(kuò)展規(guī)模的機(jī)器人模擬軟件。
4. 市場營銷
您還可以使用OpenAI Gym構(gòu)建廣告服務(wù)器、股票交易機(jī)器人、銷售預(yù)測機(jī)器人、產(chǎn)品推薦系統(tǒng)等營銷解決方案。比如說,您可以構(gòu)建自定義OpenAI Gym模型,根據(jù)印象和點(diǎn)擊率對廣告進(jìn)行懲罰。
5. 自然語言處理
將OpenAI Gym應(yīng)用于自然語言處理的一些方法是涉及句子補(bǔ)全或構(gòu)建垃圾郵件分類器的多項(xiàng)選擇題。比如說,您可以訓(xùn)練一個(gè)代理來學(xué)習(xí)句子變化,從而在標(biāo)記參與者時(shí)避免偏誤。
如何上手OpenAI Gym?
OpenAI Gym支持Python 3.7及更高版本。若要創(chuàng)建OpenAI Gym環(huán)境,就需要安裝Gymnasium,這是不斷得到支持的分叉Gym版本:
pip install gymnasium
接下來,啟動(dòng)一個(gè)環(huán)境。不過,您可以創(chuàng)建自定義環(huán)境。但是,要想掌握OpenAI Gym概念,應(yīng)先從現(xiàn)有的環(huán)境開始。
下面的代碼啟動(dòng)FrozenLake-v1。env.reset方法記錄了初始觀察結(jié)果:
import gymnasium as gym
env = gym.make('FrozenLake-v1', render_mode="human")
observation, info = env.reset()
注意:一些環(huán)境需要額外的庫才能工作。如果您需要安裝另一個(gè)庫,Python會(huì)通過異常消息來推薦庫。
比如說,您將安裝額外的庫(gymnasium[toy-text])來運(yùn)行FrozenLake-v1環(huán)境。
運(yùn)用OpenAI Gym的力量
阻礙人工智能和機(jī)器學(xué)習(xí)發(fā)展的因素之一是缺少基礎(chǔ)設(shè)施和訓(xùn)練數(shù)據(jù)集。但是當(dāng)您希望將機(jī)器學(xué)習(xí)模型整合到應(yīng)用程序或設(shè)備中時(shí),由于現(xiàn)成的人工智能模型在網(wǎng)上唾手可得,現(xiàn)在一切都變得更容易了。其中一些工具是低成本工具,而包括OpenAI Gym在內(nèi)的其他工具卻是免費(fèi)的開源工具。
原文標(biāo)題:What Is OpenAI Gym and How Can You Use It?,作者:Idowu Omisola