Q-Learning簡介:
在Q-learning中,我們維護一張Q值表,表的維數為:狀態數S * 動作數A,表中每個數代表在當前狀態S下可以採用動作A可以獲得的未來收益的折現和。我們不斷的迭代我們的Q值表使其最終收斂,然後根據Q值表我們就可以在每個狀態下選取一個最優策略。

圖1 Q-Learning更新公式
Q值一開始的值可能是錯的,但經過一次又一次的疊代,Q值會不斷的接近Q-target值,如果夠長的時間,value-function就可以優化為最優的價值函數。
因為Q-learning如果是用在狀態比較多的情況,會導致Q-learning無法把所有的狀態的Q值都計算出來,要計算出來記憶體也可能會爆炸,所以就想出DQN,RL+DL的學習方法,設計出一個神經網路,只需要將狀態輸入,輸出的是每個動作的Q值,這樣就可以解決記憶體爆炸的情況,這個就是Value function approximation。

圖2 DQN Neural Network
神經網路的訓練就是要找一個最好的參數來優化loss function,然後要訓練就必須要有training data,input X跟label Y,我們現在將State當作input了,那我們要那裡找label呢?

圖3 Loss Function
看看圖1的更新公式,中間那個就是所謂的Target Q,把它當作Label,不就代表,我們的Q function就會越來越接近Target Q function了嗎?所以我們就可以定義出Loss function(圖3),Label也定義出來了,那這樣就可以做Neural network的訓練了。
DQN 兩大利器:

圖4 DQN 2015演算法
Experience Replay:
深度學習的訓練資料最好為獨立同分布的資料,然而我們知道,RL的資料是時序性的,也就是代表資料前後是有關聯的,這樣可能會造成模型無法正常訓練,所以建立了一個空間來儲存資料,並且利用Random 採樣的方式來進行training,這樣就不會有關聯性的問題了,其實簡單一點想,這個就是”回憶學習”的概念。

圖5 Double DQN 學習架構
Update Target Q network:
原本2013的DQN是只有一個network,然後同時計算Target Q跟預測的Q,如果是這種情況的話,同一個network都在更新,Target Q同樣在更新,那這樣是不是會有一種自己在跟自己的Target Q去做比較的呢?所以就出現了2015的DQN,很直觀的,2015DQN就是把計算Target Q的神經網路跟訓練用的神經網路分開,那要怎麼分開呢,從上面的演算法看來,就是經過一些時間後,把訓練用的參數給復製到計算Target Q的網路,這樣就會分開了。
評論