天天看點

強化學習2-動作價值函數&DQN

回顧動作價值函數

之前的筆記強化學習1-基礎概念(state,action,reward,policy)[1]介紹了強化學習的基礎概念以及動作價值函數,這裡再回顧一下:

  • Discounted return:
  • 政策 的動作價值函數:
  • 最優動作價值函數:

如果我們知道 ,我們就能知道任意時刻 應該執行的操作

但是我們是不知道 的,是以一種解決辦法是使用Deep Q-Netwrok (DQN),即使用一個神經網絡 去近似 ,下面介紹DQN原理。

Deep Q-Netwrok (DQN)

強化學習2-動作價值函數&DQN

DQN

DQN的示意圖如上,state 作為DQN的輸入,其輸出是對每個action的價值預測,比如left, right和up的價值分别預測2000,1000和3000。

強化學習2-動作價值函數&DQN

上圖展示了DQN的執行過程,可以看到每次都是選擇價值最大的動作,之後再下一個狀态繼續預測并執行價值最大的動作。

這個執行邏輯很好了解,但是這與傳統的監督任務不同,我們沒有真實的label,那DQN該如何更新呢?為了解決這個問題,我們需要用到 Temporal Difference (TD)。為友善了解,我們首先看一個例子來幫助了解TD。

Temporal Difference (TD)

強化學習2-動作價值函數&DQN

Temporal Difference

假設我們現在需要從紐約(NYC)開車到亞特蘭大(Atlanta),我們想用DQN來預測這個路程要花的時間。

  • 假設一開始模型預測要花費 分鐘。(這個值很可能隻是模型瞎猜的,後面我們需要更新模型參數來使模型預測更精準)
  • 假設我們真實地從NYC開車到Atlanta後,實測時間是 分鐘。
  • 這個實測時間860分鐘其實就可以當做是真實的label,是以我們可以求出
  • 通過上面的loss我們就可以進一步更新DQN

上面的例子中如果要更新DQN需要我們真實地開車從NYC到Atlanta,但是也許我們并不能真的開車到Atlanta,很可能開到華盛頓的時候就沒法繼續前進了(比如車壞了,路被封了等),那這個時候豈不是就沒法更新DQN了?但是我們要相信,隻要不放棄,方法總比困難多,即使中途停止,我們也可以利用這個資訊來更新DQN。

強化學習2-動作價值函數&DQN

TD learning

如上圖示,假如我們開車到了DC後就沒法繼續前進了,但是NYC到DC之間實際消耗時間我們知道是300分鐘,并且我們繼續利用DQN預測DC到Atlanta的時間是600分鐘。此時可以知道,這個時候預測的NYC到Atlanta的時間變成了300+600=900,這和最開始預測的1000分鐘有了出入。

盡管預測的600也不一定準确,但是300是真實的資料,那300+600我們認為要比最開始預測的1000肯定要準确一些,是以我們可以把300+600看作是真實的label,即TD target:y=300+600=900。

綜上,我們可以通過TD target y和最開始的預測值 計算得到 ,同樣通過梯度下降更新DQN。

類似于TD target,還有一個概念是TD error。什麼意思呢?還是前面的例子,DQN一開始預測NYC到Atlanta的時間是1000分鐘,然後從NYC到了DC又預測 DC到Atlanta的時間是600分鐘,那麼換句話說,他預測NYC到DC的時間是400分鐘,而真實的時間是300分鐘,那麼TD error =400-300=100

強化學習2-動作價值函數&DQN

TD error

将TD learning應用到DQN

強化學習2-動作價值函數&DQN

Apply TD to DQN

在上面的開車時間預測例子中,我們是希望下面等式兩邊能盡可能地接近,方法是通過二者之間組成的loss來更新DQN的權重

那麼對應到深度強化學習,就是如下等式

強化學習2-動作價值函數&DQN

你可能會問為什麼上面式子右邊要乘上一個因子 呢?這裡我們就需要再次回顧一下價值函數 的定義了。

首先我們可以得到下式

強化學習2-動作價值函數&DQN

進而知道

而 ,是以

強化學習2-動作價值函數&DQN
  • 預測的value是:
  • TD target:
  • 那麼loss就是
  • 最後更新梯度

總結

強化學習2-動作價值函數&DQN

Value-based RL

強化學習2-動作價值函數&DQN

TD

強化學習2-動作價值函數&DQN

MARSGGBO♥原創