- 深度強(qiáng)化學(xué)習(xí)實踐(原書第2版)
- (俄)馬克西姆·拉潘
- 1313字
- 2021-08-18 17:39:17
2.1 剖析智能體
正如上章所述,RL的世界中包含很多實體:
- 智能體:主動行動的人或物。實際上,智能體只是實現(xiàn)了某些策略的代碼片段而已。這個策略根據(jù)觀察決定每一個時間點執(zhí)行什么動作。
- 環(huán)境:某些世界的模型,它在智能體外部,負(fù)責(zé)提供觀察并給予獎勵。而且環(huán)境會根據(jù)智能體的動作改變自己的狀態(tài)。
我們來探究一下如何在簡單的情景下,用Python實現(xiàn)它們。先定義一個環(huán)境,限定交互步數(shù),并且不管智能體執(zhí)行任何動作,它都給智能體返回隨機(jī)獎勵。這種場景不是很有用,卻能讓我們聚焦于環(huán)境和智能體類中的某些方法。先從環(huán)境開始吧:

前面的代碼展示了環(huán)境初始化內(nèi)部狀態(tài)。在示例場景下,狀態(tài)就是一個計數(shù)器,記錄智能體還能和環(huán)境交互的步數(shù)。

get_observation()
方法能給智能體返回當(dāng)前環(huán)境的觀察。它通常被實現(xiàn)為有關(guān)環(huán)境內(nèi)部狀態(tài)的某些函數(shù)。不知你是否對-> List[float]
感到好奇,它其實是Python的類型注解,是在Python 3.5版本引入的。在https://docs.python.org/3/library/typing.html的文檔中可以查看更多內(nèi)容。在示例中,觀察向量總是0,因為環(huán)境根本就沒有內(nèi)部狀態(tài)。

get_action()
方法允許智能體查詢自己能執(zhí)行的動作集。通常,智能體能執(zhí)行的動作集不會隨著時間變化,但是當(dāng)環(huán)境發(fā)生變化的時候,某些動作可能會變得無法執(zhí)行(例如在井字棋中,不是所有的位置能都執(zhí)行所有動作)。而在我們這極其簡單的例子中,智能體只能執(zhí)行兩個動作,它們被編碼成了整數(shù)0和1。

前面的方法給予智能體片段結(jié)束的信號。就像第1章中所述,環(huán)境–智能體的交互序列被分成一系列步驟,稱為片段。片段可以是有限的,比如國際象棋,也可以是無限的,比如旅行者2號的任務(wù)(一個著名的太空探測器,發(fā)射于40年前,目前已經(jīng)探索到太陽系外了)。為了囊括兩種場景,環(huán)境提供了一種檢測片段何時結(jié)束的方法,通知智能體它無法再繼續(xù)交互了。

action()
方法是環(huán)境的核心功能。它做兩件事——處理智能體的動作以及返回該動作的獎勵。在示例中,獎勵是隨機(jī)的,而動作被丟棄了。另外,該方法還會更新已經(jīng)執(zhí)行的步數(shù),并拒絕繼續(xù)執(zhí)行已結(jié)束的片段。
現(xiàn)在該來看一下智能體的部分了,它更簡單,只包含兩個方法:構(gòu)造函數(shù)以及在環(huán)境中執(zhí)行一步的方法:

在構(gòu)造函數(shù)中,我們初始化計數(shù)器,該計數(shù)器用來保存片段中智能體累積的總獎勵:

step
函數(shù)接受環(huán)境實例作為參數(shù),并允許智能體執(zhí)行下列操作:
- 觀察環(huán)境。
- 基于觀察決定動作。
- 向環(huán)境提交動作。
- 獲取當(dāng)前步驟的獎勵。
對于我們的例子,智能體比較愚笨,它在決定執(zhí)行什么動作的時候會忽視得到的觀察。取而代之的是,隨機(jī)選擇動作。最后還剩下膠水代碼,它創(chuàng)建兩個類并執(zhí)行一次片段:

你可以在本書的GitHub庫中找到上述代碼,就在https://github.com/PacktPublishing/Deep-Reinforcement-Learning-Hands-On- Second-Edition的Chapter02/01_agent_anatomy.py
文件中。它沒有外部依賴,只要稍微現(xiàn)代一點的Python版本就能運行。多次運行,智能體得到的獎勵總數(shù)會是不同的。
前面那簡單的代碼就展示了RL模型的重要的基本概念。環(huán)境可以是極其復(fù)雜的物理模型,智能體也可以輕易地變成一個實現(xiàn)了最新RL算法的大型神經(jīng)網(wǎng)絡(luò)(NN),但是基本思想還是一致的——每一步,智能體都會從環(huán)境中得到觀察,進(jìn)行一番計算,最后選擇要執(zhí)行的動作。這個動作的結(jié)果就是獎勵和新的觀察。
你可能會問,如果基本思想是一樣的,為什么還要從頭開始實現(xiàn)呢?是否有人已經(jīng)將其實現(xiàn)為一個通用庫了?答案是肯定的,這樣的框架已經(jīng)存在了,但是在花時間討論它們前,先把你的開發(fā)環(huán)境準(zhǔn)備好吧。
- 智能機(jī)器的未來
- 人工智能不會做什么:100億人類與100億機(jī)器人共存的未來
- 21世紀(jì)機(jī)器人
- 互聯(lián)網(wǎng)下半場
- TensorFlow移動端機(jī)器學(xué)習(xí)實戰(zhàn)
- ChatGPT速學(xué)通:文案寫作+PPT制作+數(shù)據(jù)分析+知識學(xué)習(xí)與變現(xiàn)
- PyTorch深度學(xué)習(xí)應(yīng)用實戰(zhàn)
- 大話機(jī)器智能:一書看透AI的底層運行邏輯
- 圖解大模型:生成式AI原理與實戰(zhàn)
- 樹莓派創(chuàng)客:手把手教你搭建機(jī)器人
- 人工智能重塑世界(第2版)
- 過度智能
- AIGC提示詞美學(xué)定義
- 深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)從入門到精通
- 具身智能:人工智能的下一個浪潮