1. 程式人生 > >強化學習之七:Visualizing an Agent’s Thoughts and Actions

強化學習之七:Visualizing an Agent’s Thoughts and Actions

本文是對Arthur Juliani在Medium平臺釋出的強化學習系列教程的個人中文翻譯,該翻譯是基於個人分享知識的目的進行的,歡迎交流!(This article is my personal translation for the tutorial written and posted by Arthur Juliani on Medium.com. And my work is completely based on aim of sharing knowledges and welcome communicating!)

純屬自願翻譯,只為學習與分享知識。所以如果本系列教程對你有幫助,麻煩不吝在

github的專案上點個star吧!非常感謝!


在本篇部落格裡,我想更深入地探討我們的神經agent在訓練過程中所學到的表徵。當得到一個高分,或者完成一個特定的任務就是我們對於我們的神經agent的要求的時候,同樣我們也應該理解如何,以及更重要的,為什麼agent會以某種方式表現。為了使得學習過程更透明,我建立了一個d3.js驅動的網路介面,它可以在學習過程中展示各種各樣的有關agent的資訊。我稱之為強化學習控制中心。在這篇部落格裡,我會用它來提供一些有關強化學習agent如何以及為什麼等相關的資訊。

控制中心介面(The Control Center Interface)

強化學習控制中心介面

控制中心是為了讓使用者可以實時追蹤agent在學習如果解決一個任務的過程中的效能變化。在介面的左邊,每一輪的長度還有各時間的回報都會被追蹤以及動態更新。右邊展示了一個簡單訓練輪的動畫gif,還有一輪中每一步的優勢以及值函式的計算結果。

這個介面目前只適配我的部落格中所描述的神經網路和任務。它是一個雙子競爭DQN(Double-Dueling-DQN),環境則是一個簡單的網格世界。網格世界的規則如下:agent的目標是儘快地到達綠色方塊,過程中要避免紅色方塊。綠色方塊提供+1的回報,紅色方塊提供-1的回報。每一步都有-0.1的回報。在每一輪開始的時候,三個方格被隨機放到網格上。

>對agent在一個epoch的訓練過程中行動與思想的展示

雙子競爭DQN的agent在它探索網格世界時,會同時接受兩個分離的資訊流:一個優勢流(advantage stream)和一個價值流(value stream)。優勢流代表了網路所認為的,在給定當前它所在的狀態下,採取每個行動分別的有多麼好。價值流則代表了在不考慮可能的行動的情況下,任一給定所在狀態分別有多麼好。有了控制中心,我們可以觀察網路如何逐漸學習正確地預測狀態和行動的價值。隨著訓練過程的進行,它會從乍看起來的隨機值,逐漸演變為能準確地指出哪個行動是最有優勢的。我們可以認為這種視覺化提供了一個我們觀察agent的“思考過程”的入口。它是否知道它正處在一個好的位置?是否知道在它往下走一格是好的選擇?這可以讓我們更深刻地理解為什麼我們的agent可以表現不錯,不管是在什麼情況或環境中對它進行訓練。

進入agent的大腦

我們不只可以用介面來探索agent如何進行訓練,我們也能用它測試和除錯我們已經經過完全訓練的agent。例如,在訓練了我們的agent如何解決上述的3*3的網格世界問題後,我們可以提供它一些特別的測試情景,這些情景是它從來沒在訓練過程中遇見過的,藉此我們可以評估它是否真的具備了我們希望它所具備的經驗。

下面是一個agent如何在修改版(只有綠色方塊)的任務中表現的例項。如你所見,隨著agent逐漸靠近綠色方塊,價值估計值如我們所期望地逐漸上升。它也給出了對於採取行動的優勢的高估計值,這引導著agent不斷靠近綠色目標。

在下一個測試中,我們顛倒了情況,我們會給agent一個只有兩個紅色方塊的世界。它肯定很不喜歡這個世界。如你接下來所見,agent試圖遠離每個紅色額方塊,這導致它長時間內不斷地前進又後退。注意價值估計值如何隨著agent靠近紅色方塊時減少。

最終,我給agent了一個有關存在意義的挑戰。我不在在學習目標上做文章,而是把它們都去掉了。在這種情形下,藍色方塊自身在環境中,沒有其它的目標。沒有一個前行的目標,agent看起來在隨意四處移動,並且價值估計值也似乎無意義。Camus會怎麼說呢?

總的來看,這三個實驗給我們提供了很多證據,這些證據表明我們的agent是如我們所期望地那樣在對環境進行反應。這些檢查步驟在設計任何強化學習agent之前都是必要的。如果我們不仔細關注我們將要內建到agent裡的期望以及環境回報的結構,我們很有可能最終也不能得到一個可以表現良好的agent,或者至少不如我們所預期的那樣進行學習的agent。比如在網格世界中,採取一步行動能導致-0.1的回報。雖然這不是通常的情形。本來是沒有所謂的懲罰(penalty)一說的,並且agent也能在平均50步左右到達綠色方塊。它沒有“理由”去儘快移動到目標位置,所以它也不會這麼做。通過對每一步施加一個小的懲罰,agent有可能很快地學習到徑直向綠色目標移動的直覺。這提示我們我們人類自身的潛意識中的回報結構也很可能是這樣的。儘管我們可能能清楚地認為綠色就是獎勵,紅色就是懲罰,我們潛意識裡會由於想盡快完成任務的慾望而限制自己的行動。當設計強化學習agent時,我們需要確保它們的回報結構和我們的一樣豐富(rich)。

使用控制中心

如果你想試用一下工作版的控制中心,而無需自己訓練你的agent,點選這個連結即可(要求瀏覽器是Google Chrome)。你將看到的是一個已經在網格世界中經過40,000輪預訓練的agent。你可以點選左邊的時間線去檢視任一訓練過程點中的示例輪。更早的輪清楚地展現了agent如何失敗地理解了任務,但訓練到最後agent幾乎總會能直接到達目標。

控制中心是一個我計劃繼續開發的軟體,因為我也將繼續研究各類強化學習演算法。現在它是按照Part 4中所描述的具體的網格世界以及DD-DQN硬編碼而成的,按時如果你想把它適配到自己的專案中,你可以在github上fork它,並按照你自己的需求調整它。希望它能提供更多對於你的學習演算法的瞭解渠道。

如果這篇博文對你有幫助,你可以考慮捐贈以支援未來更多的相關的教程、文章和實現。對任意的幫助與貢獻都表示非常感激!

如果你想跟進我在深度學習、人工智慧、感知科學方面的工作,可以在Medium上follow我 @Arthur Juliani,或者推特@awjliani。

用Tensorflow實現簡單強化學習的系列教程: