Python强化学习实战之“强化学习的应用”
強化學習導論
閱讀過我以前的著作—— Introduction to Deep Learning Using R(Apress,2018)和Applied Natural Learning Using Python (Apress,2017)的讀者,很榮幸你們能夠再次成為我的讀者。新讀者,歡迎你們!在過去的幾年里,深度學習軟件包和相關技術持續不斷地涌現和發展,推動了許多行業發生革命性的變化。毫無疑問,強化學習(Reinforcement Learning,RL)是該領域最引人注目的篇章之一。本質上,強化學習是眾多AI技術的應用,例如能夠學習如何玩電子游戲或下棋的軟件。強化學習的優點在于,假設問題可以建模為包含動作、環境、agent的框架,則agent可以自行通曉各種任務。問題可以覆蓋從破解簡單的游戲到更復雜的3D游戲,再到教授無人駕駛汽車如何在不同的地點接送乘客,以及教授機械臂如何抓取物品并將它們放在廚房柜臺之上。
訓練良好并部署的強化學習算法意義顯著,因為它們追求將人工智能技術應用到更廣闊的領域,而不只是我之前著作中提到的一些狹義的AI應用場景。算法不再只是簡單地預測一個目標或標記,而是操縱環境中的agent,這些agent具有一組動作集,可選擇其中
的動作以實現目標/獎勵。一些公司和機構投入大量的時間研究強化學習技術,如Deep Mind和OpenAI,它們在該領域取得了一些領先的解決方案突破。首先,讓我們簡要概述該領域的發展史。
1強化學習的發展史
在某種意義上講,強化學習是最優控制(optimal control)的重塑,而最優控制是從控制理論擴展而來的概念。最優控制起源于20世紀50—60年代,當時它被用來描述一類問題,即人們試圖達到某種“最佳”標準以及達到這一標準需要的“控制”法則。通常,將最優控制定義為一組微分方程。這些方程定義了一條使得誤差函數最小化的路徑。最優控制的核心理論由理查德·貝爾曼(Richard Bellman)所做的工作推向頂峰,尤其是他提出的動態規劃(dynamic programming)方法。動態規劃是20世紀50年代提出的一種優化方法,強調通過將大問題分解為更小且更易于解決的小問題來求解。動態規劃被認為是解決隨機最優控制問題的唯一可行方法,更一般意義上,最優控制方法通常都屬于強化學習范疇。
貝爾曼對最優控制的最著名貢獻是哈密爾頓-雅可比-貝爾曼方程(Hamilton-Jacobi-Bellman equation,HJB方程)。HJB方程如下:
其中(,)Vxt是V關于時間變量t的偏導數。“·”表示點乘,(,)Vxt為貝爾曼價值函數(未知標量),代表系統從時間t處的狀態x開始,按照最優方式控制,直到時間T時的成本,C為標量成本速率函數,D為最終效用狀態函數,x(t)為系統狀態向量,x(0)假設已知,其中0≤t≤T。
該方程得出的解是價值函數或者是給定動態系統的最小成本。
HJB方程是解決最優控制問題的經典方法。此外,動態規劃通常是解決隨機最優控制問題的唯一可行方式或方法。馬爾可夫決策過程(Markov Decision Process,MDP)是此類問題之一,研究動態規劃方法正是為了幫助求解它們。
?MDP及其與強化學習的關系
我們將MDP描述為離散時間隨機控制過程。具體來說,將離散時間隨機過程定義為下標變量是一組離散或特殊的值(相對于連續值來說)的隨機過程。MDP特別適用于結果受過程中參與者影響且過程也表現出一定程度隨機性的應用環境。MDP和動態規劃因此成為強化學習理論的基礎。
簡而言之,基于馬爾可夫特性,我們假設未來只與現在有關,而與過去無關。此外,如果一個狀態對未來的描述與我們具有的所有歷史信息相同時,則認為該狀態是充分的。從本質上講,這意味著當前狀態是唯一與之相關的信息,不再需要所有歷史信息。從數學上講,一個狀態具有馬爾可夫特性,當且僅當
馬爾可夫過程本身被認為是無記憶的,因為它們是狀態間的隨機轉移。進一步,我們認為它們是狀態空間S上的元組(S, P),其中狀態通過轉移函數P進行變更,轉移函數定義如下。
其中s表示馬爾可夫狀態,St表示下一狀態。
該轉移函數描述了一種概率分布,其中分布是agent可轉移到的所有可能狀態。最后,從一種狀態轉移為另一種狀態時會獲得獎勵,在數學上將其定義如下。
其中γ表示折扣因子,γ∈[0, 1],Gt表示總折扣獎勵,R表示獎勵函數。
因此,馬爾可夫獎勵過程(MRP)元組定義為(S, P, R, γ)。
基于上述描述的公式,圖1-1所示的示例可視化展示了馬爾可夫決策過程。
圖1-1顯示了agent如何以不同的概率從一種狀態轉移到另一種狀態從而獲得獎勵。最佳情況是,在給定環境參數下,我們如何在給定周期內成功學習累積了最高獎勵的過程。從本質上講,這是強化學習非常樸素的解釋。
試錯學習(trial and error learning)是推動強化學習發展的另一類重要技術,它是研究動物行為的一種方法。具體來說,已證明它對于理解基本獎勵和“增強”不同行為的獎懲機制很有意義。但是,“強化學習”一詞直到20世紀60年代才出現。在此期間,特別是馬文·閔斯基(Marvin Minsky)引入了“信用分配問題”(Credit-Assignment Problem,CAP)的思想。明斯基是一位認知科學家,他一生的大部分時間致力于人工智能研究,如他的著作Perceptrons (1969年)和描述信用分配問題的論文“Steps Toward Artificial Intelligence”(1961年)。針對為獲得成功做出的所有決策,CAP求解對應的信用分配方式。具體而言,許多強化學習算法直接致力于求解該問題。雖然如此,試錯學習并不是很流行,因為神經網絡方法(以及一般的監督學習)吸引了AI領域的大部分研究興趣,例如Bernard Widrow和Ted Hoff提出的創新性研究。然而,在20世紀80年代,隨著時序差分(Temporal Difference,TD)學習的興起以及Q學習的發展,人們對該領域的研究興趣再次興起。
具有諷刺意味的是,明斯基著重指出,TD學習受到動物心理學另一個方面思想的影響。它源自兩類刺激,即一種主要增強物與一種次要增強物(譯者注:任何能夠加強行為發生的刺激都可被稱為增強物),它們成對出現,從而影響行為。但是,TD學習本身主要由Richard S. Sutton提出。因為他的博士論文介紹了時間信用分配思想,他被認為是強化學習領域最具影響力的人物之一。該思想指出獎勵可被延遲,特別是在細粒度的“狀態-動作”空間中。例如,贏得一盤國際象棋需要采取很多步動作,才能獲得贏棋“獎勵”。這樣,獎勵信號對時間上離得較遠的狀態沒有顯著影響。因此,時間信用分配解決了對這些細粒度動作的獎勵方式,其對時間上遙遠的狀態具有較有意義的影響。Q學習以產生獎勵的“Q”函數命名,它有一些創新,并聚焦于有限馬爾可夫決策過程。
Q學習的興起,開拓了強化學習的新局面,使其得到持續改進,并代表了AI的前沿技術。完成本概述之后,接下來更具體地討論讀者將學習的內容。
?強化學習算法和強化學習框架
強化學習與傳統機器學習中的監督學習領域相似度很大,盡管存在一些關鍵差異。在監督學習中,存在一個客觀目標,即我們訓練模型的目的是基于給定觀察值的輸入特征進行正確的預測,而預測結果可以是類標簽或特定的值。特征類似于環境中給定狀態的向量,我們通常將其作為一系列的狀態合集輸入給強化學習算法,或一個狀態接著一個狀態地分別輸入。但是,它們的主要區別在于,對于特定問題,強化學習沒有必要總是只給出一個“答案”,因為強化學習算法可以通過多種方式成功求解一個問題。因此,我們顯然希望所選擇的答案能夠盡快且盡可能有效地求解問題。這正是我們選擇模型的關鍵所在。
在前面概述強化學習歷史的過程中,介紹了一些定理,在后幾章中將詳細介紹這些定理。但是,由于本書是“實戰”型書籍,因此在介紹理論時還必須同時提供一些示例。在本書中將占用大量篇幅討論強化學習框架OpenAI Gym,及其如何與其他深度學習框架進行交互。OpenAI Gym是一種便于部署、比較和測試強化學習算法的框架。而且它具有很大程度的靈活性,使得用戶可以在OpenAI Gym中應用一些深度學習方法,本書后續在證明各種概念的過程中將會利用該功能。下面給出了一些簡單的示例代碼,這些代碼利用了gym軟件包和繪圖功能,其中繪圖功能用于顯示訓練過程中產生的圖像(見圖1-2)。
查看該代碼,注意到在使用gym時,必須初始化算法所處的環境。盡管通常使用該軟件包提供的環境,但也可以為定制任務(例如gym中未提供的電子游戲)創建自己的環境。接著,讓我們繼續討論代碼中定義的其他變量,這些變量的終端輸出如下所示。
這些變量的含義如下。
? action——環境中agent所采取的動作,隨后將產生一個獎勵。
? reward——賦予agent的獎勵,暗示了對應于完成某目標的動作質量。
? observation——由動作產生,指執行某個動作后的環境狀態。
? done——布爾類型,指示是否需要重置環境。
? info——字典類型,存儲各類調試信息。
這些動作的處理流程如圖1-3所示。
為了提供關于車桿(Cart Pole)游戲的更多信息,圖1-2顯示了關于小車和桿子的電子游戲,其目的是成功平衡小車和桿子,使桿子永不倒下。因此,相應的目標是訓練某種深度學習或機器學習算法,以完成該任務。我們將在后續章節中解決這個特定問題。本節的目的只是簡要介紹OpenAI Gym。
?Q學習
在前述內容中簡要討論了Q學習。但是,有必要強調一下,本節是本章的重要部分,本節將討論Q學習內容。Q學習的特征在于存在一些“警察”,“警察”會通知agent在不同情況下應采取的動作。雖然它不需要模型,但我們可以使用一個模型,模型通常采用有限馬爾可夫決策過程。具體來說,本書將介紹Q學習的各類變體,包括Q學習、深度Q學習(DQL)和雙Q學習(見圖1-4)。
本書將在專門介紹這些技術的章節中對它們進行更深入的討論。但是,鑒于問題的復雜性,Q學習和深度Q學習各有其優點,雖然兩者通常都存在類似的不足之處。
Actor-Critic模型
本書介紹的最高級模型是Actor-Critic模型,它由A2C和A3C兩類模型組成。二者分別表示Advantage Actor-Critic模型(優勢Actor-Critic模型)和Asynchronous Advantage Actor-Critic模型(異步優勢Actor-Critic模型)。雖然兩者實際上是類似的,但不同之處在于后者具有多個相互配合工作的子模型,并且這些子模型獨立更新參數,而前者同時更新所有子模型的參數。這些子模型更新參數的粒度更細(動作到動作粒度),而不是像許多其他強化學習算法那樣以回合為粒度進行更新。圖1-5為Actor-Critic模型的可視化示例。
強化學習的應用
在向讀者全面介紹強化學習概念之后,我們將開始處理多個問題,重點是向讀者展示如何在云環境中部署解決方案,我們將在云環境中進行強化學習算法訓練和應用。
經典控制問題
由于最優控制領域已經擁有大約60年的歷史,因此存在大量經典問題,我們將優先處理這些問題,讀者在其他強化學習文獻中也會經常看到它們。其中之一是車桿問題,如圖1-2所示,該游戲要求用戶使用最佳選項集來嘗試平衡車桿。圖1-6中顯示了另一個問題,稱為《冰湖》游戲。在該游戲中,agent學習如何穿越凍結的湖面而不踩在會導致其落水的冰上。
《超級馬里奧兄弟》游戲
迄今為止,《超級馬里奧兄弟》是最令人喜愛的電子游戲之一,它被證明是展示將人工智能中的強化學習技術應用于虛擬世界的最佳方式。借助py_nes庫,可以模擬《超級馬里奧兄弟》游戲(見圖1-7),然后利用游戲中的數據來訓練模型自行通關。我們將只專注于一個級別的關卡,并在這個應用中使用AWS(亞馬遜云服務)資源,使讀者有機會獲得該任務中的經驗。
《毀滅戰士》游戲
此處介紹的經典強化學習應用示例是如何學習玩簡單級別的《毀滅戰士》(Doom)游戲(如圖1-8所示)。這款游戲最初發布于20世紀90年代,運行于PC上,游戲的規則是在通過整個關卡的過程中成功殺死玩家面對的所有怪物或敵人。在給定動作范圍、可用的軟件包,及其他有幫助的屬性后,可以完美應用深度Q學習算法。
基于強化學習的做市策略
不同的自有資金交易公司的共同策略是通過向參與者提供流動性(目的是以任何給定的價格買賣資產)來賺錢。盡管該策略已具有成熟技術,但由于目標相對簡單且該領域數據豐富,因此這是應用強化學習的絕佳領域。我們將使用Lobster的限價訂單簿(limit order book)數據,該網站包含大量用于此類實驗的完美訂單數據。在圖1-9中,可以看到一個訂單簿的示例。
《刺猬索尼克》游戲
另一款適合應用不同模型的經典游戲是《刺猬索尼克》,如圖1-10所示。除本章之外,我們將引導讀者從零開始逐步創建自己的環境,使讀者能夠封裝一個應用OpenAI Gym和自定義軟件的環境,然后訓練自己的強化學習算法以解決關卡問題。這里將再次利用AWS資源進行訓練,并借用其他電子游戲示例(尤其是《超級馬里奧兄弟》游戲)中使用的相同過程。
總結
以上是生活随笔為你收集整理的Python强化学习实战之“强化学习的应用”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最优控制问题求解综述
- 下一篇: 收藏we-hjb的BLOG