關於《reinforcement learning :an introduction》的理解?
看了半個月這本書,覺得書中很多例子和公式演算法很難理解,不知道有沒有大神已經研究完了這本書可以給出一些閱讀心得或者筆記呢?
謝邀。我一年前開始學的RL,那本書反反覆復看了幾遍。我一個人在實驗室看書,沒有討論,沒有資源,知乎那時候RL的東西也不多。一開始很痛苦,不得要領,後面才慢慢搞懂的。 給出兩個我的轉折點。
我的經驗是,看不懂書和論文,說明有一些依賴的基礎知識沒有掌握到一定強度。需要用別的材料降低學習曲線,而不是死磕一本書。
1. online course CS188x_1 Course Info 中的RL章節,有Qlearning的算例,跟著一步一步手算。
2. UCL silver的課程。 那個課程很長,我主要是看ppt。ppt對應這本書的內容,終點被突出了。3. 自己動手寫。 我一直找開源的包,用來用去都不滿意,自己用java從零寫了一個通用的 RL框架。 這個過程很漫長,我寫過3個版本都扔掉了,最近一個才比較好用。在這個過程你能自己思考RL的本質,很多事書上沒有的東西。
現在才慢慢感覺入門。 你的心情我能理解,加油,多看看其他材料,時間到了會豁然開朗的。
我寫的通用RL框架 GitHub - mannerslee/GeneralReinfocementLearningFramwork: General Reinforcement Learning Frame implement by Java一些我學過的輔助材料
強化學習(reinforcement learning)有什麼好的開源項目、網站、文章推薦一下?也多看看知乎其他人的回答,啟發特別大。DQN 從入門到放棄1 DQN與增強學習 這個系列對我啟發就特別大。另外英語, 概率統計,線性代數,最優化 能力加強對理解RL是非常大的好處的。這一年我花過不少時間重新學校 MIT線性代數的視頻, 台大林軒田《基石》《技法》這學期修了sutton教的reinforcement learning,給這本書所有figure寫了代碼,樓主有興趣的話可以去看一看
ShangtongZhang/reinforcement-learning-an-introduction
====update=====課程的slides和assignments等可以去這裡下載Index of /sutton/609 dropbox這本書內容還是比較簡單的,沒有什麼複雜的公式,特別是前面tabular的部分,後面和trace有關的部分開始出現了一個比較複雜的公式,好多都是state of the art, 如果有興趣可以搜一下rich最近的paper .這本書現在最新的版本是9月份,老闆現在還在寫,估計最終版還有不少新的東西。這本書的內容現在看已經很過時了(不過最近作者在寫新的一版,還在草稿狀態),但是內容很基礎,結合很直觀的例子,講解也很清晰(其實有些地方我都覺得廢話有點多=_=),入強化學習的坑還是一定要讀一下的。第一遍讀有些證明看不懂就算了,先知道有這麼回事兒。
當然如果不準備入坑,網上有好多強化學習的tutorial,視頻或者slides。可以看看幾個演算法的演示動畫了解一下。
下面這個是我上過的課的主頁,有些slides還是挺有用的。裡面還有一些比較近期的paper,看完書可以看一下。Reinforcement Learning: Theory and Practice -- Fall 2016: Resources Page強烈推薦這本書!
答主有個習慣,就是入門某領域的時候先找一本權威的書籍啃透基礎知識,然後去補充前沿論文。這本書是我經過調研之後,選擇作為細啃的主力資料。目前已啃到第十章,代碼也擼了一遍,題主如果也啃這本書可以一起討論!哦對了,我有記讀書筆記,有需要的話 可以分享~
--------------------------------------------------------------------------------------------------------
一句話總結:這是一本打地基的非常優秀的入門書籍,屬於紮實內功的修鍊。內容翔實,廣度足夠,深度略有不足(需要額外參考相關paper),整體內容緊跟前沿(新版本已有,17年的)。
對於題主的公式例子看不懂的問題,個人有3個建議:
1、堅持正確的學習方向(權威資料)。
好吧,我承認這句話有點毛概思修課本的既視感,但是這麼寫是有我的道理的~~
一定一定堅持看最權威的教程,哪怕都是英文的很耗時;一定一定要綜合對比多份資料,外加自己的思考後,再吸收某個知識。是的,我就是在反對很多博客或者在線教程,很多東西解釋的模模糊糊,本身都是有錯誤的,如果被這些零散的東西先入為主,那麼之後會越學越費勁。
所以一定得有自己的思考,你感覺不太對的地方,就要堅持你的想法,不要「好吧好吧,就先按照這個人說的想吧」。去google搜(別百度·····),去stackoverflow上搜或者問問題,去github上看看有誰寫了這方面的代碼,去發起issue去問。總有一本書的某一段、一個人的某一句話,會讓你豁然開朗,覺得 thats it ! 那才是你尋找答案的終點。
對了,多說一個心得:在開始入門的時候,系統的書比ppt效果好。因為你還沒有對整個領域的知識有系統的把握,所以ppt上的重點部分,你很難get到它的點。而書中會有很多的「廢話」,就是過渡的話,這些話很可能對你有用。
推薦三本:
第一個當然就是Sutton這本,我發個最新版的2017年修改的:
鏈接: https://pan.baidu.com/s/1eStNGjS 密碼: ckdt
這個版本比前些版本增添了一些內容,尤其是加上了policy gradient的內容,代碼也更豐富。
第二個是「reinforcement learning state-of-the-art」,略難一點,可以當前一本的參考,有不懂的到這本里翻翻:
鏈接: https://pan.baidu.com/s/1mhLfANA 密碼: wnvy
第三個是我之前參考過的一本書,這個結構和sutton那本不太一樣,有自己的特色,有些sutton書里省略的部分,在這本書里卻可以找到稍微詳細的解釋,這也是參考多本書的意義。
鏈接: https://pan.baidu.com/s/1nvmNU2H 密碼: 2qu9
2、基本英文和數學知識
題主可能也看到了,很多這方面的權威讀物或者ppt都是英文的,所以,沒辦法,只能儘可能看原版,看多了英文也不覺得晦澀了。當然了,如果你感興趣,我把我的讀書筆記鏈接放在這裡,只是寫了自己的理解,僅供參考和交流,你還是要對照原書看,自己思考還是最重要滴!
專欄:神經網路與強化學習
其實Sutton的書中用的數學,我覺得大學學的線性代數、概率論就夠用了,沒必要專門再去跟線代或者概率課程,別顛倒了主次。其實很多時候,某個公式看不懂,我都是直接百度百科,看一下介紹,應該就想起來了。
3、動手寫代碼,動手寫代碼,動手寫代碼
你可以把這步當做最重要的一步,也是升華的一步。你可能以為自己這一章的理論都看懂了,也能跟別人說道說道了,但是!!!如果寫不出代碼,或者不寫代碼,相信我,不出一星期,你會忘的一乾二淨。。。。。
強化學習裡面那些演算法,每個都有很多細節,感覺理解了和實際真的理解,不通過代碼是驗證不了的。如果你一開始寫不出來,不要緊,繼續google、stackoverflow,找各種別人的實現,不要直接複製粘貼,要自己一句一句跟著寫,確保你明白他為什麼寫著一句。如果你暫時不明白,就跳過這句,按照你可以理解的,繼續寫下面的代碼。
######## 反正最後如果跑不成功,你就知道你跳過的那句是多麼重要了。哈哈哈 #######
等你完成了一本書之後,你就可以去看看前沿論文了,deepmind有幾篇挺好的, John Sculman有一篇TRPO也挺好,下面都給出了鏈接,題主可以自己選擇看看。那個時候,你應該沒有現在的疑惑了。
祝學習順利~
---------------------------------------資源分割線 ------------------------------------------------
資源鏈接在此~:
David Silver 課程及ppt: (課程)- 搜索結果 - 嗶哩嗶哩彈幕視頻網 - ( ゜- ゜)つロ 乾杯~ - bilibili
(ppt):http://download.csdn.net/detail/happytofly/9554148
重磅論文們:
[deep Q network]:https://arxiv.org/abs/1312.5602
[A3C]:[1602.01783] Asynchronous Methods for Deep Reinforcement Learning
[UNREAL]:arXiv:1611.05397
還有一些在我的github裡面:論文
演算法實驗平台:
openAI gym: OpenAI Gym: A toolkit for developing and comparing reinforcement learning algorithms
vizdoom:Home | ViZDoom
TORCS: TORCS - The Open Race Car Simulator
好吧,雖然寫的也一般,如果題主想看代碼,歡迎:RL frameork;
題主想找人討論的話,聯繫我邀請你加群~
Sutton這本書是強化學習的經典教程,必須細讀,習題都得做。不要追求快,不要求速效,俗話說:「基礎不牢, 地動山搖」,搞RL你得把基礎打牢。不要在缺乏基礎的時候就拿開源代碼開擼,擼了不理解,白費勁。
我公司的做法:
1. 明確Sutton老師的reinforcement learning是我們學習的唯一教材,專註讀它, 「方讀此,勿慕彼,此未終, 彼勿起:。」
2. 每周四下午固定時間,集體學習,每周一章,從第一章開始,一章不漏。每周選一個員工當老師,給大家講解。這麼做的好處是:起碼當老師的那位被迫學得很深入,不然真心講不出來。講完之後,大家提問,開撕,在討論中加深理解。
3. 集體學完之後,布置做習題:或答題,或用Python寫出代碼,我檢查。
經過這種方式學習之後,對教材、對強化學習的基本原理,理解得就很深入了。
上幾幅集體學習Sutton老師教材的現場照:
趁今年過年前公司code freeze,看了一遍這本書。
感覺這本書講的太好了,深入淺出,可以像看小說而不是數學書一樣的看。
把David Silver的課上沒講明白的東西,都說得灰常清楚。
個人強烈建議直接以這本書入門。
這裡也來聊聊Richard 和 Andrew的著作 《強化學習:簡介》。
Richard 大神(下圖可愛的大神)是斯坦福畢業的。目前在University of Alberta, 對強化學習裡面的Policy Gradient方法有著巨大的貢獻,並且博士畢業論文裡面提出了牛掰的「actor-critic」架構, 他在不遺餘力的創新和推廣強化學習。
另外一個作者是, Andrew Barto,他是University of Massachusetts Amherst的教授, 他在強化學習方面獲得過IEEE的先驅大獎。他對TD演算法和大腦中的「戀愛化學元素」 多巴胺之間的聯繫有獨特的解釋。 他至今為止還沒有招收過中國學生, 有興趣的可以試試!
兩位開創性大神寫的簡介, 絕對不僅僅是簡介! 目前國內還沒有好的強化學習的材料, 這本書絕對是首選!在第一版之後, 現在正在修改第二版, 還沒有定稿, 大家可以讀了反饋修改意見,哈哈!
整本書可分為三大部分:
從歷史到基礎的方法作為第一部分, 這個部分是經典, 講明了強化學習誕生的背景知識。 第二部分,是基礎到實際應用, 強化學習獨立於其他演算法,在於各種切合實際的模型誕生。 第三部分,是未來,再從心理學和應用展望強化學習的未來。
一, 基於表的解決方式
強化學習屬於機器學習範疇, 離不開概率統計分析的背景, 從Multi-arm Bandits這個經典的概率問題出發引入。
然後開始介紹強化學習的理論基礎, 有限馬爾可夫決策過程, 介紹從馬爾可夫過程到馬爾可夫決策過程來說明目標和獎勵為什麼是強化學習的核心。
在這個理論基礎上,介紹TD這個經典的強化學習模型,而TD是動態規劃和蒙特卡洛方法的結合, 所以又先介紹動態規劃和蒙特卡洛方法。
有了TD這個強化學習的基礎模型, 開始介紹表數據TD演算法的常見思路和問題, 為下一章近似求解打下基礎。
二, 近似求解方式
在近似求解, 就開始介紹 On-Policy 和 Off-Policy下預測和控制的不同近似.
最後, 引入Policy Gradient這個革命性的模型。
並且在這個裡面, 提出了Actor-Critic框架。
三, 深入聯繫和展望
最後聯繫心理學Rescorla-Wagner模型和強化學習的TD模型, 神經科學和Actor-Critic架構, 和各種實際應用:遊戲,Go等等。
這本書啊,我看也就那樣,演算法都寫那麼明白了,github上還有source code,要再整不明白,那你還是棄坑的好。
看書還是太慢,要想學的話,把silver的slides過一遍,一天能搞定吧?再把deep learning summer school上講policy optimization的tutorial 過一遍,一下午能看完吧?
接下來把幾篇經典的新論文對照著網上的source看一遍,什麼dqn啊,ddpg啊,trpo啊,一個星期能搞定吧?
這時候再過個幾十篇這個領域的paper,有點自己想法了,你就可以擼起袖子開幹了。我本科跟著Sutton老師上這門課的時候,Sutton每周都有手寫的證明每個公式和每個公式變形的題,還有好多將公式應用在隨機馬科夫過程上的題,之後還有三個對具體問題的編程,當時我剛大三,認認真真照著做下來一個學期也基本上把除了蒙特卡洛森林意外的知識都弄懂了。
多看,推薦你先看機器學習,周志華那本的強化學習章節。還有知乎上的dqn系列入門。然後是sutton的書,有第二版了。然後是david silver的視頻和slide。最後是sutton書的代碼練習。以上建議抽出一周時間,反覆的看,然後你就入門了,下個gym,tensorflow照著論文開擼吧!
不邀自來!筆記和資料其他答案已經推薦過了,借著這個問題引用我的豆瓣書評來簡單地說一下個人的閱讀心得。
這是一本極好的書,不僅能使你對強化學習(reinforcement learning)有精確、透徹的理解,更能夠提升你的思維層次。
接觸人工智慧領域6年多了,用過統計學習(statistical learning)和深度學習(deep learning)做過一些項目。目前,David Silver的教學視頻已經過完,這本書讀到了第10章(第二版)。下面說一下個人淺陋的理解。
目前應用最廣泛的監督學習(supervised learning),不管是統計學習還是深度學習,本質上都是基於即時反饋,用可訓練的參數去擬合、存儲標註樣本中的監督信息,從學習範式上看是一種記憶過程。但我們知道,人的智能分層中記憶是比較低層的,相對於普通動物,人的智能優勢表現在基於預見(prediction)能力的推理(reasoning)、決策(decision)層面。最高層的智能形式是信仰(個人意見,但這不屬於計算機科學甚至自然科學的研究範疇)。強化學習具有與環境交互以及反饋延遲的特性,提供了更可行的構建預見模型和決策模型的學習範式。當然,這兩個特性也限制了它的廣泛應用。
事實上,很多應用領域反饋本質上就是延遲的。計算機視覺中,長時跟蹤(long-term visual tracking)領域有一個核心但是很困難的問題:目標表觀模型(appearance model)的更新。這個問題之所以困難是因為,更新過程必須實時進行,但是當前更新策略的優劣只能等到跟蹤失敗或者跟蹤過程成功結束才能夠判斷。監督學習不適於解決這種問題,因此以前的方法都是結合先驗知識,人工設定更新策略。現在,強化學習提供了針對這個問題的可行方案。第二個領域是當下比較火熱的醫療AI。在這個領域中,由於治療方案的可行性必須通過對病人長期的觀察才能確定,因此監督學習更多地適用於初次診斷。對於長期的治療、複診過程,必須採用更恰當的學習範式。
衷心地希望將來機器學習領域能誕生更多優秀的學習範式!
正在學習中,剛看完第一遍,知道了整體架構,很多細節還不是很理解。後面會深入多看幾遍,並試著謝謝代碼。
沒上過課,通過寫作業,把這門課搞明白了。
其實366不是很難的,主要就是搞明白如何去用,以及為什麼要那麼優化。
我看了一周,嗯,你懂的,我用這本書把dqn的論文看明白了(*/?\*)
我看了將近一半的東西,其中後面的演算法沒有太深入的研究,因為好像我目前還不太用得到。總得來說如果想要做AI方面的東西我覺得後面還是很有用的。而我是做控制的所以還不確定有沒有用,需要的時候再深入研究吧。還有就是個人覺得這本書里的演算法都是比較經典的演算法,而現在強化學習已經發展到積分強化學習和分層強化學習,具體有用沒用還要看究竟是研究哪個領域用到什麼地方。如果沒有時間可以理解原理及其後面的演算法大概思想等真正用的時候再深究;如果真正用到這塊的東西並且有時間的話還是可以深入的看看,畢竟是最基礎的入門的東西。
推薦閱讀:
※搞Reinforcement learning,除了OpenAI Gym,還有什麼測試平台?
※知乎專欄(Reinforcement Learning),寫什麼好?
※如何評價Frank L. Lewis的學術成果及其團隊現狀?