上海交大ACM班俞勇團隊推出強化學習入門寶典!附作者對話
- 2022 年 4 月 19 日
- AI

作者 | Ailleurs
在過去十多年的發展中,基於機器學習的智慧檢測和智慧預測類的人工智慧技術快速發展。例如,在門禁系統中應用的人臉活體檢測、在個性化資訊流推薦中應用的用 戶興趣預測已成為人們日常生活中不可或缺的技術。如今,在這些成熟的人工智慧技術基礎上, 服務於決策智慧的技術變得越來越重要,這背後對應機器學習領域下的一個分支——強化學習。
目前強化學習技術已經在機器人控制、遊戲智慧、智慧城市、推薦系統、能源優化等領域得到廣泛應用,發展前景廣闊,業界對強化學習人才的需求量也與日俱增。
但是,強化學習的普及教育較為滯後,不少高校仍未開設強化學習課程,學生迫切需要一條系統學習強化學習技術的專業路徑。
近日,上海交大ACM班的俞勇團隊結合多年研究與教學,推出了一本強化學習入門書——《動手學強化學習》,號稱理論能講透、程式碼能跑通、實驗可復現,立即在社區內引起了廣泛關注。
針對該傑作,AI科技評論也特地聯繫了該書的作者之一、上海交大副教授、青橙獎和吳文俊優青獲得者張偉楠,向他了解了此書背後的故事(見文末)。
如果你想「入坑」強化學習,那這本書絕對不可錯過~
張偉楠,上海交通大學副教授,博士生導師,ACM班機器學習、強化學習課程授課老師,吳文俊人工智慧優秀青年獎、達摩院青橙獎得主,獲得中國科協「青年人才托舉工程」支援。他的科研領域包括強化學習、數據挖掘、知識圖譜、深度學習以及這些技術在推薦系統、搜索引擎、文本分析等場景中的應用。他在國際一流會議和期刊上發表了100餘篇相關領域的學術論文,於2016年在英國倫敦大學學院(UCL)電腦系獲得博士學位。
沈鍵,上海交通大學APEX實驗室博士生,師從俞勇教授,研究方向為深度學習、強化學習和教育數據挖掘。在攻讀博士期間,他以第一作者身份發表機器學習國際頂級會議NeurIPS、AAAI論文,參與發表多篇機器學習和數據挖掘國際頂級會議(包括ICML、IJCAI、SIGIR、KDD、AISTATS等)論文,並擔任多個國際頂級會議和SCI學術期刊的審稿人。
俞勇,享受國務院特殊津貼專家,國家級教學名師,上海交通大學特聘教授,APEX實驗室主任,上海交通大學ACM班創始人。俞勇教授曾獲得首批「國家高層次人才特殊支援計劃」教學名師、「上海市教學名師獎」「全國師德標兵」「上海交通大學校長獎」和「最受學生歡迎教師」等榮譽。他於2018年創辦了伯禹人工智慧學院,在上海交通大學ACM班人工智慧專業課程體系的基礎上,對AI課程體系進行創新,致力於培養卓越的AI演算法工程師和研究員。
本書系統地介紹了強化學習的原理和實現,理論紮實且落地性強。對於初探強化學習的讀者來說,本書不僅能夠幫助你理解強化學習的演算法原理,提高程式碼實踐能力,更能讓你了解自己是否喜歡決策智慧這個方向,從而更好地決策未來是否從事人工智慧方面的研究和實踐工作。
這本書的內容一共包括3個部分:
-
第一部分為強化學習基礎,講解強化學習的基礎概念和表格型強化學習方法;
-
第二部分為強化學習進階,討論深度強化學習的思維方式、深度價值函數和深度策略學習方法;
-
第三部分為強化學習前沿,介紹學術界在深度強化學習領域的主要關注方向和前沿演算法。
同時,本書理論與實踐並重,在介紹強化學習理論的同時,還提供了配套的線上程式碼實踐平台,展示源碼的編寫和運行過程,能夠讓讀者進一步掌握強化學習演算法的運行機制。
本書適合各類對強化學習感興趣的人群。如果你是學生,你可以通過這本書中提供的一條自學捷徑,成功入門強化學習領域。如果你是高校教師,你也可以將這本書作為教材,開設強化學習課程。如果你是程式設計師,那麼你可以通過這本書中的理論和實戰,落地強化學習。
本書目錄如下:
那麼這本書的主要亮點有哪些呢?
第一,這本書注重理論基礎,兼顧公式推導。做好公式推導,才能熟練編寫程式碼和理解演算法,本書提供了超清晰的公式推導過程,讓新手不用再經歷「公式不知道用在哪裡,公式不知道怎麼推導出」的抓狂體驗。
第二,這本書中注釋清晰,程式碼實戰的落地性極強,「動手學」的思維很清晰。書中提供的程式碼都是基於 Python 3 編寫的,而且程式碼在涉及自動求導時皆使用目前比較受歡迎的 PyTorch 框架實現。每一章的內容都提供了Jupyter Notebook鏈接,可以在線直接運行。
第三,本書配套資源豐富。作者團隊為這本書錄製了在線影片,使得學員可以兼顧教材和網課來進行系統地學習,課後練習和在線答疑也可以幫助同學鞏固所學知識,提高學習效率。
這樣一本強化學習入門佳作也獲得了圖靈獎得主John Hopcroft、李沐、俞揚、張志華、汪軍、李航等多位業內大咖的強烈推薦:
3
對話張偉楠
AI科技評論就本書的編寫緣由、編寫過程、內容亮點、學習建議等方面,對本書的編者之一張偉楠副教授進行了採訪,整理如下。
AI科技評論:你們最初是怎麼有編寫這本書的想法的?從開始編寫到完稿花了多長時間?
張偉楠:我本人長期做強化學習方面的研究,也在上海交通大學講授強化學習課程。本書三位作者所在的上海交通大學APEX數據和知識管理實驗室(簡稱APEX實驗室)有一個30人的強化學習研究組。強化學習的研究其實門檻比較高,一方面它對數理統計基礎要求高,另一方面它的實驗總是比較難做成功,很多時候需要付出很多努力才能復現論文實驗結果或者做出新的實驗突破。因此我也經常開玩笑說:要做好強化學習研究,你需要數學好,編程好,還要品格好。最後的「品格好」是指需要具備實事求是的態度和持之以恆的韌性,在強化學習實驗調不出來時還能細心檢查bug,在實驗跑了一周還沒起色時,願意再堅持幾天,在最終意識到自己方法確實不work時,能坦然面對,重新設計演算法。
強化學習組的師生們相互幫助,促進研究效率提升,也為帶剛剛進組的新同學「避坑」,就慢慢沉澱出了一份強化學習演算法的程式碼。而真正想到把強化學習程式碼整理公布出來,是有一位外校的研究生跟我討論時說,他們實驗室只有2位同學做強化學習的研究課題,問我如何才能做好強化學習的研究和實驗。我當時想了想,覺得他的情況可能確實比較難一點,因為沒有足夠的同學一起研究強化學習,很多強化學習的理論可能會理解不夠深入,很多實驗方面的「坑」沒有被趟過,於是就比較難以入門,進入研究深水區。因此,如果能有一本材料,能把強化學習的理論講透,並且把相關的實現程式碼就穿插在理論演算法講解中,那麼學習起來可能就會更加容易體會強化學習的原理。更重要的是,這些程式碼要能夠直接跑通,實驗結果可以復現,這樣就能體會到強化學習演算法是如何work的。
當時正好ACM班學長李沐的《動手學深度學習》剛剛出版,每一個章節對應的Jupyter Notebook很適合邊學理論邊跑程式碼,受到了業界廣泛的好評,我也就決定嘗試整理APEX實驗室的強化學習程式碼和相關的講解材料,寫出這本《動手學強化學習》。
第一稿完成花了接近一年的時間,但是仍然比較粗糙。部分內容對於初學者還是比較困難。我將部分章節的Jupyter Notebook作為教輔內容以及程式碼小作業發放給我講授的強化學習課程的學生們,並請他們回饋相關的改善建議,進一步迭代程式碼和文字材料。在迭代了2020和2021兩年的強化學習課之後,我們認為現在的版本差不多可以出版了。當然本書可能還是會有不少可以改進的點,還請各位讀者多多回饋修改意見,我們十分感激!
AI科技評論:你之前曾在RLChina夏令營和上海交大講授強化學習課程,從你的經驗看,不同類型的學生們會比較關注哪些內容?你們如何為初學者設計一個漸進式的學術和項目的學習路線,又如何根據回饋來完善這本教材的?
張偉楠:我在上海交通大學給致遠學院ACM班和電院AI試點班的同學講授強化學習,由於學生的專業和本課程內容很貼合,因此學生對強化學習的原理部分關注較多。在夏令營中獲得學生的回饋更多來自如何在各種各樣的領域用好強化學習技術,當然也有不少本專業的學生對強化學習本身的研究十分了解。對於來我們APEX實驗室的強化學習初學者,我建議的學習路線是:
1. 先學習UCL David Silver的強化學習課程://www.davidsilver.uk/teaching/
這是強化學習的基礎知識,不太包含深度強化學習的部分,但對後續深入理解深度強化學習十分重要。
2. 然後學習UC Berkeley的深度強化學習課程://rail.eecs.berkeley.edu/deeprlcourse/
3. 最後可以可以挑著看OpenAI 的夏令營內容://sites.google.com/view/deep-rl-bootcamp/lectures
當然,如果希望學習中文的課程,我推薦的是:
1. 我本人在上海交通大學的強化學習課程: //www.boyuai.com/rl
2. 周博磊老師的強化學習課程://www.bilibili.com/video/BV1LE411G7Xj
AI科技評論:你們認為,初學者學習強化學習的難點在哪裡?本書希望幫助學生解決學習強化學習的過程中遇到的哪些難點,這些思考是否與你自己之前的強化學習經歷有關?
張偉楠:傳統課堂講授的內容比較深奧,與動手實踐的差距會比較大。課後自己做一個強化學習程式碼實驗,可能不知如何下手,並且實驗過程中需要注意的細節較多。這也是《動手學強化學習》這本書希望彌補的gap。讀者在看完一個知識點的一段文字和公式講解後,馬上就可以看到對應程式碼塊——程式碼中的變數名和前面公式中的符號一致,函數名也和前面文字中提到的方法名一致;程式碼塊可以直接在Jupyter Notebook上運行,跑出書里的結果——這樣就加速讀者通過程式碼學習對強化學習原理的更加深入的理解。
我自己學習強化學習的經歷主要是2013年在UCL讀博期間上了David Silver老師的強化學習課程,後續又在微軟劍橋研究院師從Thore Graepel做強化學習的研究實習生(後來這些老師和實習生幾乎都去了DeepMind)。實話說,當時學習強化學習我是覺得比機器學習要吃力的,主要就是上面講到的那樣,原理講解和程式碼實踐差距較大,學習了課程和論文後,以為自己理解原理了,但寫程式碼時就總會碰到各種問題。
AI科技評論:在寫這本書的過程中,你是否對學習強化學習的竅門、前景等有了新的認知?
張偉楠:通過APEX實驗室和強化學習課堂的學生們的回饋來看,這種Jupyter Notebook的學習材料是可以有效幫助提升對強化學習原理和程式碼理解效率的形式。希望這本書能夠幫助更多人入門強化學習。
AI科技評論:這本書中,你認為最精彩/最有特色的是哪一部分?
張偉楠:我比較注重強化學習基礎篇的講解,相信讀者在充分掌握了基礎篇後,後面的進階篇和前沿篇就會學得更加容易。因此本書的基礎篇其實是我最滿意的部分。例如在馬爾可夫決策過程(MDP)的章節中,我們在介紹了MDP的基礎知識後,引入了佔用度量(Occupancy Measure)概念的講解,通過概念、原理和程式碼實驗的講解,讓讀者深入理解一個策略和一個MDP交互行程的數據分布是什麼樣子,以及體會為什麼一個策略一旦改變了,那麼佔用度量就會跟著改變。這樣就講清楚了為什麼強化學習比有監督學習難度更大的原因——智慧體學習過程中,隨著策略不算更新,它面臨的數據分布(也即是佔用度量)會隨之改變。
AI科技評論:本書的封面是有什麼具體的意思嗎?
張偉楠:本書的封面描繪的是一個機器人站在懸崖邊,準備決定之後該如何行走。這其實對應本書中用到的一個典型強化學習案例Cliff Walking(懸崖漫步),不同的強化學習演算法會讓機器人走出風險和收益不同的路線。

《動手學強化學習》封面圖
AI科技評論:這本書採取了類似ACM班以在線 Jupyter Notebook 的形式為學生提供課程輔助材料和程式碼小作業的方式,在學習者規模擴大的同時你們採取了哪些措施來加強學習體驗?
張偉楠:我鼓勵學員們加入我們在伯禹學習平台的強化學習課程中( //www.boyuai.com/rl),本課程是全免費的。上面除了有我在上海交通大學強化學習課的影片,還有在線可以完成的課後習題,以及學員們就本節知識點做出的思維導圖和問答討論。這樣可以幫助學員們在教師資源相對少的情況下,仍然具備較高的學習效率。
AI科技評論:這本書的定位是什麼,可以推薦其他可以與這本書互補的配套學習書籍嗎?
張偉楠:本書可以作為強化學習課程的教材,也可以作為偏程式碼學習和練習的教輔材料。適合配套的原理講解的書籍如下:
1. Richard S. Sutton and Andrew G. Barto. “Reinforcement Learning: An Introduction (Second Edition) .” MIT Press, 2018.
2. 俞凱[譯].《強化學習(第2版)》.電子工業出版社,2019.
3. 王琦、楊毅遠、江季.《Easy RL 強化學習教程》. 人民郵電出版社,2022.
AI科技評論:俞勇老師在本書的編寫中給與了哪方面的指導?團隊目前是否還有其他類似的教材和課程的推進項目?
張偉楠:俞勇教授在ACM班的培養方案中對動手實踐能力的培養力度比較大,學生從大一到大三,每個學期都會有編程類的大作業。充分鍛煉電腦人才獨當一面的動手能力,這成就了ACM班學生在畢業後編寫出了MXNet、XGBoost、TVM、PS、DGL、Hotstuff等具有重要影響力的項目。在作者團隊構思和編寫《動手學強化學習》這本書的過程中,俞勇教師關注最多的就是通過這種新型學習材料呈現形式,讀者是否能真正更好地掌握強化學習的原理和提升動手實踐能力。可以說,本書的具體形式就是俞勇教授塑造的。
此外在這裡賣一個關子 🙂 俞勇教授已經規划了一個大的動手學系列書目,希望提煉和踐行一種新的更高效的電腦科學和人工智慧專業知識的學習形式。歡迎大家多關注我們接下來的行動。

雷峰網雷峰網