當前位置:
首頁 > 新聞 > 「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

新智元推薦

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

Q-Learning回顧

上一章我們講到了可以用時域差分的學習方法,進行Q-Learning來求解最優的策略。

1) 假設我們進行了很多試驗,每次的表達是 (s, a, r, s』, a』, r』, s』』, a』』, r』』, s』』』…)

2) 利用每一次transition的結果 (s, a, r, s』) 進行 Q 值更新,

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

存儲 Q(s,a) 值的表雖然是隨機初始化的,但是通過 agent 與 environment 的交互,反覆迭代,最後會收斂,從而得到最優策略。

Exploration vs. Exploitation

這是強化學習中非常重要的一個概念。強化學習希望能根據試驗數據學習得到一個最優的策略 ,但是實際上在模型收斂之前我們並不知道什麼策略才是最優的 。因此 ,我們需要在 exploration 和 exploitation 之間做一個權衡:一定情況下我們按照目前已知的 「最好」 的策略來執行action(exploitation),但是另外一些情況下,我們需要嘗試新的選擇,沒準我們可以得到更好的結果(exploration)。最簡單的控制 exploration 的方法,就是設置一個隨機概率,比如按 小概率隨機選擇 action,

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

大概率情況下按照目前的policy 來執行 action 。
這種簡單粗暴的方式的問題是,當模型都快收斂了,他仍然是在每個狀態按概率隨機選擇action,所以一個改進的辦法是隨著迭代次數的增加,也慢慢變小。但是有一個更好的解決方案,就是把 exploration 合并在求解策略的過程中一起來表達。

1) 定義一個函數「微信AI」深度強化學習系列四:狀態空間的泛化和DQNu是一個值(比如Q值或者狀態值),n是到達該狀態的次數,k是一個獎勵係數。

2) 把Q-Learning裡面的Q值更新步驟更新為:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

由於Q值的計算是需要考慮後續若干 time step 的影響的,在n很小的時候,Q 值由於計算的不夠科學,那麼依靠k/n,仍然有一定概率會選擇執行某個 action 進行嘗試;當路徑嘗試的比較充分後,k/n會非常的小,前面的Q 值佔主要的影響成分。

狀態空間的泛化

最基本的Q-Learning我們可以看到,需要保存一個(s,a)大小的 Q 值表格,用於記錄所有的 Q 值。

但是現實生活中,狀態可能是極其海量甚至是無限的,我們不可能把他們全部遍歷,也沒有那麼大的空間把這麼大的Q值表裝內存裡面。所以我們需要像機器學習模型開發特徵一樣,對狀態進行一些泛化,比如:用一些特徵來描述當前狀態,這樣類似狀態都是可描述的;同時,對於 Q-Learning 所需要的數據量也會大大減少。

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

上圖這個例子足以說明問題:他們是三種不同的狀態,尤其是第三個圖和第一個圖,右上角少了一個白點。如果按照嚴格定義,他們必須是三種不同的state,然後結果是我們會先崩潰。所以必須用一些特徵來描述他們,使得類似狀態具有泛化能力。

狀態的特徵表達及模型訓練

如果我們有機器學習的相關基礎,這裡就很好說了。簡單幾句話就是做一些手繪特徵來描述當前的狀態,比如上面的圖:離你最近的豆子的距離,離你最近的 ghost 的距離,當前全局有多少 ghost 等等。

在特徵表達的基礎上,假設狀態的值和狀態的描述是緊密相關的(確實也是這樣的),那麼我們可以把狀態的特徵和狀態值建立一組映射,簡單一點,採用線性關係:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

把它和Q-Learning結合在一起,通過Q-Learning迭代過程中產生的誤差就可以對feature的權重進行梯度更新了。

過程如下:

1) 實驗得到 transition(s, a, r, s』)

2) 定義 「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

3) 對Q(s,a)和w進行更新:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

上述過程可以用類似線性回歸的方式來輔助理解,但是並不能完全等同。

對於線性回歸「微信AI」深度強化學習系列四:狀態空間的泛化和DQN,使用最小二乘計算誤差可以得到誤差為:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

對w求偏導有:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

SGD進行更新:「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

事實上,擴號中間的誤差「微信AI」深度強化學習系列四:狀態空間的泛化和DQN,近似的可以解釋為上面Q值迭代的 difference 。

既然說到了如何手繪特徵,那麼肯定也會有特徵過擬合的問題,這裡就不細講了,了解機器學習的人都有基礎。

Deep Q Network

上述描述state的方法顯然是與應用場景捆綁的非常死的,因為feature是手工定製的,那麼對於一類問題就無法用一種模型來解決。比如玩Atari視頻小遊戲,每種遊戲的 state 如何描述都需要手工定製特徵。所以就有了deeplearning和 Q-learning 結合的思路,用 deeplearning 來擬合 Q(s,a) values,用 Q-learning的方法來計算target並得到需要回傳的誤差,從而訓練深度神經網路,得到更好的 Q(s,a) 模型。鑒於融入了網路參數,現在對Q的表示,寫為「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

如果用深度神經網路來擬合Q值函數,有如下兩種做法:a)把action的值作為網路的輸入,與 state 一起直接建模;b)使用同樣的輸入和參數,在輸出層把各個 action 分開,分別計算他們的 Q Value。

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

上面寫的那個線性擬合的 Q 值函數表達,「微信AI」深度強化學習系列四:狀態空間的泛化和DQN可以看做是第一種形式。現在推薦採用第二種方式,因為學習的時候,只需要一次前向計算,就可以得到所有action枚舉值對應的 Q Value,也能一次性得到最大的那個,正是我們進行強化學習想要的。

按照 DeepMind 的論文描述的方案,他們玩 Atari 視頻小遊戲的強化學習模型是這樣的:輸入層使用最近的4幀畫面,分別轉換成84*84的灰度圖,把他們作為含4個 channel 的圖像輸入 CNN,經過三個卷積層和兩個全連接層(具體參數見論文)後,對於最後一層的每個神經元使用線性激活函數進行輸出。由於 Atari 遊戲一共是18個可選的 action,因此整個網路最後一層的輸出節點數是18,每個節點的輸出值,都認為是在當前 state選擇對應 action 時候的 Q Value。

現在問題回到了對Q Value的線性回歸擬合問題,可以直接使用最小二乘的方法來進行最優化求解:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

具體步驟如下:

1. 給定輸入後進行一次前向計算,得到所有可用action的QValues輸出;

2. 選定一個action a執行後,這個時候會來到新的state s』,並且得到一個reward r。重複步驟 1,對s』計算一次Q Values,並選擇輸出最大的那個「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

3. 根據步驟 2 的結果計算 action a應該擬合的目標是「微信AI」深度強化學習系列四:狀態空間的泛化和DQN,對於 a 以外的那些輸出節點,把他們應該擬合的 target 設置成步驟 1 裡面的輸出值,這樣他們得到的誤差是0;

4. 通過 BP 演算法對整個 CNN 網路進行更新。

Experience Replay

雖然現在可以通過深度神經網路來擬合 Q 值函數了,但是人們發現這種非線性的擬合并不是特別穩定。事實上早先提出可以進行特徵泛化的時候肯定也有人試過神經網路,但是 DeepMind 為啥就能做出效果呢?

他們用了一個很重要的技巧叫做 experience replay。具體做法是把大量嘗試路勁上的都用一個容器存起來,叫做 replay memory。在訓練整個 Q 值網路的時候,我們主要是要訓練 的表達,而不限於是在哪個time step,所以乾脆每個 mini-batch 直接從 replaymemory裡面隨機採樣一批的樣例出來進行訓練。之所以這樣做,而不是攢一系列鄰近 time step 的樣例來進行BP,是因為這種隨機採樣的沒有依賴關係的樣例可以消除樣例之間的相似性,避免訓練過程落入局部最優。而且這種訓練方法,也和現實世界更加接近,試想旁觀別人玩遊戲,我們也都是在記各種場景的處理策略,而非記憶一段連續的遊戲樣本。

引入 experience replay後,還考慮 exploration-exploitation,最後的訓練過程如下:

1. 根據初始化的網路,結合state s,以 的概率隨機選擇一個 action,否則選擇 Q 值最大的那個 action 輸出;

2. 選定一個 action a 執行後,這個時候會來到新的 state s』,並且得到一個 reward r。把存入 replay memory D;

3. 從D中隨機採樣出一批樣例送入 DQN,每個樣例計算兩個 Q 值:

「微信AI」深度強化學習系列四:狀態空間的泛化和DQN和每個樣例輸出最大的那個「微信AI」深度強化學習系列四:狀態空間的泛化和DQN

4. 使用「微信AI」深度強化學習系列四:狀態空間的泛化和DQN作為誤差訓練整個 DQN 模型。

延伸內容

目前我們討論了離散狀態的 MDP ,也講到了非離散狀態的狀態描述,但是 action 空間仍然是離散的。如何描述連續的 action 空間,比如對話模型中機器人根據上下文描述的對話狀態,選擇如何回答(執行哪個操作)的策略描述,不是那麼容易用離散空間來描述的。相關內容還需要進一步補充。

新智元招聘

職位:客戶經理

職位年薪:12 - 25萬(工資+獎金)

工作地點:北京-海淀區

所屬部門:客戶部

彙報對象:客戶總監

工作年限:3 年

語 言:英語 + 普通話

學歷要求:全日制統招本科

職位描述:

  1. 精準把握客戶需求和公司品牌定位,策劃撰寫合作方案;

  2. 思維活躍、富有創意,文字駕馭能力強,熟練使用PPT,具有良好的視覺欣賞及表現能力,PS 能力優秀者最佳;

  3. 熱情開朗,擅長人際交往,良好的溝通和協作能力,具有團隊精神;

  4. 優秀的活動籌備與執行能力,較強的抗壓能力和應變能力,適應高強度工作;

  5. 有4A、公關公司工作經歷優先

  6. 對高科技尤其是人工智慧領域有強烈興趣者加分。

崗位職責:

參與、管理、跟進上級指派的項目進展,確保計劃落實。制定、參與或協助上層執行相關的政策和制度。定期向公司提供準確的市場資訊及所屬客戶信息,分析客戶需求,維護與指定公司關鍵顧客的關係,積極尋求機會發展新的業務。建立並管理客戶資料庫,跟蹤分析相關信息。

應聘郵箱:jobs@aiera.com.cn

HR微信:13552313024

新智元歡迎有志之士前來面試,更多招聘崗位請點擊【新智元招聘】查看。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

TAG:新智元 |

您可能感興趣

Dior、范思哲、CHANEL世界著名服裝設計師背後的工作狀態
LIRA-PRIM試驗設計和基線數據:利拉魯肽在初級衛生保健狀態下血糖控制的有效性
DSM採訪VG:調整狀態為主TI爭取拿到十六強
DHC橄欖卸妝油 向梅雨季肌膚的黏膩狀態SAY BYE
HTTP協議的狀態
Pawn狀態正佳,RANK大殺四方。Deft也要加油,莫辜負元碩火熱狀態
NodeQuery實時監控伺服器和網站穩定性及在線狀態信息工具
在Oracle中,如何定時清理INACTIVE狀態的會話?
RNG孫大勇談亞運會失利:兮夜好勝心太強,MLXG和Uzi狀態需要調整
NBA推薦:雷霆VS快船 雷霆三巨狀態穩定
LOL:亘古化石傳奇Clearlove,養豬場再次開業,EDG狀態回升
工具化、自學習:ABC3.0促進AI進入「自生長」狀態
iOS12捷徑:一鍵快速關閉WiFi、藍牙狀態
智能合約先驅Nick Szabo:傳統機構的區塊鏈項目總處於中心化狀態
Servlet HTTP 狀態碼
健身愛好者——ANNALEAMARIA的照片,最佳的健康狀態淋漓盡致!
新研究調查健康肝及肝硬化患者麻醉深度監測中Masimo SedLine(R)患者狀態指數的功用
老狀態發威助FPX翻盤OMG,EDG強勢終結RW連勝
無狀態上線!LPL戰隊FPX引入COOL補強陣容
ESL漢堡A組:VG狀態神勇輕鬆碾壓Mineski