內容簡介
本書是對強化學習算法的綜合性講解書籍,內容包括主要的強化學習算法的實現思路講解,以及主要的優化方法的原理講解。本書介紹的每個算法都分為原理講解和代碼實現兩部分,代碼實現是為了通過實驗驗證原理部分的可行性。通過本書的學習,讀者可以快速地瞭解強化學習算法的設計原理,掌握強化學習算法的實現過程,並能研發屬_xFFFF_自己的強化學習算法,瞭解各個算法的優缺點,以及各個算法適用的場景。
本書共18章,分為強化學習基礎篇(第1章 和第2章 )介紹了強化學習中的基本概念。強化學習基礎算法篇(第3~6章 )介紹了QLearning算法、SARSA算法、DQN算法、Reniforce算法。強化學習高級算法篇(第7~12章 )介紹了AC演員評委算法、A2C優勢演員評委算法、PPO近端策略優化算法、DDPG深度確定性策略梯度算法、TD3雙延遲深度確定性策略梯度算法、SAC柔性演員評委算法、模仿學習算法。多智能體篇(第13章 和第14章 ),介紹了在一個系統中存在多智能體時,各個智能體之間的合作、對抗等關係,以及各個智能體之間的通信策略。擴展算法篇(第15~17章 )介紹了CQL離線學習算法、MPC環境學習算法、HER目標導向算法。SB3強化學習框架篇(第18章 ),介紹了強化學習框架SB3的使用方法。
本書將使用最簡單淺顯的語言,帶領讀者快速地瞭解各個主要的強化學習算法的設計思路,以及實現過程。通過本書各個章 節 的學習,讀者可以掌握主流的強化學習算法的原理和實現方法,能夠讓讀者知其然也知其所以然,做到融會貫通。
作者簡介
李福林,一個在IT領域摸爬滾打十多年的老程序員、培訓師,精通多種IT技術。分享了多部AI技術教程,受到了讀者的廣泛讚譽。現任職于陽獅集團,擔任算法工程師。教學風格追求化繁為簡,務實而不空談,課程設計思路清晰,課程演繹說理透徹,對AI領域技術有自己獨到的見解。
前言/序言
筆者自從學習人工智能相關的技術以來,一直覺得強化學習相關的資料相對偏少,無論是實體的書籍,還是網絡上的各種文章,普遍存在重複量大,解釋咬文嚼字,充斥著抽象的數學公式,很多時候對於一個算法的設計思路只是簡單地列出幾條公式就算強行解釋過了,雖然在理解了這些算法之後,也能理解作者為什麼會做出這樣的解釋,因為確實有些算法的設計思路是很抽象的。還有的算法純粹是從數學層面推導出來的,單純看最後的實現過程是完全沒有任何道理的,只有理解了它背後的數學推導過程,才能理解為什麼它是那樣的一個實現過程,所以在某種程度上也能理解作者為什麼要那樣古板地解釋算法的設計思路。
不過筆者還是希望盡自己所能,從更加感性、更加形象化的角度去解釋各個強化學習算法的設計思路。筆者一直認為,萬事開頭難,學習數據庫最困難的部分,可能就是成功地安裝一個數據庫。如果初期能順利地入門,後期再去慢慢摸索算法中的各個細節,則可能會更容易一些。
出於以上原因,筆者想要盡自己所能,以自己對強化學習各個算法的理解,儘量簡單明瞭地向讀者介紹各個算法的設計思路,以幫助讀者能夠進入強化學習這座大廈的大門,未來讀者可以自己在這座大廈裡開啟自己的冒險,乃至為這座大廈添磚加瓦。
前面談到強化學習方面的理論往往解釋得很生硬,其實相比原理解釋上的問題,還有代碼實現的質量也比較差,也許人工智能領域的工程師更偏向數學理論,在代碼實現上普遍質量不高。代碼裡經常可以見到無意義的函數封裝、冗餘的代碼塊、無意義的判斷、永遠只循環一次的循環體等問題,讓原本就複雜的程序更加難以讀懂。
本書配套的代碼都是筆者親手編寫的,全套代碼的風格都是統一的,只要看懂了第1套代碼,其他的代碼就可以做到一通百通。筆者儘量以簡潔的形式去書寫代碼,讓每行代碼都有意義,避免無意義的冗餘,並且所有的代碼都是測試通過的,能複現本書中所介紹的效果。
筆者自從2021年以來,逐漸把自己所學習的計算機技術整理成視頻和代碼資料,在分享知識的過程中,強化學習是很受讀者歡迎的部分,同時也有很多讀者給筆者反饋,強化學習部分的知識理解起來不太容易,這和筆者製作的視頻的質量有很大關係,現在回頭看,當初因為青澀,製作的視頻資料十分粗糙,因而筆者有了重新製作這部分視頻資料的想法,同時也給了筆者動力,想把強化學習部分的知識整理成文本資料出版,以更多的渠道和媒介向讀者傳達自己的聲音。
如果本書的內容能對你有一點幫助,筆者的工作就沒有白費,最後,感謝讀者購買這本書,希望本書的內容能讓讀者有所收穫。
本書主要內容
第1章 : 強化學習概述,概述了強化學習的基本概念及一般的優化過程。
第2章 : Q函數和時序差分,介紹了Q函數,以及使用時序差分方法優化Q函數。
第3章 : 基於表格的強化學習方法,介紹了基於表格實現的QLearning算法和SARSA算法。
第4章 : DQN算法,介紹了DQN算法,以及在DQN算法中使用雙模型、加權數據池、Double DQN、Dueling DQN、Noise DQN等改良方法。
第5章 : 策略梯度,介紹了基於策略的思想,以及使用策略迭代方法優化策略的過程。
第6章 : Reinforce算法,介紹了Reinforce算法,以及在Reinforce算法中應用去基線、熵正則等優化方法。
第7章 : AC和A2C算法,介紹了AC算法和A2C算法,引出了”演員評委”模型。
第8章 和第9章 : 近端策略優化算法和實現,介紹了在強化學習中的難點: 近端策略優化算法,即PPO算法,介紹了在PPO算法中重要的重要性採樣、優勢函數、廣義優勢估計等概念。
第10章 : DDPG和TD3算法,介紹了深度確定性策略梯度算法,即DDPG算法,以及DDPG算法的改進算法——TD3算法。
第11章 : SAC算法,介紹了SAC算法的實現,提出了優化過程中要考慮動作的熵的概念。
第12章 : 模仿學習,介紹了模仿學習方法,提出了可以使用傳統監督學習的方法來模擬強化學習方法。
第13章 : 合作關係多智能體,介紹了在一個系統中多個智能體之間合作方法,介紹了多個智能體之間的有通信和訓練時有通信的兩種通信策略。
第14章 : 對抗關係多智能體,介紹了在一個系統中多個智能體之間的對抗方法,介紹了多個智能體之間的無通信和訓練時有通信的兩種通信策略。
第15章 : CQL算法,介紹了離線學習算法——CQL算法,提出了在離線學習中抑制Q函數的過高估計的方法。
第16章 : MPC算法,介紹了直接學習環境的MPC算法,提出了從模擬環境中搜索得到最優動作的方法。
第17章 : HER目標導向的強化學習,介紹了在反饋極端稀疏的環境中,通過放置偽目標點來提高優化效率的HER算法。
第18章 : SB3強化學習框架,介紹了強化學習框架SB3的使用方法。
閱讀建議
本書是一本對強化學習算法的綜合性講解書籍,既有設計原理,也有代碼實現。
本書儘量以簡潔的語言書寫,每個章 節 之間的內容儘量獨立,使讀者可以跳躍閱讀而沒有障礙。
作為一本實戰書籍,讀者要掌握本書的知識,務必結合代碼調試,本書的代碼也儘量以簡潔的形式書寫,使讀者閱讀不感吃力。本書代碼使用Jupyter Notebook書寫,每個代碼塊即是一個單元測試,讀者可以用每個程序的每個代碼塊按從上到下的順序進行測試,從一個個小知識點聚沙成塔,融會貫通。
掃描
目錄上方的二維碼,可獲取本書源碼。
致謝
感謝筆者的好友K,在筆者寫作過程中始終鼓勵筆者,使筆者有動力完成本書的寫作。
在本書的撰寫過程中,筆者雖已竭盡所能為讀者呈現最好的內容,但書中難免存在疏漏,敬請讀者批評指正。
李福林
2024年12月
詳細資料或其他書籍請至台灣高等教育出版社查詢,查後請於客服中心或Line或本社留言板留言,我們即儘速上架。