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