人工智慧中的強化學習
編輯推薦: |
本文來自於csdn,本文中通過探討狀態空間的利用和探索,來進行人工智慧中的強化學習。 |
在有監督學習(supervised learning)中,訓練資料中包含了資料樣本的目標。 不過現實中可沒有上帝一樣的監督者給出這些目標或答案!
強化學習(reinforcement learning)是人工智慧(AI)的一個重要分支,它也是DeepMind的阿爾法狗(AplhaGo)得以實現的一塊基石。
在強化學習中 ,雖然沒有現成的答案,但是代理(agent)仍然必須決定如何行動(action)來完成它自己的任務。 在沒有訓練資料的情況下,代理從經驗中學習。 它通過反覆的試錯來收集訓練樣本(“這個動作很好,那個動作很糟糕”),學習的目標就是使其長期獎勵(reward)最大化 。
在本文中,我們將探討:
1.狀態空間的利用和探索
2.馬爾可夫決策過程
3.Q學習、策略學習和深度強化學習
4.價值學習
最後,我們整理了一些優質資源可供你深入探索強化學習。
迷宮老鼠
具有明確的目標和分值系統的遊戲,是最容易理解強化學習的應用場景。
假設我們正在玩一款遊戲,老鼠如果找到乳酪,就能得到+1000分獎勵,如果找到沿途的水源,也能得到+10分獎勵。 但是,如果老鼠誤入電箱(觸電),就會得到負的獎勵-100分。
經過一番探索(exploration),老鼠可能會發現聚集在入口附近的三個水源,從此它可能就會花費所有的時間來利用(exploit)這一發現,不斷收穫這些水源的微小回報(reward),而不再有更高的追求。
因此,正如你所看到的那樣,老鼠會在迷宮裡錯過更好的獎勵,例如吃到乳酪!
這帶來了探索(exploration)和利用(exploit)之間的權衡問題。 一個簡單的探索策略(exploration strategy)是在大多數時間(比如說80%)採取已知的具有最好回報的動作,但偶爾也會探索一個隨機選擇的動作,儘管它可能導致偏離已知的獎勵。
這個策略被稱為epsilon-greedy策略,其中epsilon是智慧代理(老鼠)採取隨機行動的時間百分比(在上例中,即20 %)。 通常我們可以在開始時更多地進行探索(即epsilon取值大一些)。 隨著時間的推移,隨著老鼠對迷宮越來越瞭解,並且對哪些行動能夠產生長期的高回報的瞭解也越來越多,將epsilon穩定地降低到10%甚至更低就是合理的選擇了。
記住這一點很重要:獎勵不是實時的 —— 在迷宮老鼠的例子中,在最終找到乳酪之前,可能需要經過一段漫長的探索,並且做出多次選擇。
總結一下:在強化學習中,智慧代理(agent)觀察環境(environment),採取行動(action)與環境互動,並獲得積極或消極的回報(reward):
馬爾可夫決策過程
老鼠在迷宮中的行為,可以使用馬爾科夫決策過程(Markov Decision Process)來描述 ,馬爾可夫決策過程是具有特定的狀態轉移概率的過程。 我們將通過迷宮老鼠這個例子來進一步解釋它。
馬爾可夫決策過程包括:
1.一個有限的狀態集。 例如,老鼠在迷宮中的每一個可能的位置,都是一個狀態。
2.每個狀態下可供選擇的動作集。 例如,老鼠在走廊裡可以{前進,後退}、在十字路口可以{前進,後退,左,右}。
3.狀態之間的遷移。 例如,如果老鼠在一個十字路口左轉,就會處於一個新的位置。 這可以是遷移到多個可能狀態的概率。例如,當你在Pokeman遊戲中進行一次攻擊時,可能會攻擊失敗(狀態1),也可能對敵人構成一些傷害(狀態2),或者擊倒對手(狀態3)。
4.每次狀態轉移對應的回報。 在迷宮老鼠的例子中,大部分時候老鼠得到的獎勵都是0,但是如果老鼠真的找到一個有水或乳酪的地方,就可以得到正的獎勵,如果找到不該去的地方,得到的獎勵就是負的。
5.折扣係數γ量化了即時獎勵和未來獎勵之間重要性的差異,它的取值範圍是0~1。 例如,如果γ是0.9,並且在3步之後可以得到5分的獎勵,那麼獎勵的折現值是就是.9 3 * 5。
6.無記憶性。 由於當前的馬爾可夫狀態中已經包含了歷史中全部有用的資訊,所以在獲得當前狀態後,就可以清除歷史資訊。 換句話說, “未來狀態只和現在有關,和過去沒有關係”。
現在我們理解了馬爾可夫過程,可以給出老鼠的目標函數了。 我們要做的就是儘量最大化其長期回報的總和:
讓我們逐項學習這個回報公式。 首先,我們累加所有時間步t上的回報。 現在先把γ設定為1,暫時忽略它。 r(x,a)是一個獎勵函式。 對於狀態x和行動a (例如,在十字路口左轉),它給出了在x狀態下采取行動a的獎勵。 從直覺上講,這個公式所表達的,就是應當在每個狀態都採取最優動作來最大化未來獎勵的總和。
我們已經定義了強化學習的問題,並且確定了學習目標,現在讓我們來探討一些可能的解決方案。
Q-learning:學習動作-價值函式
Q-learning是一種利用動作-價值(action-value)函式來進行動作選擇的技術(Q指quality,即動作的質量 —— 譯者注) ,該動作-價值函式根據所處的狀態,來決定在該狀態下應該採取哪種行動。
函式Q的輸入是一個狀態-動作對,返回值是該狀態下執行該動作(以及所有後續動作)的預期回報 。 在我們開始探索環境之前,Q給出相同的(任意)固定值。 但是,隨著我們更多地探索環境,Q可以越來越準確地估計出在狀態s下執行動作a的價值。 在智慧代理探索環境的過程中,函式Q同步得到更新。
維基百科上Q-learning的這個方程式解釋得非常好。 它展示了我們如何利用從環境中獲得的回報來更新Q值:
讓我們再次將γ設定為1來暫時忽略折扣因子。 首先請記住,Q表示的是選擇某個動作(以及之後的所有動作)所獲得全部獎勵的總和。
現在讓我們從左到右檢視上述方程式。 在st狀態下采取行動時,我們在公式中新增一項來更新Q(st,at)的值。 這一項的內容包含:
1.學習速率(alpha)體現了我們更新Q值的激程序度。 當alpha接近於0時,我們並不是非常積極地更新。 當alpha接近1時,完全用更新後的值來替換舊值。
2.獎勵(reward)指的是我們在狀態st採取某個動作所獲得的回報 。 所以我們把這個獎勵加在之前的估計上。
3.然後加上對未來獎勵的估計,這是在xt + 1時刻所有可選動作中可實現的最大回報Q
4.最後減去Q的舊值,以確保我們只是通過估計值的誤差來進行增減(當然,還需要乘以alpha)。
現在我們對每個狀態 - 動作對都有了一個價值估計,就可以根據動作選擇策略來決定應該採取哪一個動作(不一定只是選擇可以導致最大獎勵的動作,例如,在一個epsilon-greedy探索策略中,我們會根據時間百分比採取隨機行動)。
在迷宮老鼠的例子中,我們可以使用Q-learning來計算迷宮中每個位置的動作{向前,向後,向左,向右}的價值。 然後就可以根據動作選擇策略來決定老鼠在每個時間步需要執行的動作。
策略學習:從狀態到行動的對映
在Q-learning中,我們可以學習出一個價值函式,利用它可以估計每個狀態-動作對的價值。
策略學習(Policy Learning)是一個更直接的選擇,我們學習策略函式π , 它可以從每個狀態直接對映到該狀態下的最優動作。可以把它看作是一種行為策略:“當我觀察狀態s時,最好的辦法就是執行動作a”。 例如,一輛自動駕駛汽車的策略可能會包括:“如果我看到一個黃燈,並且距離十字路口超過100英尺,就應該剎車。 否則,繼續前進。“
Line"/>
因此我們學習的這個函式,其目標是最大化預期的獎勵。 什麼模型最擅長學習複雜的函式? 深層神經網路!
Andrej Karpathy的文章Pong from Pixels中介紹了一個很好的實戰案例,他使用深度強化學習來學習經典的Atari遊戲Pong的操作策略,以遊戲畫面中的原始畫素作為輸入(狀態),輸出應當向上或向下移動(動作)的概率 :
如果你想用親手嘗試深度強化學習,請仔細閱讀Andrej的帖子。 你將學習如何使用130行程式碼來實現一個兩層的策略網路,還將學習如何將其嵌入OpenAI的Gym 環境,使用Gym可以快速啟動並執行你的第一個強化學習演算法,然後在各種遊戲上進行測試,看看它的表現與其他人提交的實現相比效能如何。
DQN,A3C和深RL的進步
在2015年,DeepMind使用了一種稱為深度Q網路(DQN)的方法,使用深度神經網路來擬合Q函式,並利用這一模型在許多Atari遊戲中超越了人類的基準表現:
我們發現基於深度Q網路的智慧代理,只需要使用畫面畫素和遊戲得分作為輸入,就能夠超越所有以前的演算法,在49個遊戲中達到了與專業遊戲玩家相當的水平,而且所有這些任務中的模型使用相同的演算法、網路體系結構和超引數。 這個研究在高維感官輸入和行動之間架起了橋樑,從而造就了第一個能夠學會應對多種挑戰性任務的人工代理。 ( Silver等人,2015 )
下圖是基於DQN的智慧代理在多個領域中的表現,與線性學習器和人類的比較:
為了幫助對強化學習領域研究中的最新進展有一些直觀感受,下面提供了一些非線性Q函式擬合器的改進例項:
1.體驗重放 ,通過對包含歷史觀察和相應獎勵的較長序列進行隨機學習來避免過度擬合最近的體驗。 這個思路受到了生物學大腦的啟發 :例如,老鼠在遊歷迷宮後,會在睡眠期間“重放”其經歷過的神經活動模式,以遍優化其未來在迷宮中的行為。
2.為遞迴神經網路( RNN )增加DQN。 當智慧代理只能看到周圍的環境時(例如老鼠只能看到迷宮的某個部分,而不能看到整個迷宮的鳥瞰圖),代理需要記憶更大的場景,以便記住某些物體的位置。 這類似於人類的嬰兒對物體的永續性感知能力的開發過程 ,即使物體離開嬰兒的視野,人類嬰兒也知道這些物體是存在的。 RNN是“遞迴的”,即它們允許資訊持久的存在 。 這是一個使用DQRN網路玩Doom遊戲的視訊,令人印象相當深刻。
2016年,在DQN論文僅一年之後,DeepMind釋出了另一種演算法,稱為Asynchronous Advantage Actor-Critic,即A3C ,只需要一半的時間進行訓練,其在Atari遊戲上的表現已經超越了所有尖端的演算法( Mnih等,2016 )。A3C是一種演員-評論員(Actor-Critic)演算法,它融合了我們之前探討的兩種方法中的精華:包括一個Actor (策略網路:決定如何動作)和一個Critic (Q網路:決定動作價值)。 Arthur Juliani對A3C的具體工作做了很好的闡述。 A3C現在是OpenAI的通用啟動代理 。
從那時起,就有了無數的驚人的突破 - 從發明自己語言到教自己適應各種地形 。 我們這個系列的文章只是簡單介紹了強化學習的一些前沿進展,但我希望它能成為你進一步探索的起點!
進入下一段之前,我們想分享一下DeepMind所開發的智慧代理學習走路的視訊,實在令人難以置信…
關於練習資料和進一步的閱讀
程式碼
Andrej Karpathy的 Pong from Pixels 能夠讓你迅速執行起來第一個強化學習代理。 正如文章所描述的那樣,“我們將從零開始,只使用原始畫素,使用深度神經網路來玩Pong遊戲,而這一切只需要130行Python程式碼,只依賴numpy庫。
接下來,我們強烈推薦Arthur Juliani 的 基於Tensorflow的強化學習簡明教程。教程介紹了DQN、策略學習、actor-critic方法以及探索策略,並使用TensorFlow進行程式碼實現。 你可以先理解這些核心的概念和實現程式碼,然後通過重新實現來真正的掌握它。