轉自https://zhuanlan.zhihu.com/p/25239682
過去的一段時間在深度強化學習領域投入了不少精力,工作中也在應用DRL解決業務問題。子曰:溫故而知新,在進一步深入研究和應用DRL前,階段性的整理下相關知識點。本文集中在DRL的model-free方法的Value-based和Policy-base方法,詳細介紹下RL的基本概念和Value-based DQN,Policy-based DDPG兩個主要算法,對目前state-of-art的算法(A3C)詳細介紹,其他前沿算法的詳細理解留待后續展開。
一、RL:a simple introduction
強化學習是機器學習的一個分支,相較於機器學習經典的有監督學習、無監督學習問題,強化學習最大的特點是在交互中學習(Learning from Interaction)。Agent在與環境的交互中根據獲得的獎勵或懲罰不斷的學習知識,更加適應環境。RL學習的范式非常類似於我們人類學習知識的過程,也正因此,RL被視為實現通用AI重要途徑。
1.1 強化學習問題的基本設定:
<A, S, R, P>
Action space : A
State space : S
Reward: R : S × A × S → R
Transition : P :S × A → S
<A, S, R, P>就是RL中經典的四元組了。A代表的是Agent的所有動作;State是Agent所能感知的世界的狀態;Reward是一個實數值,代表獎勵或懲罰;P則是Agent所交互世界,也被稱為model。基於此以下給出強化學習系統的幾個重要概念:
- Policy: Policy是指Agent則是在狀態s時,所要做出action的選擇,定義為
,是RL中最核心的問題了。policy可以視為在Agent感知到環境后s后到動作a的一個mapping。如果策略是隨機的,policy是根據每個動作概率
選擇動作;如果策略是確定性的,policy則是直接根據狀態s選擇出動作
。
- Reward Signal:reward signal定義了Agent學習的目標。Agent每一次和環境交互,環境返回reward,告訴Agent剛剛的action是好的,還是不好的,可以理解為對agent的獎勵和懲罰,agent與環境交互的序列流見下圖。需要注意的是,Reward
Goal!即agent的目標並非當前reward最大,而是平均累計回報最大。
- Value function:Reward Signal定義的是評判一次交互中的立即的(immediate sense)回報好壞。而Value function則定義的是從長期看action平均回報的好壞。比如象棋中,吃掉對方一個“車”的即時收益很大,但如果因為吃“車”,老“將”被對方吃掉,顯然長期看吃“車”這個action是不好的。即一個狀態s的value是其長期期望Reward的高低。定義
是策略
狀態s長期期望收益,
是策略
在狀態s下,采取動作a的長期期望收益。
- 定義
為長期回報期望(Return):
- 定義
-
-
狀態s的value為:
-
- 狀態s下采取動作a的Q值為:
- 狀態s下采取動作a的Q值為:
-
- 其中
是長期收益的折扣因子,類似於金融中的折現率
- 其中
- Model of the environment:model是對真實世界(environment)的模擬,model建模的是agent采樣action后環境的反應。RL中,使用model和planning的方法被稱為model-based,反之不使用model而是通過try-and-error學習policy的方法被稱為model-free。本文范疇即是model-free。
1.2 強化學習:一個MDP(Markov Decision Process)過程:
RL的重要基礎是MDP了,其中Markov體現在:
即在狀態時,采取動作
后的狀態
和收益
只與當前狀態和動作有關,與歷史狀態無關。(如果與“歷史狀態”相關,那么把這個狀態封裝到
即可了)。而Decision則體現在在每一個狀態s處,都是要進行決策采取什么行動,即policy了。
1.3 Bellman等式
Bellman等式是RL最核心的公式了,雖然重要,但推導起來其實非常簡單好理解,推導過程就省略了。
Bellman equation
Bellman optimality equation
1.4 MC、TD
有關RL的基礎,再簡單介紹下 MC、TD方法,其他內容篇幅原因不再展開了。
Monte-Carlo method適用於“情節式任務”(情節任務序列有終點,與“情節式任務”相對應的是“連續型任務”)。Q(s,a)就是整個序列的期望回報。MC增量更新中的Monte-Carlo error:
TD(Time Difference) method,是Monte-Carlo和Dynamic Programming 方法的一個結合。相比MC方法,TD除了能夠適用於連續任務外,和MC的差異從下圖可以清楚看到。MC需要回退整個序列更新Q值,而TD只需要回退1步或n步更新Q值。因為MC需要等待序列結束才能訓練,而TD沒有這個限制,因此TD收斂速度明顯比MC快,目前的主要算法都是基於TD。下圖是TD和MC的回退圖,很顯然MC回退的更深。
直觀理解MC error和TD error的差異,假設RL的任務要預估的是上班的"到公司時長",狀態是目前的位置,比如“剛出門”“到地鐵了”“到國貿站了”...。MC方法需要等到真正開到公司才能校驗“剛出門”狀態時預估的正確性,得到MC error;而TD則可以利用“剛出門”和“到地鐵了”兩個狀態預測的差異的1-step TD error來迭代。
1-step TD error:
n-steps TD error:
error:
事實上,MC error可以視為一個情節任務的max-step TD error。另外,一般來說,在TD error中,n越大,用到的真實回報信息更多,收斂也會越快。
二、DRL:from Q-learning to DQN
Q-learning一種TD方法,也是一種Value-based的方法。所謂Value-based方法,就是先評估每個action的Q值(Value),再根據Q值求最優策略的方法。強化學習的最終目標是求解policy,因此Value-based的方法是一種“曲線救國”。Q-learning算法的核心就是我們1.3中介紹的Bellman optimality equation,即:
Q-learning是RL的很經典的算法,但有個很大的問題在於它是一種表格方法,也就是說它非常的直來之前,就是根據過去出現過的狀態,統計和迭代Q值。一方面Q-learning適用的狀態和動作空間非常小;另一方面但如果一個狀態從未出現過,Q-learning是無法處理的。也就是說Q-learning壓根沒有預測能力,也就是沒有泛化能力。
為了能使得Q的學習能夠帶有預測能力,熟悉機器學習的同學很容易想到這就是一個回歸問題啊!用函數擬合Q:
代表的是模型參數,
模型有很多種選擇,線性的或非線性的。傳統的非深度學習的函數擬合更多是人工特征+線性模型擬合。這幾年伴隨着深度學習最近幾年在監督學習領域的巨大成功,用深度神經網絡端到端的擬合Q值,也就是DQN,似乎是個必然了。
deepmind 在2013年的 Playing Atari with Deep Reinforcement Learning 提出的DQN算是DRL的一個重要起點了,也是理解DRL不可錯過的經典模型了。網絡結構設計方面,DQN之前有些網絡是左圖的方式,輸入為S,A,輸出Q值;DQN采用的右圖的結構,即輸入S,輸出是離線的各個動作上的Q值。之所以這樣,左圖方案相對右圖最大的缺點是對於每個state,需要計算次前向計算,而右圖則只需要一次前向計算即可,因此左圖的前向計算成本與action的數量成正比。
論文中,解決的問題是Atari游戲問題,輸入數據(狀態S)就是游戲原始畫面的像素點,動作空間是搖桿方向等。這也是DNN帶來的最大好處,有過特征工程經驗的同學自然理解,不做特征工程想想都覺得輕松,更不要提效果還能提升了
DQN具體的網絡結構見下:實際輸入是游戲的連續4幀畫面,不只使用1幀畫面為了感知環境的動態性,接兩層CNN,兩層FNN,輸出各個動作的Q值。
因為DQN本身是個回歸問題,模型的優化目標是最小化1-step TD error的平方loss,梯度的計算也很直接了,見下圖。
DQN最終能夠取得成功的一方面是采用了DNN網絡進行Q值的函數擬合,end-to-end的模型訓練。更重要的是引入了以下兩個點:
- Experience Replay:DeepLearning取得重大進展的監督學習中,樣本間都是獨立同分布的。而RL中的樣本是有關聯的,非靜態的(highly correlated and non-stationary),訓練的結果很容易難以收斂。Experience Replay機制解決這個問題思路其實很簡單,構建一個存儲把樣本都存儲下來,通過隨機采樣去除相關性。(當然沒有天下免費的午餐,這種方法也有弊端,比如off-policy受到了限制,也不是真正的online-learning,具體在A3C部分會展開分析)
- separate Target Network:原始的Q-learning中,在1-step TD return,樣本標簽y使用的是和訓練的Q-network相同的網絡。這樣通常情況下,能夠使得Q大的樣本,y也會大,這樣模型震盪和發散可能性變大。而構建一個獨立的慢於當前Q-Network的target Q-Network來計算y,使得訓練震盪發散可能性降低,更加穩定。
- 另外,TD-error也被clip到[-1,1]區間,增加模型的穩定性。部分思路和我們后續分享的的TRPO算法的置信區間相關。
詳細的DQN算法:
附DQN15年發表在nature的文章 Human-level control through deep reinforcement learning
后續關於DQN有三個主要改進點:
- Double Q-Network:思路並不新鮮,仿照Double Q-learning,一個Q網絡用於選擇動作,另一個Q網絡用於評估動作,交替工作,解決upward-bias問題,效果不錯。三個臭皮匠頂個諸葛亮么,就像工作中如果有double-check,犯錯的概率就能平方級別下降。Silver15年論文Deep Reinforcement Learning with Double Q-learning
- Prioritized replay:基於優先級的replay機制,replay加速訓練過程,變相增加樣本,並且能獨立於當前訓練過程中狀態的影響。這個replay權重還是和DQN error(下圖)有關,Silver16年論文PRIORITIZED EXPERIENCE REPLAY。
- Dueling network:在網絡內部把Q(s,a) 分解成 V(s) + A(s, a),V(s)與動作無關,A(s, a)與動作相關,是a相對s平均回報的相對好壞,是優勢,解決reward-bias問題。RL中真正關心的還是策略的好壞,更關系的是優勢,另外在某些情況下,任何策略都不影響回報,顯然需要剔除。ICML 2016 Best Paper:DUELING NETWORK ARCHITECTURES FOR DEEP REINFORCEMENT LEARNING 。Dueling Network網絡架構如下,Dueling Network把網絡分成一個輸出標量V(s)另一個輸出動作上Advantage值兩部分,最后合成Q值。非常巧妙的設計,當然還是end-to-end的,效果也是state-of-art。Advantage是一個比較有意思的問題,A3C中有一個A就是Advantage,計划后面把Advantage單獨拉出來研究下單獨分享。
三、Policy-Based method:概率輸出&連續動作空間
DQN雖然在Atari游戲問題中取得了巨大的成功,但適用范圍還是在低維、離散動作空間。DQN是求每個action的,在連續空間就不適用了,原因如下:
- 如果采用把連續動作空間離散化,動作空間則會過大,極難收斂。比如連續動作空間=10,每個動作划分成3個離散動作,動作空間將擴大到
。而且每個動作空間划分成3個離散動作無法做到fine-tuning,划分本身也帶來了信息損失。
- 即便是有些DQN的變種如VAE能夠給出連續動作的方案,DQN的第二個問題是只能給出一個確定性的action,無法給出概率值。而有些場景,比如圍棋的開局,只有一種走法顯然太死板了,更多例子不再介紹了。
從另外一個角度看,DQN是Value-based方法,上一節講到了Value-based的方法還是在間接求策略。一個自然的邏輯是為什么我們不直接求解Policy?這就是Policy Gradient方法了。
3.1 策略梯度
策略梯度方法中,參數化策略為
,然后計算得到動作上策略梯度,沿着梯度方法,一點點的調整動作,逐漸得到最優策略。
定義為整體的performance metrics。下圖截取的PPT頁很好的表達了PG的原理。
3.2 隨機和確定性策略梯度
Sutton早在1999年就發表論文Policy Gradient Methods for Reinforcement Learning with Function Approximation證明了隨機策略梯度的計算公式:
證明過程就不貼了,有興趣讀一下能加深下理解。也可以讀讀 REINFORCE算法(with or without Baseline)Simple statistical gradient-following algorithms for connectionist reinforcement learning,92年的文章了,略微老了些。
David Silver在14年的論文Deterministic Policy Gradient Algorithms(DPG)證明了DPG的策略梯度公式,結論同樣非常簡潔:
太理論性的東西不多貼了,有兩個點值得注意:
- DPG和隨機策略梯度SPG差異在於隨機策略梯度中有一個log項,本質上源於隨機策略需要重新加一層策略u的期望,導致策略網絡u的梯度相對DPG需要除以策略u,數學轉化成log(u)的倒數了。這個形式和交叉熵很接近,其實完全可以從概率角度去理解,有物理意義。
- DPG中本質上式在max(Q),和DQN最終竟還是殊途同歸,直觀的去理解的話,Policy是按照Q值最大的方向調整policy的參數。
3.3 深度確定性策略梯度
google的這篇DDPG論文CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING結合了上文中DQN和DPG,把DRL推向了連續動作空間控制。
- actor-critic:在介紹DDPG前,簡單的介紹下 actor-critic算法。actor-critic算法是一種TD method。結合了value-based和policy-based方法。policy網絡是actor(行動者),輸出動作(action-selection)。value網絡是critic(評價者),用來評價actor網絡所選動作的好壞(action value estimated),並生成TD_error信號同時指導actor網絡critic網絡的更新。下圖為actor-critic算法的一個架構圖,DDPG就是這一類算法。
DDPG中,actor網絡的輸入時state,輸出action,以DNN進行函數擬合,對於連續動作NN輸出層可以用tanh或sigmod,離散動作以softmax作為輸出層則達到概率輸出的效果。critic網絡輸入為state和action,輸出為Q值。本文介紹的是off-policy的 Deterministic Actor-Critic,on-policy的結構詳見論文。
- DPG:DPG中提供了確定性策略梯度的計算公式和證明。
- DQN:DDPG中借鑒了DQN的experience replay和target network。target network的具體實現與DQN略有不同,DDPG論文中的actor和critic的兩個target network以小步長滯后更新,而非隔C步更新。都是為了解決模型訓練穩定性問題,大同小異吧。
- Noise sample:連續動作空間的RL學習的一個困難時action的探索。DDPG中通過在action基礎上增加Noise方式解決這個問題。
DDPG的算法訓練過程:
四、some state-of-art papers
寫到這整個文章有點太長了,這部分會拆分到后續單獨開辟文章介紹。簡單介紹下大名鼎鼎的A3C算法。
4.1 Asynchronous Advantage Actor-Critic (A3C)
因為后續還有計划A3C和Advantage結合在一起分享下。這里只是大體理一下A3C的主要思路。
- asynchronous:異步,對應的異步分布式RL框架。相對應的是15年google的Gorila平台Massively Parallel Methods for Deep Reinforcement Learning,Gorilla采用的不同機器,同一個PS。而A3C中,則是同一台機器,多核CPU,降低了參數和梯度的傳輸成本,論文里驗證迭代速度明顯更快。並且更為重要的是,它是采用同機多線程的actor-learner對,每個線程對應不同的探索策略,總體上看樣本間是低相關的,因此不再需要DQN中引入experience replay機制來進行訓練。這樣能夠采用on-policy的方法進行訓練。此外,訓練中采用的是CPU而非GPU,原因是RL在訓練過程中batch一般很小,GPU在等待新數據時空閑很多。附異步方法抽象的架構圖見下:
- Advantage Actor-Critic:和DDPG架構類似,actor網絡的梯度:
與DDPG不同的是A3C利用的是max(Advantage)而非max(Q),其中是利用n-steps TD error進行更新的,即:
具體過程見下圖:
n-step Q-learning A3C算法訓練過程:
4.2 Trust Region Policy Optimization(TRPO)and action embedding and ...
16年Berkeley大學的論文 Trust Region Policy Optimization,核心在於學習的可信度,提高模型穩定性。
超大規模離散動作空間的action embedding的paperDeep Reinforcement Learning in Large Discrete Action Spaces。核心貢獻是引入action embedding,具體做法是將離散動作embedding到連續的小空間中,設計很巧妙,讀這篇論文前也有類似思路,可以用到搜索推薦這些領域。
其他前沿文章和專題,比如16年NIPS BestPaper Value Iteration Networks(安利下新朋友iker的分享:強化學習系列三- Value iteration Network)以及又是Silver大神16年的Fictitious Self-Play Deep Reinforcement Learning from Self-Play in Imperfect-Information Games等,留待后面文章再仔細分解了。
五、some words
一點點感觸,平時很少寫文章,平時要學的東西很多項目也很busy,時間真心不多...但寫到這里反而發現,能夠把學習思考實踐的內容通過寫作呈現出來,還是有些不同於單獨讀paper做實驗的收獲,寫作的過程會加深對細節的理解,也能從更系統更全面視角看待問題,后續會繼續多po一些前沿專題和實現象,繼續保持更新,各位看官多多支持哈。DRL是一個非常有意思的方向,歡迎多多交流指導,DRL領域的發展也是日新月異,生活在這樣一個信息革命大變革時代也是我們的幸運。anyway,最重要的是開心,加油吧~
最后安利下我們team的招聘,對淘寶搜索排序感興趣的同學歡迎郵件我 qingsong.huaqs@taobao.com,來淘寶,一起成長!