
- Python人工智慧教程
- 首頁
- Python人工智慧 - 基礎概念
- Python人工智慧 - 入門
- Python人工智慧 - 機器學習
- Python人工智慧 - 資料準備
- 監督學習:分類
- 監督學習:迴歸
- Python人工智慧 - 邏輯程式設計
- 無監督學習:聚類
- 自然語言處理
- Python人工智慧 - NLTK包
- 分析時間序列資料
- Python人工智慧 - 語音識別
- Python人工智慧 - 啟發式搜尋
- Python人工智慧 - 遊戲
- Python人工智慧 - 神經網路
- 強化學習
- Python人工智慧 - 遺傳演算法
- Python人工智慧 - 計算機視覺
- Python人工智慧 - 深度學習
- Python人工智慧資源
- Python人工智慧 - 快速指南
- Python人工智慧 - 有用資源
- Python人工智慧 - 討論
Python人工智慧 - 強化學習
在本章中,您將詳細瞭解Python人工智慧中強化學習的概念。
強化學習基礎
這種型別的學習用於根據評論資訊加強或增強網路。也就是說,在強化學習下訓練的網路會從環境中收到一些反饋。但是,與監督學習的情況不同,反饋是評估性的,而不是指示性的。根據此反饋,網路執行權重的調整,以在將來獲得更好的評論資訊。
此學習過程類似於監督學習,但我們可能只有很少的資訊。下圖給出了強化學習的框圖 -

構建模組:環境和代理
環境和代理是人工智慧中強化學習的主要構建模組。本節將詳細討論它們 -
代理
代理是任何可以透過感測器感知其環境並透過效應器作用於該環境的事物。
一個人類代理具有與感測器平行的感官器官,如眼睛、耳朵、鼻子、舌頭和皮膚,以及其他器官,如手、腿、嘴,作為效應器。
一個機器人代理用攝像頭和紅外測距儀代替感測器,用各種電機和執行器代替效應器。
一個軟體代理將其程式和操作編碼為位串。
代理術語
以下術語在人工智慧中的強化學習中更常用 -
代理的效能度量 - 它是確定代理成功程度的標準。
代理的行為 - 它是代理在任何給定的感知序列後執行的操作。
感知 - 它是代理在給定時刻的感知輸入。
感知序列 - 它是代理迄今為止感知的所有內容的歷史記錄。
代理函式 - 它是從感知序列到操作的對映。
環境
一些程式在完全人工環境中執行,僅限於鍵盤輸入、資料庫、計算機檔案系統和螢幕上的字元輸出。
相比之下,一些軟體代理,例如軟體機器人或軟機器人,存在於豐富且無限的軟機器人領域中。模擬器具有非常詳細且複雜的環境。軟體代理需要即時從大量操作中進行選擇。
例如,一個旨在掃描客戶線上偏好並向客戶展示有趣商品的軟機器人,在真實和人工環境中工作。
環境的屬性
環境具有如下所述的多方面屬性 -
離散/連續 - 如果環境存在有限數量的不同、明確定義的狀態,則該環境是離散的,否則它是連續的。例如,國際象棋是一個離散的環境,而駕駛是一個連續的環境。
可觀察/部分可觀察 - 如果可以從感知中確定每個時間點的環境的完整狀態,則它是可觀察的;否則它只是部分可觀察的。
靜態/動態 - 如果環境在代理執行操作時不發生變化,則它是靜態的;否則它是動態的。
單代理/多代理 - 環境可能包含其他代理,這些代理可能與代理相同或不同。
可訪問/不可訪問 - 如果代理的感官裝置可以訪問環境的完整狀態,則該環境對該代理是可訪問的;否則它是不可訪問的。
確定性/非確定性 - 如果環境的下一個狀態完全由當前狀態和代理的操作決定,則該環境是確定性的;否則它是非確定性的。
情節性/非情節性 - 在情節性環境中,每個情節都包括代理感知然後採取行動。其行動的質量僅取決於情節本身。後續情節不依賴於先前情節中的操作。情節性環境要簡單得多,因為代理不需要提前思考。

使用Python構建環境
為了構建強化學習代理,我們將使用OpenAI Gym包,可以使用以下命令安裝 -
pip install gym
OpenAI gym中有多種環境可用於各種目的。其中一些是Cartpole-v0、Hopper-v1和MsPacman-v0。它們需要不同的引擎。
以下程式碼顯示了Cartpole-v0環境的Python程式碼示例 -
import gym env = gym.make('CartPole-v0') env.reset() for _ in range(1000): env.render() env.step(env.action_space.sample())

您可以以類似的方式構建其他環境。
使用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

觀察到手推車可以自行平衡。