Python深度強化學習:基于Chainer和OpenAI Gym
定 價:79 元
- 作者:[日]牧野 浩二(Koji Makino),[日]西崎 博光(Hiromitsu Nishizaki)
- 出版時間:2021/11/1
- ISBN:9787111692584
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書基于強化學的庫Chainer(Chainere)和AI模擬環(huán)境的OpenAI gym,不僅僅是軟件模擬,也詳述了使用RaspbbilryPi和ARduino的實際環(huán)境的應(yīng)用。
近年來,機器學習受到了人們的廣泛關(guān)注。在機器學習中,主要通過向?qū)W習器提供受訓目標(有標簽信息)來進行有監(jiān)督學習,例如,大多數(shù)圖像識別和語音識別都是通過有監(jiān)督學習來進行的。
另外,還存在一種稱為半監(jiān)督學習的方法,該方法不像有監(jiān)督學習那樣提供有標簽信息,這種機器學習方法中典型的便是強化學習。強化學習是機器學習的一種,它根據(jù)特定環(huán)境(例如游戲的棋盤盤面等)中的當前情況來決定下一步要采取的行動。例如,讓計算機學習下圍棋時,思考在某種局面下,接下來應(yīng)該在哪里放置棋子更好。
強化學習會對計算機考慮到的行動進行評估,并以獎勵的形式進行反饋,評估行動的好壞(例如在圍棋比賽中的贏或輸), 這樣一來,計算機將自動采取在特定情況下會增加獎勵的行動。深度強化學習將強化學習與深度學習融合在一起,取得了很好的成效。其中讓我們記憶猶新的便是由DeepMind公司開發(fā)的圍棋智能體AlphaGo Zero。 它在不使用任何人類對弈數(shù)據(jù)的情況下和自己進行對局(計算機對戰(zhàn)計算機),僅用一個多月就達到了很高的水平,而且?guī)缀鯖]有弱點。
深度學習成為眾人矚目的焦點已經(jīng)將近10年了,但它并非一開始就是一種全新的技術(shù),它是自1970年以來研究的人工神經(jīng)網(wǎng)絡(luò)發(fā)展而來的一種方法。當前的深度學習熱潮也被稱為第三次人工智能熱潮,它與目前為止的人工智能熱潮的區(qū)別之一是,多家公司已經(jīng)發(fā)布了機器學習框架,非專業(yè)人士也可以免費使用它們,因而不論是學生還是在職人員都可以輕松嘗試深度學習。此外,機器學習的某些框架不僅支持深度學習,而且還支持結(jié)合了強化學習的深度強化學習。因此,當前學習深度學習的門檻遠低于此前的幾次人工智能熱潮。
在本書中,除了詳細的理論說明外,還有針對在Python上運行的深度強化學習框架ChainerRL的講解,從而引導讀者在實際中使用深度強化學習。如果你想通過模擬實驗檢驗深度強化學習的結(jié)果,只要有臺個人計算機就可以輕松嘗試。另外,如果你有一臺像Raspberry Pi這樣的小型計算機,則可以通過連接來控制電路元件和機器人。深度強化學習適用于“情況因操作而異”的問題,因此,它適用于在一方操作之后局面會發(fā)生改變的問題,如圍棋和將棋等棋局問題。此外,用機械臂自動識別物體,將其進行抓握和移動也是深度強化學習的擅長領(lǐng)域。因此,在本書中,我們會講解如何通過深度強化學習來進行黑白棋對戰(zhàn),以及如何將其應(yīng)用于實際的機器人上。
如前所述,由于深度強化學習將強化學習整合到了深度學習中,因此,如果了解了這兩種學習方法的原理,就能更好地運用深度強化學習。
本書第1章首先介紹進行深度強化學習所需的PC端環(huán)境構(gòu)建。第2章介紹深度學習。為了理解深度強化學習,有必要了解深度學習的相關(guān)知識。由于市面上已經(jīng)有許多有關(guān)深度學習的書籍,因此本書以讀者參考了那些書中的詳細信息為前提,在第2章中講解理解深度強化學習所需掌握的內(nèi)容。使用Chainer進行過深度學習編程的人可以跳過這一章。接下來,第3章我們將講解強化學習中的一種典型方法Q學習,希望讀者能在這一章中了解強化學習的基礎(chǔ)。在第4章中我們將進入深度強化學習的討論。第5章介紹如何使用深度強化學習來控制移動機器人。
這樣一來,本書從基礎(chǔ)出發(fā),通過從開發(fā)環(huán)境構(gòu)建到深度學習、強化學習、深度強化學習的逐步深入,來對控制實際事物的應(yīng)用進行講解。因此,深度學習和深度強化學習的初學者和中級學習者(例如,大學生或希望將深度學習和深度強化學習應(yīng)用于工作的在職人員)可以在逐步學習的同時學習深度強化學習的基礎(chǔ)。本書將幫助這類讀者加深對強化學習的理解。
此外,本書的附錄中包含的信息有助于學習深度強化學習。例如,僅使用PC的CPU進行深度學習和深度強化學習的計算需要很長時間,因此我們將介紹一種使用圖形操作單元(GPU)加速學習過程的方法。對于使用Intel CPU的用戶,我們還會介紹一種使用由Intel發(fā)布的Intel CPU矩陣計算優(yōu)化引擎來加速的方法。
在編寫本書時,為了嘗試讓初學者也可以學習深度強化學習,山梨大學本科院醫(yī)工農(nóng)學綜合教育學部的劉震先生和名取智纮先生在閱讀本書的手稿時構(gòu)造了一個開發(fā)環(huán)境并檢查了程序的運行情況,在此對他們深表謝意。還要感謝協(xié)助進行運行檢查的山梨大學工程學院的佐野祐太先生、村田義倫先生和依田直樹先生。此外,作者所屬的山梨大學工學院信息機電工程學系的教職員工以及實驗室的本科生和研究生也提供了支持。后,如果沒有OHM公司所有人的鼎力相助,本書也難以出版,我們要再次感謝所有向我們提供幫助的人。
使用本書時的注意事項
本書中涉及的程序可以從OHM公司的網(wǎng)站(https://www.ohmsha.co.jp/)以及華章圖書官網(wǎng)(http://www.hzbook.com)進行下載。
本書的程序可以在以下環(huán)境中運行。
Windows 8.1/10
搭載了macOS 10.13 High Sierra的MacBook和MacBook Pro
Raspbian OS(版本2.7.0)/ Raspberry Pi2 Model B或Raspberry Pi3 Model B
搭載Ubuntu 16.04 / Intel Core i7的PC 或 VirtualBox上的虛擬環(huán)境
Python 2.7.14或Python 3.6.4
大部分程序在Pyt
譯者序
前言
第1章 引言 1
1.1 深度強化學習可以做什么 1
1.2 本書的結(jié)構(gòu) 4
1.3 框架:Chainer和ChainerRL 6
1.4 Python的運行檢查 6
1.5 Chainer的安裝 9
1.6 ChainerRL的安裝 12
1.7 模擬器:OpenAI Gym 14
第2章 深度學習 17
2.1 什么是深度學習 17
2.2 神經(jīng)網(wǎng)絡(luò) 18
2.3 基于Chainer的神經(jīng)網(wǎng)絡(luò) 21
2.3.1 Chainer與神經(jīng)網(wǎng)絡(luò)的對應(yīng) 24
2.3.2 Chainer程序 25
2.3.3 參數(shù)設(shè)置 26
2.3.4 創(chuàng)建數(shù)據(jù) 27
2.3.5 定義神經(jīng)網(wǎng)絡(luò) 27
2.3.6 各種聲明 28
2.3.7 顯示訓練狀態(tài) 28
2.3.8 保存訓練狀態(tài) 31
2.3.9 執(zhí)行訓練 32
2.4 與其他神經(jīng)網(wǎng)絡(luò)的對應(yīng) 32
2.4.1 感知器 32
2.4.2 5層神經(jīng)網(wǎng)絡(luò)(深度學習) 33
2.4.3 計算輸入中的1的數(shù)量 34
2.5 基于深度神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別 35
2.5.1 手寫數(shù)字的輸入格式 36
2.5.2 深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 39
2.5.3 8×8的手寫數(shù)字數(shù)據(jù) 41
2.6 基于卷積神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別 43
2.6.1 卷積 45
2.6.2 激活函數(shù) 49
2.6.3 池化 49
2.6.4 執(zhí)行 50
2.7 一些技巧 53
2.7.1 讀取文件數(shù)據(jù) 54
2.7.2 使用訓練模型 55
2.7.3 重啟訓練 56
2.7.4 檢查權(quán)重 56
2.7.5 從文件中讀取手寫數(shù)字 57
第3章 強化學習 59
3.1 什么是強化學習 59
3.1.1 有監(jiān)督學習 60
3.1.2 無監(jiān)督學習 60
3.1.3 半監(jiān)督學習 60
3.2 強化學習原理 61
3.3 通過簡單的示例來學習 61
3.4 應(yīng)用到Q學習問題中 63
3.4.1 狀態(tài) 63
3.4.2 行動 63
3.4.3 獎勵 63
3.4.4 Q值 64
3.5 使用Python進行訓練 67
3.5.1 運行程序 67
3.5.2 說明程序 69
3.6 基于OpenAI Gym的倒立擺 73
3.6.1 運行程序 73
3.6.2 說明程序 74
3.7 如何保存和加載Q值 79
第4章 深度強化學習 81
4.1 什么是深度強化學習 81
4.2 對于老鼠學習問題的應(yīng)用 83
4.2.1 運行程序 83
4.2.2 說明程序 85
4.2.3 如何保存和讀取智能體模型 91
4.3 基于OpenAI Gym的倒立擺 91
4.3.1 運行程序 91
4.3.2 說明程序 92
4.4 基于OpenAI Gym的太空侵略者 97
4.5 基于OpenAI Gym的顛球 99
4.5.1 運行程序 101
4.5.2 說明程序 102
4.6 對戰(zhàn)游戲 109
4.6.1 黑白棋 109
4.6.2 訓練方法 111
4.6.3 變更盤面 121
4.6.4 黑白棋實體 121
4.6.5 如何與人類對戰(zhàn) 123
4.6.6 卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用 127
4.7 使用物理引擎進行模擬 128
4.7.1 物理引擎 129
4.7.2 運行程序 130
4.7.3 說明程序 131
4.8 物理引擎在顛球問題中的應(yīng)用 132
4.9 物理引擎在倒立擺問題中的應(yīng)用 140
4.10 物理引擎在機械臂問題中的應(yīng)用 144
4.11 使用其他深度強化學習方法 151
4.11.1 深度強化學習的類型 151
4.11.2 將訓練方法更改為DDQN 153
4.11.3 將訓練方法更改為PER-DQN 153
4.11.4 將訓練方法更改為DDPG 153
4.11.5 將訓練方法更改為A3C 155
第5章 實際環(huán)境中的應(yīng)用 157
5.1 使用攝像機觀察環(huán)境(MNIST) 157
5.1.1 攝像機設(shè)置 158
5.1.2 通過卷積神經(jīng)網(wǎng)絡(luò)對攝像機圖像進行分類 160
5.1.3 使用圖像大小為28×28的手寫數(shù)字進行訓練 163
5.2 實際環(huán)境中的老鼠學習問題 164
5.3 使用Raspberry Pi處理老鼠學習問題 168
5.3.1 環(huán)境構(gòu)建 169
5.3.2 以輸入輸出為重點的簡化 169
5.3.3 使用攝像機測量環(huán)境 176
5.4 使用Arduino + PC處理老鼠學習問題 181
5.4.1 環(huán)境構(gòu)建 182
5.4.2 以輸入輸出為重點的簡化 185
5.4.3 使用攝像機測量環(huán)境 193
5.5 使用Raspberry Pi + Arduino處理老鼠學習問題 197
5.6 結(jié)語 201
附錄 202