1. 程式人生 > >強化學習(Reinforcement Learning)背景介紹

強化學習(Reinforcement Learning)背景介紹

強化學習前世今生

如今機器學習發展的如此迅猛,各類演算法層出不群,特別是深度神經網路的發展,為非常經典的強化學習帶來了新的思路,雖然強化學習一直在發展中,但在2013年這個關鍵點,DeepMind大神David Sliver使用了神經網路逼近函式值後,開始了新的方向,又一發不可收拾的證明了確定性策略等,縱觀近四年的ICML,NPIS等會議論文,都有涉獵。因此本文在參考已有論文,部落格、專欄、書籍、視訊的基礎上開始系列部落格學習記錄,如有寫的錯誤地方,還望大家批評指教。

開始正文,說起強化學習,估計每本涉及到強化學習的書,視訊等都會提一個名詞 " AlphaGoZero "
本文不大肆吹起概念,具體自己 閱讀其相關資料,:
Content:  https://deepmind.com/blog/alphago-zero-learning-scratch/                  https://xijunlee.github.io/2017/11/03/Zero/ Paper:      https://deepmind.com/documents/119/agz_unformatted_nature.pdf
Code:       https://github.com/search?l=Python&q=alphaGo+zero&type=Repositories&utf8=%E2%9C%93

強化學習機器學習中的一個領域,強調如何基於環境而行動,以取得最大化的預期利益。其靈感來源於心理學中的行為主義理論,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。這個方法具有普適性,因此在其他許多領域都有研究,例如博弈論控制論運籌學資訊理論、模擬優化、

多主體系統學習群體智慧統計學以及遺傳演算法。在運籌學和控制理論研究的語境下,強化學習被稱作“近似動態規劃”(approximate dynamic programming,ADP)。在最優控制理論中也有研究這個問題,雖然大部分的研究是關於最優解的存在和特性,並非是學習或者近似方面。在經濟學博弈論中,強化學習被用來解釋在有限理性的條件下如何出現平衡。Wiki地址


1.1強化學習與監督學習,非監督學習之間的關係

強化學習是機器學習的一種方法,同樣類似於深度學習,他們之間的關係可以用一幅圖簡單明瞭的描述:

RL與有監督學習、無監督學習的比較: 
  (1)有監督的學習是從一個已經標記的訓練集中進行學習,訓練集中每一個樣本的特徵可以視為是對該situation的描述,而其label可以視為是應該執行的正確的action,但是有監督的學習不能學習互動的情景,因為在互動的問題中獲得期望行為的樣例是非常不實際的,agent只能從自己的經歷(experience)中進行學習,而experience中採取的行為並一定是最優的。這時利用RL就非常合適,因為RL不是利用正確的行為來指導,而是利用已有的訓練資訊來對行為進行評價。 
  (2)因為RL利用的並不是採取正確行動的experience,從這一點來看和無監督的學習確實有點像,但是還是不一樣的,無監督的學習的目的可以說是從一堆未標記樣本中發現隱藏的結構,而RL的目的是最大化reward signal。 
  (3)總的來說,RL與其他機器學習演算法不同的地方在於:其中沒有監督者,只有一個reward訊號;反饋是延遲的,不是立即生成的;時間在RL中具有重要的意義;agent的行為會影響之後一系列的data。

1.2 強化學習的學習過程

強化學習它有自己的一套學習方法,下圖是強化學習的示意圖:

從圖上我們可以看到強化學習它由兩部分組成:智慧體和環境。我們可以這樣理解:

俗話解釋一下:比如,我們從沙發旁走到門口,當我們起身之後,首先大腦獲取路的位置資訊,然後我們確定從當前位置向前走一步,不幸運的是我們撞牆了,這明顯是個負反饋,因此環境會給我們一個負獎勵,告訴我們這是一個比較差的走路方式,因此我們嘗試換個方向走(走哪個方向比較好呢,後文會會講到隨機策略、確定性策略等策略決策《強化學習系列(3):強化學習策略講解》),就這樣不斷的和環境互動嘗試,最終找到一套策略,確保我們能夠從沙發旁邊走到門口。在這個過程中會得到一個最大的累計期望獎勵。(求累計,期望,獎勵的原因見後文)

基於以上過程,非常值得一提的是獎勵函式的設定,因為這個強化學習過程中對智慧體動作好壞的評價,我會在後文:《強化學習系列(4):強化學習中獎勵函式的設定和使用方法 》陸續講解

1.3   強化學習的應用方向

   說了這麼多,為什麼要學習這門技術呢,無非有兩種原因,1、找到新方向,繼續學術研究;2、將該技術能夠實際的用到工業界中,產生效益。還是不談人生談技術,  那麼強化學習目前有哪些應用呢?目前調查了有以下:

   1、控制類:機械臂控制、視訊遊戲(CNN獲取影象資訊,提取特徵資訊等處理),無人駕駛等

       https://www.youtube.com/watch?v=W_gxLKSsSIE&list=PL5nBAYUyJTrM48dViibyi68urttMlUv7e

       https://www.youtube.com/watch?v=CIF2SBVY-J0

       https://www.youtube.com/watch?v=5WXVJ1A0k6Q

       https://www.youtube.com/watch?v=-YMfJLFynmA

   2、文字序列預測,機器翻譯等 https://zhuanlan.zhihu.com/p/22385421, https://zhuanlan.zhihu.com/p/29168803

   3、推薦系統:(https://m.aliyun.com/yunqi/articles/66158,http://geek.csdn.net/news/detail/112318)

還有很多的應用場景,陸續補充,但用一句話總結:只要涉及到智慧決策問題,在符合強化學習的學習規則的情況下的都可以使用。

2、強化學習的environment和學習資料網址的一下簡單彙總。


環境: OpenAI (gym):官網(http://gym.openai.com/envs/),這上面有很多的控制遊戲(過山車,二級立杆,Atari遊戲等),並提供了非常好的介面可以學習,非常推薦: 具體的使用方法見github(https://github.com/openai/gym)


當然,也可以自己動手寫環境。接下來說相關學習資料,目前本文總結了有以下資料,
學習資料:

書籍:

1、Sutton的書《Reinforcement learning: an introduction》,網上電子版(這點國外的非常良心,都是把手稿版放出來)

2、郭憲博士2017年寫的深入淺出強化學習:原理入門》,這是一本入門級別的書,語言通俗易懂

3、《Algorithm for reinforcement learning》,Morgan&Claypool的書推薦大家看

4、《Reinforcement learning and dynamic programming using function approximators》

視訊:

David Sliver在UCL的視訊,youtube有對應資源(B站上有中文字幕,英語一般的夥伴有福氣了)

總之,只要你想學習,總會找到很多資源的,同時搞科研和技術,建議學會科學上網,畢竟度娘有時候還是不給力,尤其搜尋英文名稱的時候就.......結合使用,還是相當給力!


寫的若有錯誤之處,歡迎大家批評指正!


參考文獻:

1、《深入淺出強化學習:原理入門》,2017,郭憲

2、《Reinforcement learning: an introduction》2017,second edition,Richard Sutton

3、http://blog.csdn.net/coffee_cream/article/details/57085729