# 分散式DQN ## 7.1 期望值Q-learning的不足 - 如果只考慮期望值,可預期,該動作大部分情況會是最佳選擇,但對個別動作來說不確定。 - 傳統 Q-learning 演算法傳回的值是狀態-動作對的**期望值**,當狀態動作對的回饋值分布為多峰分布就會遇到此困境。 - 讓模型學習「完整的狀態-動作價值分布」比只學習「期望值」有用,得以檢驗該分布中是否有多個種樹,並知道變異數大小為何。 - 引入 risk-sensitive策略,此策略考慮如何最大化期望值,還能控制過程中所產生的風險。 - Note: 在論文(Rainbow : Combining Inprovements in Deep Reinforcement Learning)中,檢驗了多種傳統DQN演算法的改進版本,並分別評估哪些版本比較好,其中分散式 Q-learning 效果最出眾,Hessel等人將所有演算法組合形成「複合式」DQN(也稱Rainbow DQN),其中**分散式Q-learning**、**multi-step Q-learning**及**優先經驗回放**是讓複合式演算法表現提升的主要原因。 ## 7.2 機率與統計學 - 頻率學派 : 投擲硬幣無限多次後正面出現次數在種投擲次數中所佔的比率,此看法侷限性在於無法回答「議員選上機率」之類的問題(不可能舉辦無限多次選舉) - 貝氏理論 : 機率代表對某結果出現的信心程度 | 頻率學派 | 貝氏學派 | |:----------------------:| :--------: | | 機率代表某結果出現機率 | 機率代表對某結果出現的信心程度 | | 給定模型,計算資料的機率 | 給定資料,計算模型的機率 | | 透過檢驗假設來實現| 透過參數估計或模型比較來實現 | | 計算上較簡單 | 計算上通常較困難 | - 支撐集(support) : 由機率不為 0 的結果構成的子集,由於通常不去理會樣本空間中機率為 0 的結果,所以常將「支撐集」跟「樣本空間」當成同意詞 ### 7.2.1 先驗與後驗 - 若問四個候選人勝選機率分別為多少,由於資訊不足只能先假設每位勝選機率皆為1/4,此處就為各候選人設了一個均勻的**先驗機率分布**(prior probability distribution) - 先驗機率分布就是在得到新資訊之前所假設的分布,後續再依照得到的新資訊來修改機率分布,修改過後的分布及**後驗機率分布** - 貝氏推論 : 後驗分布會在收到一條新資訊後,變為下一輪的先驗分布,不斷地修改過程中,信心程度也在不斷改變,這過程稱為貝氏推論。 ### 7.2.2 期望值和變異數 [code 練習](https://colab.research.google.com/drive/1Hd5MqFtWmbrk1-8wc5uWZbBG1Vrom_UJ?usp=sharing) - 期望值 : 若每種結果的信心程度不同,會賦予每種結果一個權重(權重總和為1),加權平均值稱為期望值 - 變異數 : 各結果的分散程度 , $Var(X) = \sigma ^2=E[(X-\mu)^2]$ - 隨機變數 : 機率分布可以產生特定的隨機變數 - 常見的分布有: - 常態分怖: 除寬度會隨著變異數變化外,外型不會受其他參數影響。 - beta 分布 - gamma 分布 ![image](https://hackmd.io/_uploads/ByMbasLCT.png) - 一般而言,會先有一個變異數高的先驗分布,隨著資訊量增加,分布的變異數會逐漸下降,但得到一項出乎意料的資訊,會降低當前分布的信心,造成變異數上升 ## 7.3 Bellman 方程式 - Bellman 方程式: $Q^\pi(s_t,a_t) \gets r_t +\gamma V^\pi(s_{t+1})$ ,其中 $V^\pi(s_{t+1})=max[Q^\pi(s_{t+1},A)]$ - 若將神經網路當成Q函數,則目的就透過更新網路參數,最小化 Bellman 方程式中的 $Q^\pi(s_t,a_t)$與$r_t +\gamma V^\pi(s_{t+1})$之間的誤差 ### 7.3.1 分散式 bellman 方程式 - Bellman 方程式使用前提: 環境和回饋值是確定的(同一狀態下,執行相同動作所產生的回饋值每次都一樣),這使得在某些情況中不適用,如 :將畫面進行downsampling(將影像大小乘上一個小於 1 的 scale ratio來節省記憶體空間)時,兩個原本相異狀態可能在downsampling後產生相同的狀態資訊,讓回饋值 $r_t$ 難以預測 - 此狀況可遵循某種機率分布「隨機變數 $R(s_t,a)$」取代 $r_t$ - 修改後的 Bellman 方程式 : $Q(s_t,a_t) \gets E[R(s_t,a_t)] +\gamma E[Q(s_{t+1},A)]$ - 這裡的 Q 函數是隨機變數,也就是說同一動作不一定產生相同的新狀態,所以會得到一個動作與新狀態之間的機率分布,其中新狀態動作隊的期望Q值,有可能為機率最高的狀態-動作所產生的Q值。 - 將E去掉 便是分散式Bellman方程式:$Z(s_t,a_t) \gets R(s_t,a_t) +\gamma Z(s_{t+1},A)$,其中 Z 表示分散式 Q 函數(也稱 value distribution) ## 7.4 分散式 Q-learning - 使用 Gym 中 Atari 遊戲- Freeway 的 RAM 版本 ![image](https://hackmd.io/_uploads/B14U-fdCa.png) ### 7.4.1 表示機率分布 - Q 函數不會只傳回 Q 值,而是產生 Z(s,a) 的價值分布 - 此處的機率形式包含確定性演算法,而確定的結果可用**退化機率分布**(除了其中一個結果之外,其餘所有結果的機率皆為0)表示