在本章中,您將詳細了解使用Python在AI中進行強化學習的概念。
Basics of Reinforcement Learning
這種類型的學習用於加強或加強基於批評信息的網絡。也就是說,一個在強化學習下訓練的網絡,從環境中得到一些反饋。然而,反饋是評價性的,不像監督學習那樣具有指導性。基於此反饋,網絡對權重進行調整,以獲得更好的評論信息。
這種學習過程類似於監督學習,但我們可能掌握的信息非常少。下圖給出了強化學習的框圖;
Building Blocks: Environment and Agent
環境和智能體是人工智慧中強化學習的主要組成部分。本節將詳細討論它們;
Agent
代理是任何可以通過傳感器感知其環境並通過效應器作用於該環境的東西。
A人類製劑具有與傳感器平行的感覺器官,例如眼睛、耳朵、鼻子、舌頭和皮膚,以及其他器官,例如手、腿、嘴,作爲效應器。
A機器人代理取代了傳感器的攝像機和紅外測距儀,以及效應器的各種電機和執行器。
A軟體代理已將位字符串編碼爲其程序和操作。
Agent Terminology
在人工智慧的強化學習中,以下術語更常用;
代理的性能度量是決定代理成功與否的標準。
代理的行爲是代理在任何給定的感知序列之後執行的操作。
perception−它是代理在給定實例中的感知輸入。
感知序列−它是一個代理迄今爲止感知到的所有信息的歷史記錄。
代理函數−它是從進階序列到動作的映射。
Environment
有些程序在完全人工環境中運行,僅限於鍵盤輸入、資料庫、計算機文件系統和螢幕上的字符輸出。
相比之下,一些軟體代理,如軟體機器人或軟機器人,存在於豐富和無限的軟機器人領域。模擬器有一個非常詳細的環境。軟體代理需要實時地從一長串操作中進行選擇。
例如,設計用於掃描客戶在線偏好並向客戶顯示感興趣的項目的softbot在real和Manifular環境中工作。
Properties of Environment
環境具有多種屬性,如下所述;
離散/連續−如果環境的不同、明確定義的狀態數量有限,則環境是離散的,否則它是連續的。例如,西洋棋是一個離散的環境,而駕駛是一個連續的環境。
可觀察的/部分可觀察的&負;如果可以從感知中確定環境在每個時間點的完整狀態,則它是可觀察的;否則,它只是部分可觀察的。
Static/Dynamic−如果代理在運行時環境沒有變化,則它是靜態的;否則它是動態的。
單個代理/多個代理−環境中可能包含其他代理,這些代理可能與代理的類型相同或不同。
可訪問/不可訪問&負;如果代理的感官設備可以訪問環境的完整狀態,則該代理可以訪問該環境;否則無法訪問。
確定性/非確定性&負;如果環境的下一個狀態完全由當前狀態和代理的操作決定,則環境是確定性的;否則它是非確定性的。
幕式/非幕式&負;在幕式環境中,每一幕都由主體感知和行爲組成。它的動作質量只取決於情節本身。隨後的情節不依賴於前幾集中的動作。場景環境要簡單得多,因爲代理不需要提前考慮。
Constructing an Environment with Python
對於構建強化學習代理,我們將使用OpenAI Gym包,該包可以在以下命令的幫助下安裝−
pip install gym
OpenAI健身房有各種各樣的環境,可以用於不同的用途。其中很少有Cartpole-v0、Hopper-v1和MsPacman-v0。它們需要不同的發動機。有關OpenAI Gym的詳細文檔,請參見
下面的代碼展示了cartpole-v0環境的Python代碼示例−
import gym env = gym.make('CartPole-v0') env.reset() for _ in range(1000): env.render() env.step(env.action_space.sample())
您可以用類似的方式構建其他環境。
Constructing a learning agent with Python
對於構建強化學習代理,我們將使用如圖所示的OpenAI Gym包;
import gym env = gym.make('CartPole-v0') for _ in range(20): observation = env.reset() for i in range(100): env.render() print(observation) action = env.action_space.sample() observation, reward, done, info = env.step(action) if done: print("Episode finished after {} timesteps".format(i+1)) break
注意,手推車可以自行平衡。