本書從「零」開始,以 PyTorch框架為基礎,介紹深度學習和強化學習的技術與技巧,沒有學過微積分等高級理論的程式師也能夠讀得懂、學得會。配合漫畫插圖來調節閱讀氣氛,並在每個原理說明的部分提供比較和實例說明。
作者使用具有高中數學基礎的讀者就能夠了解的語言,和讀者分享如何用深度學習的利器PyTorch來完成人工智慧機器人自我進化的完整過程。
即使是不懂強化學習的讀者,都能透過本書完成屬於自己的簡單、實用的小專案。
全書重點如下:
●涵蓋最重要的深度學習數學基礎,但又不會過於繁雜
●不止強化學習,從深度學習開始著手,完整理論及實作
●完整DNN、CNN、RNN、LSTM說明及實作,打下紮實基礎
●RL完整演算法實作,包括Q-Learning、DQN、SARSA、Policy Gradient、A3C、UNREAL模型
●Model-based, Model-free、OnLine, Off-line learning完全說明
●NEAT演算法、遺傳演算法實作,OpenAI的gym、SerpentAI實作
●讓AI幫你打星海爭霸、刀塔II
●AlphaGo、以及更強大的AlphaGo Zero原理完全解析
本書主要內容:
■ 第1章~第5章,傳統強化學習的研究目標與脈絡,主要介紹如何從一個程式設計師的角度了解強化學習最為輕鬆,偏重於了解方式的誘導。
■ 第6章~第11章,本書的核心內容,介紹深度學習的原理、PyTorch架構的基礎及深度強化學習的常用演算法模型。
■ 第12章~第15章,有關擴充性的知識。例如,其他有助訓練模型的演算法想法,協力廠商工具外掛程式,可供實驗的環境,一些有趣的強化學習演算法和觀點,甚至模型落地過程中的最佳化與壓縮。
■ 附錄A 詳細記載本書相關的各種軟體環境的安裝和設定過程。
適合讀者群:對深度學習和強化學習有興趣的初學者,或相關技術人員。
本書特色
◎用簡單的範例理解複雜的強化學習概念
◎用幽默的語言跨過強化學習的門檻
作者
高揚
金山辦公軟體人工智能組技術負責人,歷任歡聚時代人工智慧演算法專家,金山軟體西山居大數據架構師等職。重慶工商大學研究生導師,電子工業出版社博文視點專家委員,有多年海外工作經驗。
葉振斌
網易遊戲伏羲人工智慧實驗室高級深度學習研發工程師。從事機器學習,特別是強化學習智慧演算法的研究及開發工作。擁有豐富的軟體開發、人工智慧演算法訓練平台開發經驗。
繪者簡介
萬娟
華為設計師。資深UI設計師,多年產品交互與視覺設計經驗,對TOB企業系統應用設計與TOC使用者產品設計有深入的理解與豐富實作經驗。多次參與華為企業內系統設計與智慧家居、智慧設備等UI及交互設計。
目錄
前言
第一篇 傳統篇
01 | 強化學習是什麼
1.1 題設
1.2 強化學習的研究物件
1.3 本章小結
02 | 強化學習的脈絡
2.1 什麼是策略
2.2 什麼樣的策略是好的策略
2.3 什麼是模型
2.4 如何獲得一個好的策略
2.5 馬可夫決策過程
2.6 Model-Based 和Model-Free
2.7 本章小結
03 | 動態規劃
3.1 狀態估值
3.2 策略最佳化
3.3 本章小結
04 | 蒙地卡羅法
4.1 歷史由來
4.2 狀態估值
4.3 兩種估值方法
4.4 弊端
4.5 本章小結
05 | 時間差分
5.1 SARSA 演算法
5.2 Q-Learning 演算法
5.3 On-Policy 和Off-Policy
5.4 On-Line 學習和Off-Line 學習
5.5 比較與討論
5.6 本章小結
第二篇 現代篇
06 | 深度學習
6.1 PyTorch 簡介
6.2 神經元
6.3 線性回歸
6.4 激勵函數
6.5 神經網路
6.6 網路訓練
6.7 深度學習的優勢
6.8 手寫數字識別公開資料集
6.9 全連接網路
6.10 卷積神經網路
6.11 循環神經網路
6.12 其他注意事項
6.13 深度神經網路的發展趨勢
6.14 本章小結
07 | Gym--不要錢的試驗場
7.1 簡介
7.2 安裝
7.3 類別
7.4 介面
7.5 本章小結
08 | DQN 演算法族
8.1 2013 版DQN
8.2 2015 版DQN
8.3 Double DQN
8.4 Dueling DQN
8.5 優先重播DQN
8.6 本章小結
09 | PG 演算法族
9.1 策略梯度
9.2 DPG
9.3 Actor-Critic
9.4 DDPG
9.5 本章小結
10 | A3C
10.1 模型結構
10.2 本章小結
11 | UNREAL
11.1 主工作
11.2 像素控制工作
11.3 獎勵值預測
11.4 值函數重播
11.5 損失函數
11.6 本章小結
第三篇 擴充篇
12 | NEAT
12.1 遺傳演算法
12.2 NEAT 原理
12.3 NEAT 範例
12.4 本章小結
13 | SerpentAI
13.1 簡介
13.2 安裝和設定
13.3 範例
13.4 本章小結
14 | 案例詳解
14.1 AlphaGo
14.2 AlphaGo Zero
14.3 試驗場大觀
14.4 本章小結
15 | 擴充討論
15.1 TRPO
15.2 反向強化學習
15.3 模型壓縮
15.4 本章小結
A | 附錄
A.1 安裝Ubuntu
A.2 安裝CUDA 環境
A.3 安裝PyTorch
A.4 下載本書範例程式
A.5 安裝PyCharm
A.6 安裝Jupyter Notebook
A.7 安裝相關Python 相依套件
A.8 安裝OpenCV
A.9 Python 語言簡介
A.10 本書有關的主要開放原始碼軟體版本
B | 參考文獻
序/導讀
前言
當人工智慧的熱潮席捲全世界的時候,當我們一次又一次為各種人工智慧新作而驚歎的時候,我們不約而同地將目光投向了深度學習領域。我們對這個既新鮮又傳統的領域有一種憧憬,甚至我們之中的許多人會在某一刻認為這可能是未來機器覺醒前的萌芽。
說深度學習新鮮,是因為它在近幾年的發展確實獲得了令人矚目的成果,不論是在電腦視覺(Computer Vision,CV)領域,還是在自動語音辨識(Automatic Speech Recognition,ASR)領域,抑或推薦系統應用領域,都邁上了一個前所未有的新台階。這當然得益於電腦硬體處理能力的提升,包含CPU 的速度、記憶體的大小、磁碟的容量;得益於新型平行計算架構的逐步成熟,例如CUDA(Compute Unified Device Architecture);得益於廣大熱衷於貢獻高品質開放原始碼軟體系統的大廠的扛鼎力作,例如TensorFlow、PyTorch、MXNet 等優秀架構的不斷湧現。這些無一例外,都成為推動一個企業在全國乃至全世界發展的重要因素。
說深度學習傳統,是因為它最為基本的理論部分,是在數十年前就逐步有人提出並進行完整的一套理論系統。一位朋友曾告訴我,在他研究所畢業的時候(應該是在21 世紀初),有不少同學的研究方向是人工智慧和神經網路,而其中的大多數人,不是進了研究機構,開始日復一日「讀Paper、寫Paper」的過程,就是進了保險公司、證券交易所等企業——做什麼呢?也不是做自己的老本行,而是做報表、做資料分析、寫報告。
當然,這些同學算是比較「幸運」的,還有相當一部分乾脆改行,擔任一些企業的開發職位,做Java 開發或資料庫架構之類的工作。我完全沒有輕視這些職位和企業的意思,我只是單純地覺得,在大學中花了那麼多年走出來的一條路沒有堅持下去,是一件非常可惜的事。而在導致這一現象的許多客觀因素中,前面提到的運算能力、架構成熟度、軟體套件可用性等具有決定性的作用。
不過,我們趕上好時機了。除實作應用外的大部分基礎問題,都已經由那些世界一流的資料科學家幫我們解決,並封裝成一個個開放原始碼或非開放原始碼的軟/硬體產品。
其實,除了深度神經網路在CV、ASR、NLP 等領域的應用,近幾年,深度學習在另外一個領域具有炫目的成績,那就是深度強化學習領域。別的不說,大名鼎鼎的AlphaGo 和AlphaGo Zero 就是典型的深度強化學習應用。從感性的角度看,深度強化學習似乎是由「深度學習」和「強化學習」兩個領域結合而成的——這個說法應該不算錯。
所謂深度學習,一般是指以深度神經網路為基礎的一系列應用,而這個領域應用的豐富程度也是非常高的。因為深度神經網路具有超高的VC 維,所以理論上它幾乎可以用來實現任何從x 到 f(x)的對映關係。
強化學習所研究的事情就更有意思了。強化學習研究的主要是如何讓機器人在一個預先定義好的環境中,透過自己學習來逐步形成或學會一套成熟的、高品質的自動化行為策略,這也是一直以來世界一流大專院校的人工智慧課程設立並努力研究的神秘而又讓人充滿幻想的領域。
為了讓讀者們能夠近距離接觸強化學習和深度學習結合應用的案例,讓這樣一個有趣且具有光明前景的領域以更加平易近人的姿態出現,在這本書中,我將用具有高中數學基礎的讀者朋友能夠了解的語言,和大家好好分享一下如何用深度學習的利器PyTorch 來完成人工智慧機器人自我進化的完整過程。
本書特色
可以說,我們處於人工智慧時代的起點。這是一個非常好的時代,那麼多優秀的開放原始碼軟體架構,為每一個程式設計師提供了低門檻的學習工具。
本書以「平民」的起點,從「零」開始介紹深度學習的技術與技巧,讓讀者有良好的帶入感和親近感,並透過逐層準備,把學習曲線拉平,讓沒有學過微積分等進階理論的程式設計師朋友一樣能夠讀得懂、學得會。同時,本書配合漫畫插圖來調節閱讀氣氛,並在每個原理說明的部分都提供了比較和實例說明,相信每位讀者都能有輕鬆、愉悅的閱讀體驗。
如果你的英文閱讀能力不錯且有比較高的學術素養,足以以英文原版文獻(不論是公開課、論文,還是經典教材)作為首選的閱讀資料,那麼,仍然推薦你閱讀英文原版內容,因為那將讓你更為直接地接觸相關知識。
基於本書的定位,在描述討論對象的時候,我通常不會使用學術等級的詞彙,而是盡可能使用程式設計師能夠讀懂的語言。因此,與經典的閱讀材料相比,本書敘述的內容難免存在一些偏頗,甚至可能為了言簡意賅地說明原理而有失嚴謹。另外,在一個理論出現或相關論文發表之後,從我把它讀懂、寫清楚到圖書出版,至少需要一年,甚至可能更久,而這對一個在領域前端工作的技術人員來說,時間顯得有些長。因此,對學習能力比較強的讀者來說,本書作為專案實作參考書更為合適。
適合讀者群
本書適合以下讀者閱讀。
●對深度學習和強化學習有興趣,但完全不了解的技術人員。
●對深度學習和強化學習比較有興趣的技術人員。
●深度學習和強化學習領域的初級從業人員。
●希望對深度學習和強化學習進行入門了解的技術人員。
如何閱讀本書
本書的主要內容如下。
●第1 章到第5 章,說明傳統強化學習的研究目標與脈絡,主要介紹如何從一個程式設計師的角度了解強化學習最為輕鬆,偏重於了解方式的誘導。
●第6 章到第11 章,是本書的核心內容,講的是深度學習的原理、PyTorch架構的基礎及深度強化學習的常用演算法模型。
●第12 章到第15 章,說明擴充性的知識。例如,其他有助訓練模型的演算法想法,協力廠商工具外掛程式,可供實驗的環境,一些有趣的強化學習演算法和觀點,甚至模型實現過程中的最佳化與壓縮。
●附錄A 中詳細記載本書有關的各種軟體環境的安裝和設定過程。
套用一句時髦的廣告語:「深度強化學習從入門到實現,讀這一本就夠了。」
同時,你也可以發送電子郵件至77232517@qq.com 與我聯繫。
期待獲得你的真摯回饋,讓我們在技術道路上互勉共進。
高揚