強化學習怎麼入門好?

2021-02-20 人工智慧與算法學習

來源:知乎問答

https://www.zhihu.com/question/277325426

文章僅作學術分享,著作權歸屬原作者,如涉侵權請聯繫刪除!

什麼名字可以吸粉(阿里巴巴 算法工程師)

回答:

做了近兩年的RL,提供一個漸進式的學術和項目的學習路線,以及學習工具 :)
Summary: 1-10是基礎知識,11是用於學習和實踐的開源項目,12-15是RL裡學術topic。

1. 區分強化學習/有監督學習/無監督學習
- 這是三種不同的訓練方式,核心區別在於loss的設計。
- 三者可用於同一 task,就像錘子和砍刀都可以用於砸釘子。
- task 選用哪一種工具,取決於獲取 loss 所需數據的性價比。比如風格轉移,使用Discriminator 判斷 sample 是否屬於目標域,顯然優於一一標記數據集後進行有監督學習。

2. 區分 Return(s,a) 和 reward(s,a)
- reward(s,a) 是 environment 在狀態s下,對行為a的單步獎勵值。
- Return(s,a) 是 在狀態s下,對往後n步的獎勵值的組合。
-- n {0, 1, .... }
-- 組合方式常用discounting, 詳見 Sutton 書 3.3章。

3. 區分 Return,Q , V (value)和A(Advantage)
- Q(s,a) == Return(s,a)
-
-
-- 用A值更新policy會更穩定

4. 區分 policy 和 Q/V/A
- 在狀態 s 下,policy 選出用於與環境交互的行為 a。
- policy 選擇行為 a 的依據是 Q(s,a) / V(s') ( 在狀態 s 下執行 a 後轉移到狀態 s')
--- policy 1: argmax(Q(s,a))
--- policy 2: sample from distribution
- Q(s,a) / A(s,a) / V(s') 的更新依賴於policy

5. 區分MC, DP, n-steps TD, GAE
-- DP 是已知 s,a->s'的狀態轉移概率,直接計算被估計值
-- MC 和 TD 都是通過採樣估計值

-- MC 估計的樣本全部來自採樣,n-step TD 估計在第n步時使用估計值(有偏)
-- GAE 是對 n-steps TD 估計 Advantage值 的優化,將不同n值的TD 估計以decay的方式糅合在一起

6. 區分 policy-based 和 value-based
- 上述 policy 1 中的policy是固定的,因此為 value-based。
- 上述 policy 2 需要更新policy的分布,因此為 policy-based。

7. 區分離散和連續
- 理論上,在確定的 policy 下( eg, max ),可採樣估計出所有的 Q/V, eg, Q-learning
--- 離散 environments: grid world (github上很多,後續我也會開源一個 : )
- 實際上,當狀態空間連續(eg, Atari),或狀態和行為空間均連續(eg, Mujoco)時,估計所有 Q/V成本過高,無法實現,因此引入DNN進行近似(DQN, DDPG)
--- 連續 environments: open AI gym

8. 區分online和offline
- online是線上訓練,即便使用模型,邊訓練模型。
- offline是線下訓練,即使用訓練好的模型。

9. on-policy和off-police
- on-policy指,計算Return時所採用的sample,均由policy採樣所得。
- off-police指,計算Return時所採用的sample,並非由policy採樣所得。
- 對比Q-learning(off-police)和SARSA(on-policy)可以更直觀地看出二者的差異。

左(q-learning), update Q時直接用的max Q(s』, a』),右(SARSA),使用採樣的Q(s』, a』)

10. 區分 model-free 和 model-based
- 此處 model 指 environment。
- 顯然,上述所有內容,均將environment視為黑盒,故為 model-free - 易得,學習 environment (比如 s,a 到 s' 的轉移規則)的算法屬於 model-based。

11. OpenAI baseline
- 掌握了1-9的基礎知識後,就可以逐個學習baseline裡的算法啦~
- RL的基礎算法均有被baseline實現,可以邊看paper邊看code,有利於更快地掌握~
- 以後我會補充上baseline的代碼解讀~

12. 理解 exploration
重要,待補充

13. 理解 tradeoff variance and bias
重要,待補充

14. 理解 POMDP
見:花瀟:POMDP 基礎及其在 Crowd 場景中應用

15. 理解 multi-agents
重要,待補充

半情調(中國科學院大學 計算機技術碩士)回答:

以前整理過強化學習的資料,後來找不到文檔了,這次重新整理一下,可能不如以前完整了,後續想到再補充吧,也歡迎評論區補充。

一、強化學習相關的視頻

1.莫煩

莫煩的視頻通俗易懂,深入淺出,沒有複雜的公式推導,有小demo入門,代碼講解的比較清晰。如果英文不好編程能力不強的話,莫煩的視頻入門真的真的很適合。

莫煩

Pythonmofanpy.com

2.David Silver強化學習視頻

這個課一定要認真仔細看,做好筆記,最好是有強化學習基礎知識,要不然很多地方聽不太懂。我之前聽過計算所前瞻實驗室的強化學習課程,就是參考這個視頻講的,這個視頻被大多數老師和研究生們認可,算是比較權威了感覺。

這門課的中文筆記,在強化學習知識大講堂專欄中有葉強的文章,筆記寫的比較好。

【強化學習】Reinforcement Learning Course by David Silver_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibiliwww.bilibili.com

3.伯克利大學CS 294深度強化學習

這個深度強化學習的視頻,在B站上有中文字幕了,還記得我研一看的時候,沒有中文字幕,因為英語不太好,理解起來就比較難。筆記在網上搜就可以了。

【獨家】【中字】2018 年秋季伯克利大學CS 294-112 《深度強化學習課程》 @雷鋒字幕組譯製_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibiliwww.bilibili.com

4.臺灣大學李宏毅深度強化學習課程

李宏毅的課講的還不錯,就是有點口音,聽不大習慣。哈哈,聽兩節就適應了。

李宏毅深度強化學習(國語)課程(2018)_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibiliwww.bilibili.com

5.斯坦福課程CS234

這個我沒看過,也是強化學習的視頻,就放在這裡了。

斯坦福課程:強化學習(2019) by Emma Brunskill_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibiliwww.bilibili.com

除此之外,還可以去清華、中科院等大學或者研究所裡蹭課,自己老師當面講的,比較好理解,還能互動。


二、強化學習入門練習

1.OpenAI Gym


目前強化學習編程實戰常用的環境就是OpenAI的gym庫了,支持Python語言編程。OpenAI Gym是一款用於研發和比較強化學習算法的工具包,它支持訓練智能體(agent)做任何事——從行走到玩Pong或圍棋之類的遊戲都在範圍中。

MountainCar-v0

https://gym.openai.com/gym.openai.com

2.Gym Retro

大約18年,OpenAI 發布了完整版遊戲強化學習研究平臺——Gym Retro。遊戲數量從大約 70 個雅達利和 30 個世嘉遊戲增加到了1000多個遊戲,其中包括對Game boy等各種模擬器的支持。此外,OpenAI 還將發布用於向 Gym 平臺添加新遊戲的工具。

openai/retrogithub.com

3.Gym-Duckietown

Gym-Duckietown小黃鴨是在OpenAI Gym環境中開發了的自動駕駛模擬器。

https://github.com/duckietown/gym-duckietowngithub.com

4.Torcs-Kears

Ben Lau使用DDPG方法在Torcs仿真器中實現自動駕駛,應用的Keras框架,大約300行代碼,可作為自動駕駛方向的強化學習入門實驗。自動駕駛方向研究強化學習的基本上都跑過這個實驗吧,17、18年根據這篇文章改進的論文也比較多。

Torcs

https://yanpanlau.github.io/2016/10/11/Torcs-Keras.htmlyanpanlau.github.io

中文翻譯:https://www.jianshu.com/p/a3432c0e1ef2

代碼:https://github.com/yanpanlau/DDPG-Keras-Torcs

自動駕駛相關的比較多,還有個AirSim也可以用來學習。

https://github.com/microsoft/airsim

5.桌球遊戲

這是應用強化學習的策略梯度算法的桌球遊戲,Andrej Karpathy通過130行代碼實現的,幫助理解強化學習算法。

這個非常適合作為強化學習的入門Demo!!!!代碼附在下面,代碼沒有坑需要踩,直接運行即可,訓練一段時間就能看到直觀的效果。

Deep Reinforcement Learning: Pong from Pixelskarpathy.github.io

代碼:

https://github.com/llSourcell/Policy_Gradients_to_beat_Pong

6.小鳥FlappyBird遊戲

該項目通過卷積神經網絡+Q-learning算法,利用Keras框架共210行代碼實現了讓程序自己學習如何玩耍FlappyBird。

新手向——使用Keras+卷積神經網絡玩小鳥www.jianshu.com

三、強化學習相關的書籍

強化學習的書籍,英文版的是sutton的那本Reinforcement learning: an introduction,寫的非常全面清晰,早就出了第二版,github上也有開源的項目去實現書中的代碼(連結已插入)這本書在強化學習書籍中的地位和David Silver視頻的地位一樣。但我不想一上來就推薦英文書,因為對英語不好的同學不友好,容易勸退(雖然我知道知乎上大佬很多很多)。不過這本書出了中文版,我們學校圖書館就有,大家也可以買一本看。

另外還有一本非常好的書,是郭憲老師寫的,多次推薦過了,《深入淺出強化學習:原理入門》,這本書可以結合著郭憲老師,知乎名「天津包子餡兒」的博客看。這本書真是我的入門書,來來回回翻看了少說也有三遍,有的算法看了四五遍。強化學習確實挺難理解的,有些公式需要反覆琢磨。


郭憲老師最近出了《深入淺出強化學習:原理入門》的姊妹篇《深入淺出強化學習:編程實戰》。大家看實戰書的時候,根據書中的代碼親自動手編程,並修改程序中的超參數,根據運行結果不斷體會算法原理。

其他的強化學習的書籍也買過,為什麼看這麼多呢,就是覺得有些地方這本書寫得好,有些地方那本書寫的深,多看些幫助理解罷了。

差點忘了,我第一次看到強化學習,還是在周志華老師的西瓜書中,西瓜小例子和多臂賭博機,也建議讀一下。


四、強化學習相關的論文

強化學習的論文自16/17年起,就非常非常多,自動駕駛、機械臂、遊戲等領域都有不少論文。下面羅列的這些都是比較經典的。只列出題目,可以去谷歌學術搜索,從鏡像進去就行。

相關焦點

  • 深度強化學習入門到精通--資料綜述
    其中,感知解決what,深度學習已經超越人類水平;決策解決how,強化學習在遊戲和機器人等領域取得了一定效果;認知解決why,知識圖譜、因果推理和持續學習等正在研究。強化學習,採用反饋學習的方式解決序貫決策問題,因此必然是通往通用人工智慧的終極鑰匙。
  • 入門必看 | 強化學習簡介 【RL系列】
    在第一篇文章中,你將會學到:強化學習是什麼,為什麼說「獎勵」是最重要的思想。強化學習的三個方法。深度強化學習中的「深度」是什麼意思?在進入深度學習實現的主題之前,一定要把這些元素弄清楚。可一旦你嘗試去觸摸它。哎呦!火把你的手燒傷了(懲罰-1).你才明白只有與火保持一定距離,才會產生溫暖,才是個好東西,但如果太過靠近的話,就會燒傷自己。
  • 【原創】強化學習精選資料匯總:從入門到精通,看完這些乾貨就夠啦!
    【導讀】本文為大家整理了公眾號之前發過的一系列強化學習資料和學習手冊,包括:強化學習視頻課程、經典課程PPT和書籍分享、頂級會議論文Slides分享、強化學習資料綜述、強化學習相關代碼復現和調參技巧內容這麼豐富,好資料當然就要分享給大家啦。大家可以轉發起來!一起為強化學習領域添磚加瓦!奔湧吧,各位RLer們!視頻(從入門到放棄
  • 入門 | 從Q學習到DDPG,一文簡述多種強化學習算法
    雖然已經有大量的強化學習算法,但似乎並沒有什麼文章對它們進行全面比較。每次需要決定將哪些算法應用於特定的任務時,都讓我很糾結。本文旨在通過簡要討論強化學習的設置來解決這個問題,並簡要介紹一些眾所周知的算法。1.
  • Python學習,怎麼入門?
    喜歡看新聞的老師同學肯定已經注意到,學習Python現已幾乎上升至國家戰略的層面。Python教學甚至被列入小學、中學和高中教育,幾乎是要「全民學Python」了。在很多網際網路企業招聘中,會Python的,不但搶手,而且都是高薪。 當然,對我們來說,學Python不是為了這些,而是為了切切實實服務科研工作。
  • openAI最新強化學習庫spinningUp實戰(一)
    強化學習在今年成為了AI界的核心。最近也在用強化學習做項目,項目上線了再給大家匯報。
  • AWS Deepracer新手村體驗,強化學習也沒那麼難
    這個過程,大人可能會有所幹預,但完全無法按照自己的主觀意願教孩子什麼,早期掌握的一個個新技能都是他自己學習來的。這與機器學習的強化學習非常類似。強化學習是暴力算法算力的產物,算法的原理非常簡單:隨機設定一個狀態,設定一個動作,再設定一個獎勵機制,無限次循環這個過程,最後會得到一個模型。
  • 監督學習、非監督學習和強化學習
    很多機器學習入門課中,一開始最基礎的概念就是三大類機器學習方式,它們分別是監督學習(Supervised
  • 淺談強化學習 | 朱瑞鶴
    新聞之外,如果你對AlphaGo的實現技術感興趣,相信你也已經聽說過「強化學習」了。AlphaGo是個大工程,除了「強化學習」,還利用了「蒙特卡洛樹搜索」等多種技術,今天我們不去講這些複雜的技術,就單單講下,啥是強化學習?什麼是強化學習?
  • 強化學習——Q Learning 簡介
    繼續接著上一篇,這篇文章介紹強化學習中的一個經典算法——Q Learning.
  • Python入門到機器學習再到深入學習及應用整個學習系統
    CNN I第9周深度學習和強化學習入門·深度學習 CNN II, Deep Learning II·強化學習 1 - 入門介紹:Basic introduction·目標檢測算法與R-CNN, Introduction to the object detection algorithm and R-CNN(
  • 強化學習(一)模型基礎
    ,主要參考的資料是Sutton的強化學習書和UCL強化學習的課程。強化學習在機器學習中的位置強化學習的建模強化學習的簡單實例強化學習在機器學習中的位置強化學習的學習思路和人比較類似,是在實踐中學習,比如學習走路,如果摔倒了,那麼我們大腦後面會給一個負面的獎勵值,說明走的姿勢不好。
  • 深度強化學習在遊戲中的應用
    而如果將優化理論中的信賴域(Trust Region)方法引入到強化學習中,進行一定的改進,就可以得到PPO算法,其學習速度和效果都非常好,已經成為如今最為流行的強化學習算法之一。利用深度強化學習技術,我們為QQ飛車手遊製作了Bot AI,並且已經灰度上線,我們對此進行簡單介紹。如前面所說,為了應用深度強化學習,我們首先要定義好MDP。狀態部分,我們選擇通過遊戲的API來獲取包括當前賽車的速度、角度、到兩側牆壁距離,到障礙物的距離等在內的一系列信息,拼成向量,以此來表徵賽車當前的狀況。
  • 入門 | 通過 Q-learning 深入理解強化學習
    選自Medium作者:Thomas Simonini機器之心編譯參與:Geek AI、劉曉坤本文將帶你學習經典強化學習算法更新後的 Q-table太好了!我們剛剛更新了第一個 Q 值。現在我們要做的就是一次又一次地做這個工作直到學習結束。
  • 強化學習聖經:《強化學習導論》第二版公布!Python 實現代碼也有了!
    今天給大家介紹一本被稱為強化學習的「聖經」,即 RichardS.Sutton 的經典圖書:《強化學習導論》(第二版)。作者 Richard S. Sutton 就職於加拿大 iCORE 大學計算機科學系,是強化學習領域的專家。
  • 最前沿:大規模深度強化學習的發展
    想想OpenAI和微軟打造的世界排名第五的超算最主要就是用在深度強化學習上,所以這個時代沒有大規模的算力基本上不用搞深度強化學習了。為什麼?因為本來深度學習就需要大量的訓練,而深度強化學習僅依靠reward採集樣本進行更新,更是非常的低效(sample inefficient),所以就需要不斷的訓練訓練訓練。。。
  • 【資料總結】| Deep Reinforcement Learning 深度強化學習
    ,強化學習。有監督學習和無監督學習非常好去區分,學習的目標,有無標籤等都是區分標準。如果說監督學習的目標是預測,那麼強化學習就是決策,它通過對周圍的環境不斷的更新狀態,給出獎勵或者懲罰的措施,來不斷調整並給出新的策略。
  • [Episode 0] 強化學習在哪些產業有應用?
    強化學習不僅是商業價值的強大驅動力,還是決策的方法論。這一篇,我們首先了解強化學習(RL)在產業中的應用。RL作為計算神經科學的框架,是關於決策過程的科學。Google在2014年收購的人工智慧團隊DeepMind的總監Koray Kavukcuoglu說,強化學習是通向人工智慧的必經之路。
  • 深度強化學習(一)----深度學習介紹系列
    昨天大致介紹了機器學習與深度學習的基本概念,本系列的目錄,深度學習的優勢等。說到機器學習最酷的分支,非Deep learning和Reinforcement learning莫屬(以下分別簡稱DL和RL)。這兩者不僅在實際應用中表現的很酷,在機器學習理論中也有不俗的表現。深度強化學習是啥呢?簡單點說就是 深度學習 + 強化學習。深度學習和強化學習都不是啥新鮮事了,但是深度強化學習在Google 的DeepMind團隊的運作下,一下子變得非常紅火了。
  • 深度學習第56講:強化學習簡介與Q-Learning實例
    從整個機器學習的任務劃分上來看,機器學習可以分為有監督學習、有監督和半監督學習以及強化學習,而我們之前一直談論的圖像、文本等深度學習的應用都屬於監督學習範疇。自編碼器和生成式對抗網絡可以算在無監督深度學習範疇內。最後就只剩下強化學習了。但是我們這是深度學習的筆記,為什麼要把強化學習單獨拎出來講一下呢?