鄭 瑩,段慶洋,林利祥,游新宇,徐躍東,王 新*
(1.復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 200433;2.復(fù)旦大學(xué) 信息科學(xué)與工程學(xué)院,上海 200433;3.上海市智能信息處理重點(diǎn)實(shí)驗(yàn)室,上海 200433)
近幾年來, 深度學(xué)習(xí)(Deep Learning)在機(jī)器視覺、語音識別及自然語言處理等領(lǐng)域取得了巨大的成功。通過利用多層神經(jīng)網(wǎng)絡(luò)對于觀測數(shù)據(jù)的分層特征表示及其非線性變換,抽取特征信息,以發(fā)現(xiàn)數(shù)據(jù)的特征規(guī)律[1]。強(qiáng)化學(xué)習(xí)(Reinforcement Learning)作為機(jī)器學(xué)習(xí)的另一個(gè)熱點(diǎn),其基本思想是通過模仿人類或動物學(xué)習(xí)中的“嘗試與失敗” 機(jī)制,運(yùn)用智能體在與環(huán)境的交互過程中獲得的獎(jiǎng)勵(lì)來學(xué)習(xí)最佳決策行為。然而傳統(tǒng)的基于表格的強(qiáng)化學(xué)習(xí)訓(xùn)練方法存在嚴(yán)重的維度災(zāi)難(Curse of Dimension)問題,因而使用函數(shù)近似器的方法成為主流。隨著 AlphaGo的出現(xiàn),深度神經(jīng)網(wǎng)絡(luò)與強(qiáng)化學(xué)習(xí)相互融合,形成既具有強(qiáng)大感知能力,又具有決策能力的深度強(qiáng)化學(xué)習(xí)(Deep Reinforcement Learning,DRL)。
DRL目前已經(jīng)被運(yùn)用至計(jì)算機(jī)網(wǎng)絡(luò)的各個(gè)層次,例如網(wǎng)絡(luò)層的路由協(xié)議、傳輸層的擁塞控制協(xié)議、應(yīng)用層的視頻流媒體和云計(jì)算資源分配等。在這些應(yīng)用中,DRL呈現(xiàn)出兩大顯著的優(yōu)勢。首先,DRL方法在原理上能夠有效地提升網(wǎng)絡(luò)系統(tǒng)的性能。網(wǎng)絡(luò)系統(tǒng)中的許多研究問題歸結(jié)到資源的優(yōu)化分配上,而網(wǎng)絡(luò)系統(tǒng)的動態(tài)性和復(fù)雜性導(dǎo)致在具體的研究問題上往往難以建立精確的數(shù)學(xué)模型和設(shè)計(jì)高性能的算法。其次,DRL方法提供了一種端到端的設(shè)計(jì)模式,使得不同網(wǎng)絡(luò)系統(tǒng)中資源分配算法設(shè)計(jì)的邊界模糊化。現(xiàn)有的基于DRL的網(wǎng)絡(luò)系統(tǒng),無論在所處層次和問題模型上差異多大,基本都采用通用的結(jié)構(gòu)。網(wǎng)絡(luò)方面的任務(wù)主要包括輸入特征選擇、獎(jiǎng)勵(lì)函數(shù)設(shè)置和輸出動作設(shè)計(jì),人工智能方面的任務(wù)是采用標(biāo)準(zhǔn)的或者定制化的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和強(qiáng)化學(xué)習(xí)算法。因而,在這種狀態(tài)輸入至決策動作輸出的端到端設(shè)計(jì)模式下,網(wǎng)絡(luò)資源分配算法設(shè)計(jì)被極大地簡化,并且設(shè)計(jì)的經(jīng)驗(yàn)可以遷移至原本分野清晰的網(wǎng)絡(luò)系統(tǒng)中。
本文首先對DRL技術(shù)進(jìn)行介紹,然后針對5個(gè)典型的計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用,包括任務(wù)調(diào)度、視頻傳輸、路由選擇、TCP擁塞控制和緩存,詳細(xì)描述了這些應(yīng)用使用DRL技術(shù)的動機(jī)、建模方法和測試效果,并介紹這些基于DRL的網(wǎng)絡(luò)系統(tǒng)面臨的挑戰(zhàn)。
深度學(xué)習(xí)在多個(gè)領(lǐng)域均取得了顯著的進(jìn)步,如計(jì)算機(jī)視覺、機(jī)器翻譯等。深度學(xué)習(xí)的基礎(chǔ)模型為人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)。全連接神經(jīng)網(wǎng)絡(luò)(Fully Connected Neural Network,F(xiàn)CNN)是最簡單的神經(jīng)網(wǎng)絡(luò)模型,通過對輸入數(shù)據(jù)的多次非線性變換,抽取特征進(jìn)而產(chǎn)生輸出結(jié)果。用于處理圖像數(shù)據(jù)的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),通過權(quán)重共享機(jī)制可顯著降低參數(shù)數(shù)量,緩解圖片數(shù)據(jù)引起的參數(shù)過多問題。FCNN和CNN均為前饋神經(jīng)網(wǎng)絡(luò),即一個(gè)神經(jīng)元的輸出只取決于當(dāng)前時(shí)刻的輸入以及與該輸入相對應(yīng)的權(quán)重參數(shù),并不適用于處理時(shí)序數(shù)據(jù)。為解決這個(gè)問題,循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)應(yīng)運(yùn)而生,通過具有自反饋特征的神經(jīng)元處理可變長的時(shí)間序列數(shù)據(jù);長短期記憶網(wǎng)絡(luò)(Long Short Term Memory Network,LSTM)可用于解決簡單循環(huán)神經(jīng)網(wǎng)絡(luò)中的長程依賴問題;此外,還有專門用于處理圖結(jié)構(gòu)數(shù)據(jù)的圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)等。更多關(guān)于深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的介紹可見參考文獻(xiàn)[2]。
強(qiáng)化學(xué)習(xí)是智能體(Agent)和環(huán)境(Environment)的交互過程,該序貫決策過程可使用馬爾可夫決策過程(MDP)進(jìn)行建模,一般使用五元組描述,其中S代表狀態(tài)空間,A代表動作空間,P為狀態(tài)轉(zhuǎn)移概率,p(s′|s,a)表示在狀態(tài)s下采取動作a隨后環(huán)境狀態(tài)轉(zhuǎn)移到s’的概率,R:S×A→為獎(jiǎng)勵(lì)函數(shù),γ∈[0,1]為折扣因子,反映了智能體對未來回報(bào)的重視程度。強(qiáng)化學(xué)習(xí)智能體的策略使用π:S×A→[0,1]表示,智能體根據(jù)策略π選擇動作。強(qiáng)化學(xué)習(xí)原理框圖如圖1所示。

圖1 強(qiáng)化學(xué)習(xí)原理框圖Fig.1 Framework of reinforcement learning
如圖1所示,一個(gè)典型的交互過程包括以下幾個(gè)過程:在每個(gè)時(shí)刻t,智能體首先觀測環(huán)境的狀態(tài)st∈S,隨后基于策略π(st)選擇動作at,動作at作用于環(huán)境導(dǎo)致環(huán)境狀態(tài)轉(zhuǎn)變到st+1,同時(shí),智能體收到環(huán)境返還給的獎(jiǎng)勵(lì)rt,智能體依據(jù)新的環(huán)境狀態(tài)和策略做出新的決策,該交互過程不斷重復(fù)。強(qiáng)化學(xué)習(xí)智能體的目標(biāo)即為最大化累計(jì)獎(jiǎng)勵(lì)的期望,當(dāng)T=∞時(shí),γ<1可防止目標(biāo)函數(shù)需要計(jì)算無窮多的瞬時(shí)獎(jiǎng)勵(lì)之和。
有3類標(biāo)準(zhǔn)的方法用于解決上述問題,包括動態(tài)規(guī)劃方法、蒙特卡洛(Monte Carlo)方法和時(shí)間差分(Temporal-Difference)方法[3]。
1.2.1 基于動態(tài)規(guī)劃求解強(qiáng)化學(xué)習(xí)問題
令Vπ(s)表示從狀態(tài)s開始,執(zhí)行策略π能獲得的累計(jì)獎(jiǎng)勵(lì),根據(jù)貝爾曼方程:
Vπ(s)=π[rt+1+γVπ(st+1)|st=s]=
∑aπ(a|s)∑s′,rp(s′,r|s,a)[r+γvπ(s′)],
(1)
可以使用動態(tài)規(guī)劃的方法求解最優(yōu)策略,其中關(guān)鍵的2個(gè)步驟是策略評估(Policy Evaluation)和策略改進(jìn)(Policy Improvement)。策略評估基于貝爾曼方程計(jì)算當(dāng)前策略下各個(gè)狀態(tài)的值函數(shù),用于評價(jià)當(dāng)前策略π的好壞,而策略改進(jìn)則指明如何修改策略從而獲得更高的獎(jiǎng)勵(lì)。令Qπ(s,a)代表在狀態(tài)s選擇a,隨后基于策略π進(jìn)行動作選擇所能獲得的累計(jì)獎(jiǎng)勵(lì),策略改進(jìn)的規(guī)則為選擇使累計(jì)獎(jiǎng)勵(lì)最大的動作,即:
π′(s)=argmaxaQπ(s,a)=
argmaxaπ[rt+1+γVπ(st+1)|st=s,at=a]=
argmaxa∑s′,rp(s′,r|s,a)[r+γVπ(s′)]。
(2)
策略迭代即不斷重復(fù)策略評估和策略改進(jìn)過程,從而收斂到最優(yōu)策略。基于動態(tài)規(guī)劃的方法雖然數(shù)學(xué)原理性較強(qiáng),但是需要已知完整且精確的環(huán)境模型,因此稱之為基于模型(Model-based)的算法。由于實(shí)際的環(huán)境模型大多未知,基于動態(tài)規(guī)劃的方法適用范圍較窄。
1.2.2 基于蒙特卡洛方法求解強(qiáng)化學(xué)習(xí)問題
蒙特卡洛(Monte Carlo)方法不依賴于環(huán)境模型,只通過智能體和環(huán)境交互生成的軌跡數(shù)據(jù)以采樣平均的方式進(jìn)行學(xué)習(xí),其中軌跡數(shù)據(jù)包括環(huán)境狀態(tài)、選擇動作以及獲得獎(jiǎng)勵(lì)。為了計(jì)算估計(jì)的值函數(shù),蒙特卡洛方法要求智能體和環(huán)境的交互過程必須以回合(Episode)的形式進(jìn)行。一個(gè)Episode是指從智能體開始和環(huán)境交互,直到停止此次交互的完整中間過程,在此過程中產(chǎn)生的軌跡數(shù)據(jù)可以表示為S1,A1,R1,S2,A2,R2,….ST,AT,RT,T為本次交互的截止時(shí)間。估計(jì)狀態(tài)St的累計(jì)獎(jiǎng)勵(lì)可通過下式進(jìn)行計(jì)算:
Gt=Rt+γRt+1+γ2Rt+2+…+γT-tRT。
(3)
針對參數(shù)的更新,蒙特卡洛方法仍然采取策略迭代的思想,當(dāng)一個(gè)或多個(gè) Episode結(jié)束時(shí),對值函數(shù)進(jìn)行更新,同時(shí)對策略進(jìn)行改進(jìn),隨后根據(jù)新的策略繼續(xù)生成軌跡數(shù)據(jù)。值函數(shù)的更新是基于采樣平均的方法,針對蒙特卡洛采樣的多條軌跡數(shù)據(jù),只有出現(xiàn)狀態(tài)St的軌跡數(shù)據(jù)才會被計(jì)算累計(jì)獎(jiǎng)勵(lì),使用多條軌跡數(shù)據(jù)求出的均值去更新值函數(shù)。增量式更新公式為:
V(st)←V(st)+α(Gt-V(st))。
(4)
當(dāng)軌跡數(shù)據(jù)較多時(shí),采樣平均的方法是對值函數(shù)的無偏估計(jì)。在實(shí)際應(yīng)用中,由于動作值函數(shù)可以更確切地表示出策略,因此估計(jì)的是動作值函數(shù),其計(jì)算方法和計(jì)算值函數(shù)的方法類似。
1.2.3 基于時(shí)間差分方法求解強(qiáng)化學(xué)習(xí)問題
蒙特卡洛方法雖然不需要精確的環(huán)境模型,并且實(shí)現(xiàn)方法簡單,但是對狀態(tài)值函數(shù)的更新必須要等待一個(gè)Episode結(jié)束。時(shí)間差分方法可以直接在每一步對值函數(shù)進(jìn)行更新:
V(st)←V(st)+α[Rt+1+γV(st+1)-V(st)],
(5)
以上式進(jìn)行更新的方法稱為TD(0),也稱為單步時(shí)間差分(One-step TD)。單步時(shí)間差分的2個(gè)代表性算法為SARSA和Q-learning算法。SARSA算法為同策略(On-policy)算法,其動作值函數(shù)的更新公式為:
Q(St,At)←Q(St,At)+α[Rt+1+
γQ(St+1,At+1)-Q(St,At)]。
(6)
Q-learning算法為離策略算法(Off-policy),其動作值函數(shù)的更新公式為:
Q(St,At)←Q(St,At)+
(7)
式中,On-policy是指SARSA算法在狀態(tài)St+1通過當(dāng)前策略采取動作At;而Q-learning算法在更新時(shí)采用狀態(tài)St下對應(yīng)的最大值函數(shù)作為目標(biāo),為Off-policy。
傳統(tǒng)的強(qiáng)化學(xué)習(xí)使用表格的方法表示策略π。然而當(dāng)狀態(tài)-動作空間較大時(shí),無法繼續(xù)使用基于表格的方法,此時(shí)可使用函數(shù)近似器去近似策略π,如圖2所示。當(dāng)使用參數(shù)為θ的神經(jīng)網(wǎng)絡(luò)去近似策略π時(shí),稱之為DRL,并使用πθ表示策略。
由于大部分情況下外界環(huán)境的模型均是未知(Model-free)的,本節(jié)只介紹模型未知情況下如何使用DRL方法訓(xùn)練智能體。

圖2 深度強(qiáng)化學(xué)習(xí)原理框圖Fig.2 Framework of deep reinforcement learning
1.3.1 基于值函數(shù)的深度強(qiáng)化學(xué)習(xí)方法
(1) 深度Q網(wǎng)絡(luò)
深度Q網(wǎng)絡(luò)(Deep Q-network,DQN)[4]是Q-learning算法的擴(kuò)展,使用神經(jīng)網(wǎng)絡(luò)去近似動作值函數(shù),優(yōu)化目標(biāo)即最小化損失函數(shù):
Li(θi)=πθi[(yi-Q(s,a;θi))2],
(8)



(9)
Q網(wǎng)絡(luò)參數(shù)θ的更新可使用標(biāo)準(zhǔn)的隨機(jī)梯度下降。
(2) 深度雙Q網(wǎng)絡(luò)

(10)
(3) 基于優(yōu)先采樣的深度雙Q網(wǎng)絡(luò)
DQN使用經(jīng)驗(yàn)回放機(jī)制打破數(shù)據(jù)之間的關(guān)聯(lián)性,然而隨機(jī)采樣軌跡數(shù)據(jù)進(jìn)行訓(xùn)練的方式并不能反映不同樣本的重要性。此外,在回放池容量有限的情況下,存在樣本還未被采樣就丟棄的現(xiàn)象。為解決這個(gè)問題,Schaul等人[6]提出了基于優(yōu)先采樣的深度雙Q網(wǎng)絡(luò)(Double Deep Q-network with Proportional Prioritization),使用樣本的時(shí)間差分偏差(TD-error)作為判斷優(yōu)先級的標(biāo)準(zhǔn),對于偏差為δi的樣本,其采樣概率的計(jì)算公式為:
(11)
式中,pi為通過樣本偏差計(jì)算出的等級。
此外,還有其他針對DQN進(jìn)行改進(jìn)的工作,Wang等人[7]提出了Dueling Nerwork,通過將動作值函數(shù)拆分為值函數(shù)和優(yōu)勢函數(shù)相加的方式,解決在某些狀態(tài)下選擇不同動作影響較小的問題,從而提升訓(xùn)練效率。Hausknecht等人[8]基于RNN提出DRQN來處理歷史狀態(tài)信息。
1.3.2 基于策略梯度的深度強(qiáng)化學(xué)習(xí)方法
上節(jié)中基于值函數(shù)的方法通過Q網(wǎng)絡(luò)輸出在給定輸入狀態(tài)下針對各個(gè)動作的估計(jì)的動作值函數(shù),只適用于解決離散動作空間的問題。在本節(jié)中介紹的基于策略梯度的方法不僅可以解決離散動作的問題,還可以解決連續(xù)動作空間的問題。
基于策略的方法使用參數(shù)為θ的神經(jīng)網(wǎng)絡(luò)直接表示策略,稱之為策略網(wǎng)絡(luò)。針對離散動作的情況,神經(jīng)網(wǎng)絡(luò)直接輸出概率分布,指明了選擇各個(gè)動作的概率;針對連續(xù)動作的情況,神經(jīng)網(wǎng)絡(luò)可輸出選擇動作的正態(tài)分布均值和方差,并依據(jù)該分布去采樣連續(xù)的動作值。在Model-free情況下,使用蒙特卡洛(Monte Carlo)采樣方法進(jìn)行數(shù)據(jù)的采集,智能體和環(huán)境的交互必須是以Episode的方式進(jìn)行的,這種方法是為了更好地計(jì)算某個(gè)(狀態(tài),動作)數(shù)據(jù)對的累計(jì)獎(jiǎng)勵(lì)。直接對目標(biāo)函數(shù)計(jì)算梯度得到:
(12)
典型的基于策略梯度的算法REINFORCE[9]通過下式進(jìn)行神經(jīng)網(wǎng)絡(luò)參數(shù)更新:
θi←θi+α∑tθiln(πθi(st,at))vt,
(13)
式中,vt可直接選取為Qπθi(s,a)。然而,由于參數(shù)的更新是依賴于蒙特卡洛采樣的結(jié)果,因此方差較大,可使用優(yōu)勢函數(shù)(Advantage Function)Aπθi(s,a)作為vt從而降低方差,Aπθi(s,a)=Qπθi(s,a)-b,b是一個(gè)基線(Baseline),有多種選取的方法,簡單的方法即為選取多次采樣的均值,此時(shí)可直接認(rèn)為b是一個(gè)常數(shù)。
1.3.3 混合值函數(shù)和策略梯度的方法
(1) 行動者-評論家算法及其改進(jìn)
上文提到基于策略梯度的方法在進(jìn)行參數(shù)更新時(shí),為降低訓(xùn)練的方差,需要選擇一個(gè)合適的基線,當(dāng)使用迭代過程中動態(tài)改變的值函數(shù)作為基線,這就是行動者-評論家(Actor-critic)算法[10]。Actor-Critic算法是基于值函數(shù)的方法和基于策略梯度方法的融合,共包括兩個(gè)神經(jīng)網(wǎng)絡(luò),其中Actor網(wǎng)絡(luò)用于動作決策,Critic作為附加模塊專門用于計(jì)算基線的取值;與此同時(shí),Critic網(wǎng)絡(luò)也隨著迭代次數(shù)的增加不斷進(jìn)行自我更新。令A(yù)ctor網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)參數(shù)為θai,Critic網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)參數(shù)為θvi。Actor網(wǎng)絡(luò)參數(shù)的更新公式為:
θai←θai+α∑tθailn(πθai(st,at))vt,
(14)
Critic網(wǎng)絡(luò)輸出對當(dāng)前狀態(tài)的值函數(shù)的估計(jì)值,參數(shù)更新公式為:
Vπθvi(st;θvi))2。
(15)
注意Actor網(wǎng)絡(luò)和Critic網(wǎng)絡(luò)除輸出層外均采用相同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
Mnih等人提出的A3C算法[11]是輕量級的異步Actor-Critic算法,利用多個(gè)智能體在多個(gè)線程和各自的環(huán)境進(jìn)行交互,從而產(chǎn)生軌跡數(shù)據(jù);每個(gè)線程的智能體基于自身存儲的軌跡數(shù)據(jù)進(jìn)行參數(shù)更新,一個(gè)中心智能體負(fù)責(zé)收集多個(gè)線程并生成全局的網(wǎng)絡(luò)參數(shù),隨后分發(fā)給各個(gè)智能體。這種方式成功打破了數(shù)據(jù)相關(guān)性,并且解決了經(jīng)驗(yàn)回放機(jī)制只能使用離策略(Off-policy)的局限性。
(2) 信賴域策略優(yōu)化算法及其改進(jìn)
策略梯度方法存在高方差的問題,并且算法的性能對超參的設(shè)置較敏感。信賴域策略優(yōu)化算法(Trust Region Policy Gradient,TRPO)[12]解決的問題是如何合理地選擇步長從而使得回報(bào)函數(shù)單調(diào)遞增。它將優(yōu)化的損失函數(shù)修改為:

(16)
式中,Aθ(st,at)=θ[Rt|st,at]-Vθ(st)。近端策略優(yōu)化(Proximal Policy Optimization,PPO)算法[13]可看作是TRPO算法的近似版本,它將TRPO的約束項(xiàng)作為正則項(xiàng)添加到損失函數(shù)中,降低了TRPO算法的實(shí)現(xiàn)復(fù)雜性,應(yīng)用性更廣。此外,Heess等人[14]提出了適用于大規(guī)模訓(xùn)練的分布式近端策略優(yōu)化算法。
(3) 深度確定性策略梯度算法及其改進(jìn)
盡管PPO算法的學(xué)習(xí)效率很高,但是PPO算法使用的隨機(jī)策略在動作空間維度較大時(shí),需要采集大量的樣本,才能對當(dāng)前的策略進(jìn)行合理的評估。其中隨機(jī)策略只針對某一個(gè)輸入狀態(tài),策略網(wǎng)絡(luò)輸出的是選擇動作的概率分布。為解決這個(gè)問題,Lillicrap等人[15]提出深度確定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG),DDPG為確定性策略,即策略網(wǎng)絡(luò)直接輸出具體的選定動作。
DDPG仍然采用Actor網(wǎng)絡(luò)用于輸出動作,Critic網(wǎng)絡(luò)用于輸出對值函數(shù)的估計(jì)。為了保證算法一定程度的探索過程,DDPG給輸出動作添加了額外的噪聲Nt:
at=π(st;θ)+Nt。
(17)
此外,為了打破數(shù)據(jù)之間的相關(guān)性,DDPG也采用經(jīng)驗(yàn)回放機(jī)制和額外設(shè)立的目標(biāo)網(wǎng)絡(luò)。DDPG實(shí)現(xiàn)連續(xù)控制需要訓(xùn)練2個(gè)網(wǎng)絡(luò),而Gu等人提出的NAF[16],將動作值函數(shù)分解為狀態(tài)值函數(shù)和優(yōu)勢值函數(shù),只需要訓(xùn)練一個(gè)模型。更多關(guān)于DRL的技術(shù)介紹見文獻(xiàn)[17-18]。
本文主要介紹DRL在5個(gè)典型的網(wǎng)絡(luò)系統(tǒng)中的應(yīng)用,包括任務(wù)及數(shù)據(jù)流調(diào)度、視頻傳輸、路由選擇、TCP擁塞控制以及緩存問題。
任務(wù)調(diào)度是計(jì)算機(jī)網(wǎng)絡(luò)中的一個(gè)典型應(yīng)用,如圖3所示。互聯(lián)網(wǎng)上的用戶源源不斷地產(chǎn)生計(jì)算任務(wù),從普通的網(wǎng)頁瀏覽到對計(jì)算量需求較高的大數(shù)據(jù)分析以及深度學(xué)習(xí)計(jì)算任務(wù)等,這些任務(wù)會上傳到云數(shù)據(jù)中心由計(jì)算機(jī)集群進(jìn)行處理。任務(wù)調(diào)度算法在這個(gè)過程中起著至關(guān)重要的作用,一個(gè)高效的任務(wù)調(diào)度算法可以合理利用計(jì)算資源,根據(jù)用戶的不同需求進(jìn)行優(yōu)化,從而在保證用戶滿意度的同時(shí)降低數(shù)據(jù)中心的開銷。最優(yōu)的調(diào)度策略與任務(wù)負(fù)載和環(huán)境條件(如任務(wù)到達(dá)的數(shù)據(jù)分布)有關(guān)。盡管具體的應(yīng)用場景以及假設(shè)有所不同,但是目前的解決方法基本上是針對某種特定的任務(wù)負(fù)載以及任務(wù)到達(dá)的分布,建立理論模型并設(shè)計(jì)特定的任務(wù)調(diào)度算法,且為了達(dá)到較好的性能常常需要在實(shí)際環(huán)境下進(jìn)行詳盡的測試與修正。當(dāng)這些環(huán)境條件發(fā)生改變時(shí),可能需要重復(fù)上述流程重新設(shè)計(jì)算法。近年來出現(xiàn)了許多使用DRL技術(shù)實(shí)現(xiàn)自動化的任務(wù)調(diào)度算法設(shè)計(jì)。

圖3 云數(shù)據(jù)中心任務(wù)調(diào)度原理圖Fig.3 Framework of job scheduling in cloud data center
2.1.1 面向獨(dú)立任務(wù)的調(diào)度
MIT的工作DeepRM[19]最早將DRL應(yīng)用到數(shù)據(jù)中心任務(wù)調(diào)度中,DeepRM是一個(gè)簡化的集群多資源任務(wù)調(diào)度器,稱之為DRL智能體。在離散的時(shí)間片,任務(wù)以設(shè)定好的分布在線到達(dá)從而形成任務(wù)隊(duì)列,其中每個(gè)任務(wù)請求一定時(shí)間長度的CPU和內(nèi)存資源。在每個(gè)時(shí)間片,DeepRM觀測系統(tǒng)狀態(tài),包括CPU和內(nèi)存的占用情況以及任務(wù)隊(duì)列中任務(wù)的資源請求狀況,并根據(jù)系統(tǒng)狀態(tài)和策略網(wǎng)絡(luò)進(jìn)行決策,策略網(wǎng)絡(luò)為使用同全連接神經(jīng)網(wǎng)絡(luò)近似的強(qiáng)化學(xué)習(xí)策略,決策內(nèi)容為調(diào)度當(dāng)前任務(wù)隊(duì)列內(nèi)的一個(gè)或多個(gè)任務(wù)到相應(yīng)的CPU以及內(nèi)存的待執(zhí)行隊(duì)列中。DeepRM每做出一個(gè)決策,將收到系統(tǒng)返還的獎(jiǎng)勵(lì)信號,由于最終的優(yōu)化目標(biāo)設(shè)定為最小化平均每個(gè)任務(wù)的完成時(shí)間與請求時(shí)間的比值,因此將單步獎(jiǎng)勵(lì)信號設(shè)置為:
(18)
式中,J代表當(dāng)前決策時(shí)間點(diǎn)和上一個(gè)決策時(shí)間點(diǎn)之間的系統(tǒng)內(nèi)所有任務(wù),Tj為任務(wù)j的請求時(shí)間。DeepRM使用帶有基線的REINFORCE算法進(jìn)行訓(xùn)練。實(shí)驗(yàn)結(jié)果顯示DeepRM的性能超過目前基于領(lǐng)域知識的傳統(tǒng)算法,且在重負(fù)載的情況下效果更明顯。
DeepRM假設(shè)所有資源均在一個(gè)統(tǒng)一的資源池中,然而在實(shí)際情況下,常常需要不同物理位置的數(shù)據(jù)中心進(jìn)行跨區(qū)域的任務(wù)調(diào)度,因此Chen的工作[20]將DeepRM擴(kuò)展到更復(fù)雜的情況,即多資源池的情況。針對智能體的輸入狀態(tài),除了考慮任務(wù)隊(duì)列中任務(wù)的請求資源狀況外,它將單個(gè)機(jī)器的CPU和內(nèi)存占用狀況拓展到兩個(gè)機(jī)器的CPU和內(nèi)存的占用狀況,動作空間擴(kuò)大一倍。實(shí)驗(yàn)結(jié)果顯示,經(jīng)過拓展后的DeepRM仍然取得了比傳統(tǒng)任務(wù)調(diào)度算法(如最短任務(wù)優(yōu)先算法)更好的性能。
Chen的工作[20]存在的問題是,由于輸入狀態(tài)要考慮所有資源池(機(jī)器)的資源占用情況,而神經(jīng)網(wǎng)絡(luò)的輸入必須是固定維度的,限制了它只能應(yīng)用到資源池?cái)?shù)量較少的場景。為解決這個(gè)問題,Li等人提出了DeepJS[21],DeepJS仍然是一個(gè)基于DRL的任務(wù)調(diào)度系統(tǒng),不同之處在于DeepJS以裝箱問題為原型,優(yōu)化目標(biāo)是最小化Makespan,其中Makespan定義為最后一個(gè)任務(wù)的完成時(shí)間。DeepJS基于神經(jīng)網(wǎng)絡(luò)計(jì)算不同的(任務(wù),機(jī)器)數(shù)據(jù)對的適應(yīng)度(Fitness),在分配任務(wù)時(shí),將任務(wù)分配到適應(yīng)度最高的機(jī)器,由于此時(shí)神經(jīng)網(wǎng)絡(luò)的輸入狀態(tài)只需要考慮某一特定的機(jī)器的資源占用狀況和新到達(dá)的任務(wù)的請求資源狀況,因而可以固定輸入的維度。這種方法的可擴(kuò)展性較高,不再受限于輸入維度的限制。
2.1.2 面向關(guān)聯(lián)任務(wù)的調(diào)度
上一節(jié)的討論并沒有考慮任務(wù)之間的關(guān)聯(lián)性,然而在實(shí)際的大規(guī)模并行化任務(wù)處理平臺,如Spark,經(jīng)常需要處理有關(guān)聯(lián)性的任務(wù),即多個(gè)任務(wù)之間的執(zhí)行順序具有關(guān)聯(lián)關(guān)系,當(dāng)關(guān)聯(lián)任務(wù)對資源的需求不同時(shí),使得求解最優(yōu)策略變得更加困難,是公認(rèn)的NP-難問題[22-23]。
Spear[24]結(jié)合蒙特卡洛樹搜索(MCTS)和DRL技術(shù)實(shí)現(xiàn)對關(guān)聯(lián)任務(wù)的調(diào)度,任務(wù)之間的關(guān)聯(lián)關(guān)系被建模為有向無環(huán)圖(DAG),一個(gè)完整的任務(wù)對應(yīng)一個(gè)DAG,一個(gè)DAG內(nèi)有多個(gè)節(jié)點(diǎn),稱之為子任務(wù),子任務(wù)之間的關(guān)聯(lián)關(guān)系通過有向邊表示。在普通的MCTS中,擴(kuò)展和模擬的過程會隨機(jī)選擇動作,為更有效地探索狀態(tài)空間,Spear在擴(kuò)展和模擬的步驟中使用DRL智能體協(xié)助探索。DRL智能體的輸入狀態(tài)包括系統(tǒng)資源的占用狀況、隊(duì)列中有限任務(wù)個(gè)數(shù)對資源的請求狀況、每個(gè)節(jié)點(diǎn)的孩子節(jié)點(diǎn)個(gè)數(shù)、有關(guān)運(yùn)行時(shí)間以及任務(wù)負(fù)載的關(guān)鍵路徑信息,輸出動作為選擇一個(gè)隊(duì)列中的任務(wù)去調(diào)度或者空動作引發(fā)時(shí)間前進(jìn)一步。為最小化Makespan,Spear在只有選擇空動作引發(fā)時(shí)間前進(jìn)時(shí)才會獲得一個(gè)獎(jiǎng)勵(lì),其數(shù)值為-1,由此將累計(jì)獎(jiǎng)勵(lì)和優(yōu)化目標(biāo)進(jìn)行關(guān)聯(lián)。實(shí)驗(yàn)測試時(shí)將Spear與多個(gè)傳統(tǒng)算法進(jìn)行對比,包括Graphene,Tetris,SJF,結(jié)果顯示Spear取得了更低的Makespan時(shí)間,主要原因是Spear考慮了更多的特征。
Mao等人提出的Decima[25]是另一個(gè)基于DRL實(shí)現(xiàn)關(guān)聯(lián)任務(wù)調(diào)度的系統(tǒng)。Decima仿照Spark平臺的設(shè)置,考慮了更為復(fù)雜的情況,一個(gè)完整的任務(wù)對應(yīng)一個(gè)DAG。一個(gè)DAG內(nèi)有多個(gè)節(jié)點(diǎn)(子任務(wù)),每個(gè)節(jié)點(diǎn)內(nèi)有多個(gè)可并行處理的任務(wù)。為了提升系統(tǒng)的可擴(kuò)展性,Decima使用了圖神經(jīng)網(wǎng)絡(luò)來應(yīng)對不同類型的DAG。具體來講,Decima首先對DAG中的每個(gè)節(jié)點(diǎn)進(jìn)行編碼,使用的信息為所有孩子節(jié)點(diǎn)的編碼向量和當(dāng)前節(jié)點(diǎn)的特征向量。其次,Decima為每個(gè)DAG新增了一個(gè)全局節(jié)點(diǎn),該全局節(jié)點(diǎn)將該DAG內(nèi)所有節(jié)點(diǎn)視為孩子節(jié)點(diǎn),對該全局節(jié)點(diǎn)進(jìn)行編碼得到DAG級別的全局節(jié)點(diǎn)向量。除此之外,Decima將所有DAG的全局節(jié)點(diǎn)視為子節(jié)點(diǎn)得到最終的編碼向量。注意以上所有的編碼過程都是通過圖神經(jīng)網(wǎng)絡(luò)完成的。在智能體需要做出決策時(shí),Decima針對當(dāng)前所有可調(diào)度的節(jié)點(diǎn),基于上述的各類編碼向量計(jì)算調(diào)度分?jǐn)?shù),并依此得到調(diào)度決策和分配的處理器數(shù)量。為了最小化平均任務(wù)完成時(shí)間,Decima將獎(jiǎng)勵(lì)信號設(shè)置為前后兩次相鄰決策時(shí)間點(diǎn)內(nèi)系統(tǒng)存在的任務(wù)數(shù)量與該時(shí)間差的乘積。基于Spark平臺的測試結(jié)果顯示,在一個(gè)具有25個(gè)節(jié)點(diǎn)的集群上,即使針對性能最優(yōu)的加權(quán)公平(Weighted Fair)傳統(tǒng)算法,Decima仍降低了約21%的平均任務(wù)完成時(shí)間。
除了任務(wù)執(zhí)行先后順序的依賴關(guān)系外,大規(guī)模并行任務(wù)的調(diào)度也是需要解決的重要問題。由于動作空間的大小會隨著任務(wù)數(shù)量和執(zhí)行任務(wù)的服務(wù)器的數(shù)量呈現(xiàn)指數(shù)型增長,文獻(xiàn)[27]在異構(gòu)服務(wù)器的場景下提出了基于多任務(wù)深度強(qiáng)化學(xué)習(xí)(Multi-task Learning)的調(diào)度算法進(jìn)行高效調(diào)度并行任務(wù),其中異構(gòu)服務(wù)器指不同服務(wù)器具有不同的CPU核數(shù)量以及主頻。每個(gè)在線到達(dá)的任務(wù)包含多個(gè)可并行執(zhí)行的子任務(wù)。訓(xùn)練算法使用A3C,多任務(wù)學(xué)習(xí)的思想體現(xiàn)在針對每個(gè)任務(wù)的子任務(wù)均設(shè)置一個(gè)Actor網(wǎng)絡(luò),多個(gè)子任務(wù)共享一個(gè)Critic網(wǎng)絡(luò),其中各個(gè)子任務(wù)的Actor網(wǎng)絡(luò)的前3個(gè)全連接層共享模型參數(shù),與此同時(shí)每個(gè)子任務(wù)獨(dú)占隨后的一個(gè)全連接層以及一個(gè)輸出層,這種架構(gòu)成功將動作空間的大小由NM降為MN,增加了算法的可擴(kuò)展性。
2.1.3 面向計(jì)算和節(jié)能的聯(lián)合調(diào)度
隨著深度學(xué)習(xí)的發(fā)展,數(shù)據(jù)中心也出現(xiàn)了更多運(yùn)行機(jī)器學(xué)習(xí)、大數(shù)據(jù)分析等對計(jì)算量需求較大的應(yīng)用,導(dǎo)致數(shù)據(jù)中心消耗的電量逐年增長。研究表明,由于計(jì)算而消耗的數(shù)據(jù)中心電量約占比56%,冷卻系統(tǒng)消耗的電量占比達(dá)到30%[28]。因此如何同時(shí)實(shí)現(xiàn)合理的任務(wù)調(diào)度,從而高效利用計(jì)算資源以及降低冷卻系統(tǒng)的電量消耗是一類重要問題。目前,聯(lián)合考慮上述兩條因素進(jìn)行優(yōu)化的方法大多依賴于靜態(tài)的或不恰當(dāng)?shù)膭討B(tài)模型,不能很好地解決上述問題。
DeepEE[29]利用DRL技術(shù)處理動態(tài)多變的系統(tǒng)狀態(tài),如動態(tài)變化的工作負(fù)載和環(huán)境溫度。由于優(yōu)化計(jì)算資源(任務(wù)調(diào)度)為離散動作,而優(yōu)化冷卻策略需要做出調(diào)整氣流速率的連續(xù)動作,因此DeepEE將策略梯度和DQN進(jìn)行結(jié)合,策略網(wǎng)絡(luò)輸出調(diào)整氣流速率的連續(xù)動作,該連續(xù)動作也將作為DQN中Q網(wǎng)絡(luò)(Q-network)輸入狀態(tài)的一部分,依據(jù)Q-network的輸出可確定將任務(wù)調(diào)度到哪臺服務(wù)器執(zhí)行的連續(xù)動作。與此同時(shí),DeepEE也采用了兩級時(shí)間的控制方法,即增加一個(gè)時(shí)間標(biāo)志變量去解決優(yōu)化計(jì)算和冷卻策略需要不同時(shí)間粒度的問題。
DeepEE假設(shè)機(jī)架內(nèi)所有的服務(wù)器都是同構(gòu)的,Deep-EAS[30]則是針對異構(gòu)服務(wù)器利用DRL技術(shù)進(jìn)行高效計(jì)算和節(jié)約能量的聯(lián)合優(yōu)化。除此之外,文獻(xiàn)[31]提出使用分層架構(gòu)去解決任務(wù)調(diào)度和能量管理的問題,包括全局層面和本地層面。全局層面使用DRL技術(shù)進(jìn)行任務(wù)調(diào)度,并使用自編碼器和權(quán)重共享機(jī)制去加速訓(xùn)練;本地層面使用LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行負(fù)載預(yù)測,并使用無模型的強(qiáng)化學(xué)習(xí)進(jìn)行能量管理。針對Google的真實(shí)數(shù)據(jù)進(jìn)行測試,結(jié)果顯示該分層的架構(gòu)可以保證在相同延遲的基礎(chǔ)上降低能量消耗。
針對一些精心設(shè)計(jì)的數(shù)據(jù)中心,電量有效利用率(PUE)已經(jīng)降到了較低的水平,此時(shí)不必再考慮冷卻系統(tǒng)等附加設(shè)備對電量的消耗,而如何合理地進(jìn)行任務(wù)調(diào)度從而高效利用計(jì)算資源成為關(guān)鍵問題。目前已有方法的邏輯多是遷移虛擬機(jī)以搶先執(zhí)行計(jì)算量小的任務(wù),然而當(dāng)前數(shù)據(jù)中心出現(xiàn)了大量強(qiáng)計(jì)算需求的任務(wù)時(shí),如大規(guī)模數(shù)據(jù)分析、深度學(xué)習(xí)等,導(dǎo)致前人的調(diào)度算法仍有一定的提升空間。文獻(xiàn)[32]專門針對強(qiáng)計(jì)算需求的任務(wù),利用DRL技術(shù)進(jìn)行自動化的任務(wù)調(diào)度。仿真數(shù)據(jù)顯示,針對具有1 152個(gè)處理器的新加坡國立超算中心(NSCC),訓(xùn)練一個(gè)任務(wù)調(diào)度的DRL智能體需要消耗高達(dá)40天的時(shí)間。為解決這一問題,文獻(xiàn)[32]提出了離線訓(xùn)練DRL智能體的方法。它首先使用從真實(shí)數(shù)據(jù)中心收集的任務(wù)到達(dá)信息和服務(wù)器的計(jì)算信息預(yù)訓(xùn)練了一個(gè)基于LSTM神經(jīng)網(wǎng)絡(luò)的計(jì)算模型,利用該計(jì)算模型輸出服務(wù)器的電量消耗、溫度等近似信息,DRL智能體則基于這些近似信息進(jìn)行離線訓(xùn)練。針對NSCC的真實(shí)任務(wù)到達(dá)數(shù)據(jù)的測試結(jié)果顯示,DRL智能體節(jié)約了近10%的能源消耗,并降低了3℃的處理器溫度。
2.1.4 面向數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度
數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度技術(shù)是指合理調(diào)度由數(shù)據(jù)中心應(yīng)用產(chǎn)生的數(shù)據(jù)流,從而有效改善數(shù)據(jù)中心的網(wǎng)絡(luò)流傳輸和優(yōu)化用戶體驗(yàn)[33]。一條數(shù)據(jù)流是指發(fā)送端和接收端之間跨過網(wǎng)絡(luò)傳輸?shù)囊粋€(gè)應(yīng)用數(shù)據(jù)單元[34]。數(shù)據(jù)中心的數(shù)據(jù)流可分為兩種:一種為單獨(dú)的數(shù)據(jù)流,另一種是一組有關(guān)聯(lián)關(guān)系的網(wǎng)絡(luò)流組(Coflow)。針對數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度問題,通常需要專家花費(fèi)較長的時(shí)間去設(shè)計(jì)依賴于負(fù)載和環(huán)境條件的啟發(fā)式算法。然而當(dāng)環(huán)境條件改變時(shí),如流大小的分布發(fā)生變化,啟發(fā)式算法性能會出現(xiàn)明顯下降,需要重新花費(fèi)時(shí)間和人力成本設(shè)計(jì)新的啟發(fā)式算法。
針對單獨(dú)的數(shù)據(jù)流,Auto[35]利用DRL技術(shù)進(jìn)行自動化的數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度。數(shù)據(jù)中心的數(shù)據(jù)流呈現(xiàn)明顯的長尾分布,大部分?jǐn)?shù)據(jù)流均為短流,但傳輸?shù)臄?shù)據(jù)量主要由小部分的長流決定。針對上述數(shù)據(jù)流的統(tǒng)計(jì)特征,Auto采用了具有外圍系統(tǒng)和中心系統(tǒng)的二級架構(gòu),其中外圍系統(tǒng)直接部署在終端服務(wù)器,采用多級隊(duì)列的方式進(jìn)行短流本地快速決策。每一個(gè)到達(dá)的數(shù)據(jù)流首先進(jìn)入最高級別的隊(duì)列,當(dāng)轉(zhuǎn)發(fā)的數(shù)據(jù)量超過一定閾值時(shí),則自動被降低到更低級別的隊(duì)列中,而判斷數(shù)據(jù)流優(yōu)先級的閾值則每隔一段時(shí)間由中心系統(tǒng)的DRL智能體(sRLA)決定。除此之外,中心系統(tǒng)還有另一個(gè)智能體(lRLA)負(fù)責(zé)只針對長流的決策,包括確定優(yōu)先級、速率和路徑。sRLA智能體接收固定數(shù)量的已完成的短流信息作為輸入狀態(tài),輸出動作為區(qū)分各個(gè)隊(duì)列的判斷閾值,獎(jiǎng)勵(lì)信號設(shè)置為前后兩個(gè)時(shí)間段內(nèi)的數(shù)據(jù)流完成時(shí)間。lRLA智能體接受固定數(shù)量活躍的和已完成的長流信息作為輸入狀態(tài),獎(jiǎng)勵(lì)信號設(shè)置為前后2次決策時(shí)間段內(nèi)吞吐量的比值。在一個(gè)具有32個(gè)服務(wù)器的小型數(shù)據(jù)中心對Auto的測試結(jié)果顯示,相比于目前已有算法,Auto降低了48.14%的平均流完成時(shí)間。
針對Coflow的調(diào)度問題,DeepWeave[36]使用DRL技術(shù)產(chǎn)生Coflow的調(diào)度策略,將一個(gè)任務(wù)產(chǎn)生的Coflow建模為一個(gè)DAG。DeepWeave的輸入狀態(tài)為Coflow中每個(gè)數(shù)據(jù)流信息和DAG的形狀。智能體主要包括3個(gè)部分,首先使用圖神經(jīng)網(wǎng)絡(luò)模塊提取DAG中的特征信息,然后策略網(wǎng)絡(luò)模塊接收這些特征信息并輸出一個(gè)優(yōu)先級列表,最后策略轉(zhuǎn)化模塊負(fù)責(zé)將優(yōu)先級列表轉(zhuǎn)化為具體的調(diào)度決策。實(shí)驗(yàn)結(jié)果顯示DeepWeave在任務(wù)完成時(shí)間指標(biāo)上實(shí)現(xiàn)了1.7倍的加速。
目前視頻傳輸所消耗的流量已占據(jù)互聯(lián)網(wǎng)流量的絕大部分。流媒體系統(tǒng)分為服務(wù)器端和客戶端,服務(wù)器端主要存儲媒體描述文件(.mpd文件)和視頻塊(Chunk)文件。媒體描述文件包含視頻的基本信息,包括各個(gè)視頻塊文件請求的路徑模板、可請求碼率等;視頻塊文件是服務(wù)器端將一段完整的視頻切成若干秒(一般為2~10 s)后保存的不同清晰度的視頻文件版本。當(dāng)客戶端需要觀看視頻時(shí),會先向服務(wù)器請求并解析媒體描述文件,隨后開始不斷地向服務(wù)器請求不同碼率的視頻塊文件。當(dāng)服務(wù)器端收到客戶端的請求后開始向客戶端傳輸視頻塊文件,客戶端在播放器上進(jìn)行播放。為了保證在復(fù)雜的網(wǎng)絡(luò)環(huán)境中盡可能地提升用戶的觀看體驗(yàn),客戶端的自適應(yīng)比特率選擇算法(ABR)需要實(shí)時(shí)地進(jìn)行視頻塊碼率的選擇,以保證用戶的觀看體驗(yàn)。ABR算法需要考慮避免視頻卡頓、碼率波動過于頻繁等因素。如何根據(jù)網(wǎng)絡(luò)帶寬的變化而實(shí)時(shí)地進(jìn)行恰當(dāng)?shù)拇a率決策是非常復(fù)雜和值得研究的問題。

圖4 基于HTTP的視頻傳輸原理圖Fig.4 Framework of HTTP adaptive video streaming
在流媒體系統(tǒng)中,碼率決策的傳統(tǒng)經(jīng)典算法有很多,例如Huang等人提出的BBA(Buffer Based Approach)[37]便是客戶端在進(jìn)行碼率決策時(shí),根據(jù)當(dāng)前的緩存長度來選擇下一個(gè)視頻塊的碼率大小。除了基于當(dāng)前緩存長度做碼率決策外,Liu等[38]人提出可以根據(jù)前幾個(gè)時(shí)刻的網(wǎng)絡(luò)吞吐量來預(yù)測下一個(gè)時(shí)刻的吞吐量,從而進(jìn)行碼率決策。傳統(tǒng)算法雖然相對容易實(shí)現(xiàn),也在大多數(shù)網(wǎng)絡(luò)情況下可行,但是固定的參數(shù)與固定的決策方式并不適應(yīng)于所有的網(wǎng)絡(luò)環(huán)境。BBA算法對緩存上下界的不恰當(dāng)設(shè)置可能導(dǎo)致有些網(wǎng)絡(luò)環(huán)境中的卡頓及碼率頻繁波動,影響用戶觀看體驗(yàn)。因此,結(jié)合DRL的視頻碼率決策方法應(yīng)運(yùn)而生,通過對DRL的模型進(jìn)行各種網(wǎng)絡(luò)帶寬環(huán)境的訓(xùn)練,使訓(xùn)練出的模型在視頻播放過程中做出更加正確與恰當(dāng)?shù)拇a率決策。
2.2.1 視頻點(diǎn)播
視頻點(diǎn)播(Video on Demand,VoD)是流媒體應(yīng)用中最為常見的應(yīng)用,服務(wù)器端將用戶可以點(diǎn)播的視頻制成不同碼率的視頻塊并存儲,客戶端不斷請求已經(jīng)存儲好的視頻塊,在播放器進(jìn)行拼裝與播放。
2013年,Claeys等人[39]提出了一種基于Q-learning的HAS(Http Adaptive Streaming)客戶端,與現(xiàn)有的傳統(tǒng)啟發(fā)式算法相比,Q-learning的方法訓(xùn)練出的決策模型可以讓客戶端根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境動態(tài)地做出相應(yīng)的碼率決策。實(shí)驗(yàn)結(jié)果表明,結(jié)合Q-learning的決策算法比傳統(tǒng)算法的觀看體驗(yàn)(Quality of Experience,QoE)提升9.7%。但基于Q-Learning進(jìn)行模型訓(xùn)練,存在對環(huán)境的變化反應(yīng)較慢的問題,針對一個(gè)給定狀態(tài),當(dāng)一個(gè)動作對應(yīng)的Q值相比于其他動作較低時(shí),該動作被選擇的概率較低,導(dǎo)致該動作的信息獲取變慢,造成該動作對應(yīng)的Q值修改速度慢。在低學(xué)習(xí)率的情況下,上述問題尤為明顯。針對這個(gè)問題,Claeys等人[40]又提出了一種頻率調(diào)整Q-Learning算法(Frequency Adjusted Q-Learning Approach),對模型的更新方式進(jìn)行了修改,這樣的改進(jìn)有效避免了模型中Q值低的動作不易被選擇的問題,加快模型的更新,進(jìn)一步提升模型的性能。Martin等人[41-42]于2016年提出基于Q-Learing自適應(yīng)方法DASH-QL來提升視頻播放的QoE。該系統(tǒng)考慮的網(wǎng)絡(luò)狀態(tài)包括當(dāng)前緩存長度、當(dāng)前預(yù)測帶寬和上一個(gè)視頻塊質(zhì)量,并依據(jù)這些狀態(tài)信息決策下一時(shí)刻的視頻碼率。實(shí)驗(yàn)結(jié)果表明,DASH-QL取得了更高的QoE,且收斂速度更快。
Q-Learning算法在處理連續(xù)狀態(tài)空間時(shí),只能將狀態(tài)變量的連續(xù)取值進(jìn)行大致的切分。當(dāng)進(jìn)行相對細(xì)致的切分時(shí),會導(dǎo)致維度爆炸問題,并且在實(shí)際測試環(huán)境中很難把每個(gè)區(qū)間都不斷地遍歷,增加了訓(xùn)練DRL智能體的難度。為解決這個(gè)問題,Gadaleta等人[43]提出用基于DQN的機(jī)器學(xué)習(xí)框架,通過神經(jīng)網(wǎng)絡(luò)近似動作值函數(shù),并使用經(jīng)驗(yàn)回放機(jī)制加速模型收斂。系統(tǒng)狀態(tài)包括前一個(gè)視頻質(zhì)量qt-1、當(dāng)前緩存長度Bt以及下一個(gè)可選取的視頻塊特征等,結(jié)合當(dāng)前視頻質(zhì)量qt來選擇下一時(shí)刻請求的視頻塊碼率。Gadaleta等人在仿真和真實(shí)環(huán)境都進(jìn)行了系統(tǒng)部署,實(shí)驗(yàn)結(jié)果顯示D-Dash在各種帶寬條件下對QoE都有提升,并且D-Dash框架收斂速度更快。
Mao等人于2017年提出Pensieve[44],該模型通過客戶端視頻播放器獲取過去8個(gè)歷史時(shí)刻信息,據(jù)此生成系統(tǒng)狀態(tài),包括下載每個(gè)視頻塊的平均吞吐量、下載每個(gè)視頻塊所花的時(shí)間、當(dāng)前緩存長度、上一個(gè)請求片段的碼率、剩余未下載的視頻塊數(shù)量以及可供下載的視頻碼率。Pensieve基于系統(tǒng)狀態(tài)選擇下一個(gè)視頻塊的請求碼率,實(shí)驗(yàn)結(jié)果顯示Pensieve比傳統(tǒng)算法實(shí)現(xiàn)了更高的QoE。
為了將Pensieve在實(shí)時(shí)運(yùn)行過程中的計(jì)算開銷降低,并進(jìn)一步提升Pensieve模型的性能,2020年Huang等人將DRL與傳統(tǒng)算法BBA進(jìn)行結(jié)合,提出了Stick網(wǎng)絡(luò)[45]。Stick將原本Pensieve的離散動作修改為連續(xù)動作,即 BBA決策的上下邊界。客戶端通過修改后BBA算法的上下邊界和當(dāng)前緩存長度去選擇請求的下一個(gè)視頻塊碼率。Huang等人同時(shí)又提出一個(gè)輕量級的Trigger網(wǎng)絡(luò),用來決策當(dāng)前情況是否需要調(diào)用Stick網(wǎng)絡(luò)來對BBA的上下邊界進(jìn)行調(diào)整,以減少頻繁使用Stick算法帶來的計(jì)算開銷。Huang等人先在仿真系統(tǒng)上進(jìn)行了驗(yàn)證,并在以Dash.js為基礎(chǔ)的真實(shí)系統(tǒng)上進(jìn)行了部署。實(shí)驗(yàn)結(jié)果表明,相比于原本的Pensieve模型,Stick+Trigger網(wǎng)絡(luò)模型可以提升9.41%的性能,并減少88%的計(jì)算開銷。
受Pensieve[44]模型的啟發(fā),Guan等人[46]于2020年提出Perm模型,運(yùn)用DRL技術(shù)優(yōu)化視頻點(diǎn)播在多徑傳輸情況下的用戶體驗(yàn)。Perm在Pensieve原有的架構(gòu)中加入了一個(gè)新的Actor網(wǎng)絡(luò)負(fù)責(zé)流量在各條路徑上的分配,原有的Actor網(wǎng)絡(luò)依舊負(fù)責(zé)下一個(gè)視頻塊的碼率選擇,Critic網(wǎng)絡(luò)負(fù)責(zé)協(xié)助優(yōu)化兩個(gè)Actor網(wǎng)絡(luò)的參數(shù)。因?yàn)榱髁糠峙涞膭幼鳛檫B續(xù)取值,Perm使用DDPG方法進(jìn)行訓(xùn)練。他們在仿真系統(tǒng)和真實(shí)系統(tǒng)中都進(jìn)行了系統(tǒng)的部署,兩條傳輸路徑分別為4G與WiFi。與傳統(tǒng)多徑算法和單條路徑的流媒體系統(tǒng)相比,QoE與QoS(Quality of Service)提升了10%~15%。
2.2.2 360全景視頻傳輸
隨著全景攝像機(jī)和頭戴式設(shè)備的發(fā)展,360全景視頻形式逐漸流行。而完整的360全景視頻的傳輸通常需要極大的帶寬支持,可通過視角分塊(Tile)的方法解決。為了保證用戶的QoE,需要對用戶的視角進(jìn)行預(yù)測,并在視角區(qū)域內(nèi)為用戶分配盡可能多的帶寬去下載更清晰的視頻。
Zhang等人[47]于2019年提出結(jié)合LSTM神經(jīng)網(wǎng)絡(luò)的Actor-Critic模型的DRL360流媒體框架。客戶端將之前各個(gè)時(shí)間點(diǎn)上網(wǎng)絡(luò)的帶寬和視角范圍作為LSTM網(wǎng)絡(luò)的輸入,LSTM網(wǎng)絡(luò)預(yù)測下一時(shí)刻的帶寬和視角位置。隨后,將LSTM網(wǎng)絡(luò)預(yù)測的帶寬和視角位置,結(jié)合當(dāng)前視頻緩存長度以及保存的下一時(shí)刻可獲取的各個(gè)視頻塊大小,作為Actor-Critic模型的輸入,讓其決策下一時(shí)刻在預(yù)測視角范圍內(nèi)所有Tile的碼率。他們將DRL360部署在真實(shí)系統(tǒng)上并與已有的算法進(jìn)行比較。實(shí)驗(yàn)結(jié)果表明,在多種帶寬環(huán)境下,DRL360平均提升了系統(tǒng)20%~30%的QoE。
由于360視頻的決策是指數(shù)級的決策空間,因此直接同時(shí)對360視頻的每個(gè)Tile都做決策是非常困難的。假設(shè)有N個(gè)Tile,每個(gè)Tile都有k個(gè)碼率,則動作空間共有Nk個(gè)決策。DRL360模型為了避免這個(gè)問題,碼率決策只是做了預(yù)測視角范圍內(nèi)的視頻塊碼率決策,并沒有考慮所有Tile的視頻塊決策。Fu等學(xué)者[48]為解決這個(gè)問題,提出基于序列化的ABR 360視頻決策模型,將其命名為360SRL。假設(shè)360視頻被分為N個(gè)Tile,每個(gè)Tile處都有k種碼率可以選擇。他們的模型通過連續(xù)做N次視頻塊碼率決策,將Nk的動作空間降低到每次動作空間只有k,但連續(xù)做N次決策,從而可以對360度視頻的所有Tile做出碼率決策。在決策過程中,360SRL根據(jù)當(dāng)前網(wǎng)絡(luò)的狀態(tài)去輪番選擇每個(gè)Tile下一時(shí)刻的碼率,系統(tǒng)狀態(tài)包括過去m個(gè)時(shí)間點(diǎn)下載視頻塊的平均吞吐量、此處Tile可選擇的視頻塊大小、上一時(shí)刻該位置Tile在視角范圍的預(yù)測概率、播放緩存長度、此處Tile出現(xiàn)在視角范圍內(nèi)的預(yù)測概率,以及上一時(shí)刻選擇的所有Tile的視頻塊總大小。360SRL使用DQN網(wǎng)絡(luò)來訓(xùn)練模型。仿真系統(tǒng)實(shí)驗(yàn)表明,360SRL相較于傳統(tǒng)360視頻算法,對平均QoE的提升達(dá)到了約12%。
2.2.3直播
實(shí)時(shí)的視頻流傳輸(Live Streaming)也是如今流媒體應(yīng)用中一個(gè)重要研究領(lǐng)域。由于觀看直播視頻的用戶一般期望客戶端播放視頻的時(shí)延較小,因此直播系統(tǒng)的碼率選擇問題比點(diǎn)播更加困難,視頻的卡頓、碼率的切換和緩存長度都會導(dǎo)致用戶體驗(yàn)的下降。
Hooft等人于2015年[49]提出引入強(qiáng)化學(xué)習(xí)的方法,在直播系統(tǒng)中對兩個(gè)傳統(tǒng)啟發(fā)式方法(MSS和QoE-RAHAS)做參數(shù)優(yōu)化,以提高這兩個(gè)方法的性能。他們通過強(qiáng)化學(xué)習(xí)感知網(wǎng)絡(luò)的帶寬特性,提高客戶端對網(wǎng)絡(luò)帶寬的預(yù)測能力。在直播系統(tǒng)中,獎(jiǎng)勵(lì)函數(shù)也被重新定義,緩存的長度作為一項(xiàng)線性的懲罰。Hooft等人使用Q-Leaning模型訓(xùn)練,模型考慮的狀態(tài)包括當(dāng)前可用帶寬和當(dāng)前帶寬變化劇烈程度。隨后使用兩個(gè)啟發(fā)式模型去決策下一時(shí)刻選擇的視頻碼率,再通過獎(jiǎng)勵(lì)函數(shù)去修改兩個(gè)啟發(fā)式算法中的參數(shù)。NS-3仿真平臺下的實(shí)驗(yàn)表明,使用強(qiáng)化學(xué)習(xí)方法優(yōu)化傳統(tǒng)啟發(fā)式方法的參數(shù)后,可以使MSS算法與QoE-RAHAS算法得到一定程度的改進(jìn),在保證視頻質(zhì)量相對較好的情況下,時(shí)延分別減少2.5%與8.3%。
Huang等人[50]提出,視頻的碼率并不能總是精準(zhǔn)地反映視頻質(zhì)量。視頻質(zhì)量和編碼方式與圖像各種特征都息息相關(guān),應(yīng)該用更科學(xué)準(zhǔn)確的方法為視頻質(zhì)量打分,然后據(jù)此進(jìn)行直播碼率的選擇。為解決這個(gè)問題,Huang等人[50]提出視頻質(zhì)量感知碼率控制(Video Quality Aware Rate Control,QARC)系統(tǒng)。該系統(tǒng)中視頻質(zhì)量預(yù)測網(wǎng)絡(luò) (Video Quality Prediction Network,VQPN)設(shè)計(jì)結(jié)合了Netflix提出的VMAF( Video Multi-method Assessment Fusion)評價(jià)標(biāo)準(zhǔn),可以根據(jù)之前時(shí)刻及當(dāng)前時(shí)刻的網(wǎng)絡(luò)狀態(tài)和視頻幀等特征預(yù)測下一時(shí)刻的視頻質(zhì)量。系統(tǒng)中的視頻質(zhì)量強(qiáng)化學(xué)習(xí)選擇網(wǎng)絡(luò)(Video Quality Reinforcement Learning,VQRL)為A3C架構(gòu),通過綜合考慮下一時(shí)刻的視頻質(zhì)量、當(dāng)前的網(wǎng)絡(luò)狀態(tài)等各個(gè)特征,決定下一時(shí)刻選取的直播碼率。在仿真環(huán)境下將QARC和目前多個(gè)現(xiàn)有多個(gè)算法的對比結(jié)果顯示,QARC對平均視頻質(zhì)量提升最高可達(dá)18%~25%,并且減少了23%~45%的平均延時(shí)。
隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,傳輸數(shù)據(jù)量也不斷增加。傳統(tǒng)的路由算法路由策略較為固定,且很難感知實(shí)時(shí)的網(wǎng)絡(luò)狀況,易造成較大的傳輸時(shí)延和網(wǎng)絡(luò)資源的浪費(fèi)。DRL提供了一種解決路由問題的新手段,無需對網(wǎng)絡(luò)環(huán)境進(jìn)行建模,通過智能體與網(wǎng)絡(luò)環(huán)境的不斷交互,即可實(shí)現(xiàn)端到端的智能路由算法。圖5為基于DRL的路由算法框架圖。路由決策控制器為強(qiáng)化學(xué)習(xí)智能體,通過觀測實(shí)時(shí)網(wǎng)絡(luò)環(huán)境獲取相應(yīng)狀態(tài)信息,經(jīng)過神經(jīng)網(wǎng)絡(luò)處理后得到路由決策,進(jìn)而執(zhí)行數(shù)據(jù)包的傳輸。DRL在路由問題中的應(yīng)用主要包含數(shù)據(jù)包路由和域內(nèi)流量規(guī)劃兩類問題:在數(shù)據(jù)包路由問題中,狀態(tài)信息一般為數(shù)據(jù)包目的節(jié)點(diǎn),路由決策為數(shù)據(jù)包下一跳節(jié)點(diǎn),優(yōu)化目標(biāo)為降低數(shù)據(jù)包平均傳輸時(shí)延;在域內(nèi)路由規(guī)劃問題中,狀態(tài)信息一般為流量需求矩陣,路由決策為數(shù)據(jù)流鏈路分配比,優(yōu)化目標(biāo)為平衡鏈路負(fù)載。

圖5 基于DRL的路由算法框架圖Fig.5 Framework of DRL-based routing algorithm
2.3.1 數(shù)據(jù)包路由
Boyan 等人[51]首次將強(qiáng)化學(xué)習(xí)應(yīng)用于數(shù)據(jù)包路由問題中,提出了動態(tài)的路由轉(zhuǎn)發(fā)策略Q-routing算法,以最小化數(shù)據(jù)包的平均傳輸時(shí)延。各路由節(jié)點(diǎn)均視為獨(dú)立的智能體,并擁有獨(dú)立的Q值表用于存儲各狀態(tài)動作值函數(shù),以此作為節(jié)點(diǎn)間傳輸時(shí)間的估計(jì)。Q-routing算法中的狀態(tài)空間為數(shù)據(jù)包的目的節(jié)點(diǎn)編號,動作空間為各路由器的相鄰節(jié)點(diǎn),獎(jiǎng)勵(lì)為數(shù)據(jù)包的鏈路傳輸時(shí)延和排隊(duì)時(shí)延。各路由器基于Q-learning算法進(jìn)行訓(xùn)練,當(dāng)數(shù)據(jù)包從當(dāng)前節(jié)點(diǎn)傳輸至所選動作相應(yīng)節(jié)點(diǎn)后,當(dāng)前節(jié)點(diǎn)將收到包含對應(yīng)獎(jiǎng)勵(lì)的反饋信息,進(jìn)而完成Q值表的更新。在與最短路徑算法的對比實(shí)驗(yàn)中,Q-routing算法能實(shí)現(xiàn)較低的數(shù)據(jù)包傳輸時(shí)延,并能適應(yīng)動態(tài)的網(wǎng)絡(luò)環(huán)境。然而,Q-routing算法在網(wǎng)絡(luò)負(fù)載較大時(shí)無法及時(shí)調(diào)整路由轉(zhuǎn)發(fā)策略,且對于網(wǎng)絡(luò)負(fù)載變化適應(yīng)較緩慢。為解決上述問題,Choi等人[52]提出了PQ-routing算法,利用歷史的路由信息來預(yù)測鏈路流量;Kumar等人[53]提出了DRQ-routing算法,利用前向和后向探索信息來學(xué)習(xí)更優(yōu)的路由決策。
Mukhutdinov等人[56]基于多智能體DQN算法,設(shè)計(jì)了動態(tài)的數(shù)據(jù)包路由算法DQN-routing,以降低數(shù)據(jù)包的傳輸時(shí)延。在多智能體強(qiáng)化學(xué)習(xí)中,各路由器被視為獨(dú)立的智能體,且擁有獨(dú)立的神經(jīng)網(wǎng)絡(luò)用于路由決策。各智能體僅可觀測到局部狀態(tài)信息,其中包含數(shù)據(jù)包的目的節(jié)點(diǎn)編號、當(dāng)前路由器編號及其相鄰節(jié)點(diǎn)編號。此外,動作空間和獎(jiǎng)勵(lì)函數(shù)與Q-routing算法[51]一致。各智能體的神經(jīng)網(wǎng)絡(luò)參數(shù)全局共享,且其更新方式保持全局同步性,但在決策過程中保持獨(dú)立性,即各智能體的路由決策無需其他智能體的參與。在仿真實(shí)驗(yàn)中,相比于基于鏈路狀態(tài)的路由算法和Q-routing算法,DQN-routing算法在動態(tài)變化的網(wǎng)絡(luò)負(fù)載下均能達(dá)到最低的數(shù)據(jù)包傳輸時(shí)延。
由于在集中式強(qiáng)化學(xué)習(xí)中,參數(shù)聚合和參數(shù)分發(fā)過程會造成巨大的帶寬消耗,進(jìn)而影響網(wǎng)絡(luò)中數(shù)據(jù)包的傳輸。為了解決該問題,You等人[57]將完全分布式多智能體強(qiáng)化學(xué)習(xí)應(yīng)用于數(shù)據(jù)包路由問題中,以最小化數(shù)據(jù)包平均傳輸時(shí)延為目標(biāo),設(shè)計(jì)了端到端的動態(tài)數(shù)據(jù)包路由算法DQRC。各路由器視為獨(dú)立的智能體,均擁有獨(dú)特的神經(jīng)網(wǎng)絡(luò)用于參數(shù)更新和動作選擇,且其學(xué)習(xí)過程和決策過程均為分布式。DQRC使用LSTM神經(jīng)網(wǎng)絡(luò)處理時(shí)序相關(guān)的輸入信息。與Q-routing算法[51]輸入信息僅包含數(shù)據(jù)包目的節(jié)點(diǎn)編號不同,DQRC算法加入了歷史決策、隊(duì)列中未來數(shù)據(jù)包目的節(jié)點(diǎn)以及相鄰節(jié)點(diǎn)隊(duì)列長度等狀態(tài)信息,以便于智能體學(xué)習(xí)到自適應(yīng)的數(shù)據(jù)包路由轉(zhuǎn)發(fā)策略。在北美AT&T網(wǎng)絡(luò)[58]拓?fù)涞姆抡姝h(huán)境中,DQRC算法在優(yōu)越性和穩(wěn)定性上均優(yōu)于Q-routing,Backpressure[59]等對比算法。此外,DQRC算法對于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和相鄰節(jié)點(diǎn)信息交互間隔具有較強(qiáng)的魯棒性。
不同于以上數(shù)據(jù)包路由算法以降低數(shù)據(jù)包傳輸時(shí)延為優(yōu)化目標(biāo),Ali等人[60]基于DDQN強(qiáng)化學(xué)習(xí)算法[61],設(shè)計(jì)了分層數(shù)據(jù)包路由算法DDQN-routing,以平衡網(wǎng)絡(luò)鏈路負(fù)載。該算法以節(jié)點(diǎn)間鏈路傳輸時(shí)延為分類標(biāo)準(zhǔn),將網(wǎng)絡(luò)中的節(jié)點(diǎn)分為多個(gè)類別,且各類別均擁有一個(gè)“隊(duì)長節(jié)點(diǎn)”以輔助源節(jié)點(diǎn)的路由決策。“隊(duì)長節(jié)點(diǎn)”僅可觀測到局部信息,其中包括鏈路利用率、鏈路傳輸時(shí)延和隊(duì)列排隊(duì)時(shí)延。此外,獎(jiǎng)勵(lì)函數(shù)包含全局獎(jiǎng)勵(lì)和局部獎(jiǎng)勵(lì)兩部分,其中前者與源節(jié)點(diǎn)對于已選鏈路的滿意度有關(guān),后者與已選鏈路的傳輸時(shí)延、排隊(duì)時(shí)延和丟包率有關(guān)。為了解決DQN算法中的過估計(jì)問題,DDQN-routing算法構(gòu)建了兩個(gè)神經(jīng)網(wǎng)絡(luò),分別用于選擇貪婪策略和評估動作優(yōu)劣,并引入了優(yōu)先經(jīng)驗(yàn)回放算法,以最大化利用經(jīng)驗(yàn)回放池中的采樣數(shù)據(jù)。在仿真實(shí)驗(yàn)中,DDQN-routing算法能適應(yīng)動態(tài)的數(shù)據(jù)包請求和較大的網(wǎng)絡(luò)拓?fù)洌⒛苡行У乩面溌焚Y源和平衡鏈路負(fù)載。
2.3.2 域內(nèi)流量規(guī)劃
Xu等人[62]將DRL應(yīng)用于域內(nèi)流量工程(Traffic Engineering,TE)問題中,并提出了經(jīng)驗(yàn)驅(qū)動的域內(nèi)流量工程方案DRL-TE。考慮到直接應(yīng)用DDPG算法無法達(dá)到良好的性能表現(xiàn),作者提出了兩種改進(jìn)措施。一是TE-aware探索機(jī)制,即以的概率選擇基準(zhǔn)TE方案(如最短路徑算法等),以1-的概率選擇神經(jīng)網(wǎng)絡(luò)的輸出方案,以達(dá)到加速智能體學(xué)習(xí)的效果;二是優(yōu)先經(jīng)驗(yàn)回放算法,即以時(shí)序差分?jǐn)?shù)值作為樣本選取概率的基準(zhǔn),進(jìn)而高效利用經(jīng)驗(yàn)回放池中的環(huán)境轉(zhuǎn)移樣本。強(qiáng)化學(xué)習(xí)狀態(tài)空間包含吞吐量和時(shí)延兩部分,動作空間為數(shù)據(jù)鏈路分配比,獎(jiǎng)勵(lì)設(shè)置為系統(tǒng)效用函數(shù)。在NS-3的仿真實(shí)驗(yàn)平臺上[63],DRL-TE相比于最短路徑、負(fù)載均衡等算法能達(dá)到更短的時(shí)延和更大的網(wǎng)絡(luò)吞吐量。
Stampa等人[54]將DRL應(yīng)用于軟件定義網(wǎng)絡(luò)(Software-Defined Network,SDN)中并提出了SDN-routing算法,以優(yōu)化數(shù)據(jù)流傳輸時(shí)延。基于單智能體強(qiáng)化學(xué)習(xí)算法DDPG[15],SDN-routing算法將SDN控制器視為集中式智能體,該智能體能夠觀測網(wǎng)絡(luò)的全局信息,并控制網(wǎng)絡(luò)中各路由器的數(shù)據(jù)流分配決策。其中,強(qiáng)化學(xué)習(xí)狀態(tài)空間為網(wǎng)絡(luò)流量需求矩陣,代表各源點(diǎn)-終點(diǎn)對間的帶寬需求;動作空間為數(shù)據(jù)流的鏈路分配比;獎(jiǎng)勵(lì)設(shè)置為數(shù)據(jù)流傳輸時(shí)延。智能體的訓(xùn)練過程和決策過程均為集中式,即允許各路由器間交互環(huán)境轉(zhuǎn)變信息和神經(jīng)網(wǎng)絡(luò)參數(shù)信息。在仿真實(shí)驗(yàn)中,SDN-routing算法在各流量等級下性能表現(xiàn)均優(yōu)于比較算法。
Valadarsky等人[55]考慮了與SDN-routing[54]相似的路由問題,考慮到監(jiān)督學(xué)習(xí)無法準(zhǔn)確估計(jì)未來的網(wǎng)絡(luò)流量需求,基于TRPO算法訓(xùn)練端到端學(xué)習(xí)的智能體,以平衡網(wǎng)絡(luò)鏈路負(fù)載。由于原始問題中動作空間過大,強(qiáng)化學(xué)習(xí)算法難以收斂。Valadarsky等人將輸出神經(jīng)元個(gè)數(shù)由|E||V|2減少為|E|(其中,|V|代表網(wǎng)絡(luò)拓?fù)渲新酚晒?jié)點(diǎn)數(shù)目,|E|代表鏈路數(shù)目),并采用Softmin算法計(jì)算數(shù)據(jù)流鏈路分配比。智能體以歷史流量需求矩陣作為狀態(tài)信息,并以歷史鏈路利用率與最優(yōu)鏈路利用率的比值作為獎(jiǎng)勵(lì),基于TRPO算法進(jìn)行強(qiáng)化學(xué)習(xí)訓(xùn)練。在仿真實(shí)驗(yàn)中,Valadarsky等人基于稀疏/非稀疏的重力/雙峰模型生成不同類型的流量需求矩陣來驗(yàn)證算法性能。相比于比較算法,作者提出的算法能取得最高的網(wǎng)絡(luò)鏈路利用率,并在性能表現(xiàn)上接近最優(yōu)路由規(guī)劃。
Yu等人[64]基于DDPG算法設(shè)計(jì)了通用的SDN路由優(yōu)化算法DROM。強(qiáng)化學(xué)習(xí)狀態(tài)空間為當(dāng)前網(wǎng)絡(luò)負(fù)載的流量需求矩陣,動作空間為鏈路的權(quán)重,獎(jiǎng)勵(lì)函數(shù)為預(yù)設(shè)的系統(tǒng)效用函數(shù)(如時(shí)延、吞吐量等)。Yu等人采用Sprint network骨干網(wǎng)絡(luò)[65]作為網(wǎng)絡(luò)拓?fù)洌⒒谥亓δP蜕啥鄠€(gè)流量需求矩陣。在不同的網(wǎng)絡(luò)負(fù)載下,DROM收斂效果穩(wěn)定,并相比于OSPF算法能實(shí)現(xiàn)更低的傳輸時(shí)延。
Sun等人[66]結(jié)合RNN和DDPG算法,設(shè)計(jì)SDN路由優(yōu)化算法TIDE,以處理具有時(shí)間序列特性的網(wǎng)絡(luò)狀態(tài)。算法架構(gòu)分為三層,由下到上分別是數(shù)據(jù)層實(shí)現(xiàn)數(shù)據(jù)流的傳輸、控制層收集網(wǎng)絡(luò)狀態(tài)和傳遞路由決策、AI決策層實(shí)現(xiàn)路由策略的生成更新。算法循環(huán)由三部分組成,分別為狀態(tài)與獎(jiǎng)勵(lì)的收集、策略執(zhí)行和策略提升。強(qiáng)化學(xué)習(xí)狀態(tài)空間為網(wǎng)絡(luò)狀態(tài)矩陣,動作空間為鏈路權(quán)重矩陣,獎(jiǎng)勵(lì)函數(shù)為可自定義的QoS函數(shù)(即為時(shí)延、吞吐量、丟包率的加權(quán)和)。智能體以RNN作為決策神經(jīng)網(wǎng)絡(luò),以提取時(shí)序相關(guān)的網(wǎng)絡(luò)狀態(tài)中的特征信息。Sun等人在網(wǎng)絡(luò)拓?fù)渲胁渴鹫鎸?shí)的終端、服務(wù)器和路由器,以驗(yàn)證算法的有效性。在不同的網(wǎng)絡(luò)負(fù)載下,TIDE相比于最短路徑算法能實(shí)現(xiàn)更低的傳輸時(shí)延,且算法復(fù)雜度低、計(jì)算速度快。
TCP是有連接的可靠數(shù)據(jù)傳輸協(xié)議。擁塞控制是TCP的核心部分,直接影響著TCP的傳輸性能。如圖6所示,在傳統(tǒng)方法中,部署于TCP數(shù)據(jù)發(fā)送端的擁塞控制算法通過發(fā)送數(shù)據(jù)包而獲得關(guān)于網(wǎng)絡(luò)狀況的反饋信息。基于這些反饋信息,擁塞控制算法調(diào)節(jié)擁塞控制窗口或者數(shù)據(jù)發(fā)送速率,從而避免網(wǎng)絡(luò)擁塞,提高數(shù)據(jù)傳輸效率。擁塞控制算法需要在保證高帶寬利用率、低時(shí)延的同時(shí),也能夠保證算法的公平性和穩(wěn)定性。目前互聯(lián)網(wǎng)中使用比較廣泛的傳統(tǒng)擁塞控制算法是Cubic[67]和 BBR[68]。

圖6 TCP擁塞控制原理框圖Fig.6 Framework of TCP congestion control
強(qiáng)化學(xué)習(xí)應(yīng)用于TCP擁塞控制的相關(guān)研究工作很早就已經(jīng)開始了,例如文獻(xiàn)[69-70]。隨著深度神經(jīng)網(wǎng)絡(luò)的引入,基于DRL的擁塞控制得到了學(xué)術(shù)界更多的關(guān)注。本節(jié)把基于DRL的擁塞控制研究工作粗略地分為如下三類:面向TCP整體性能的擁塞控制、針對特定傳輸問題的擁塞控制和與傳統(tǒng)算法相結(jié)合的擁塞控制。
2.4.1 面向TCP整體性能的擁塞控制
這類研究工作的特點(diǎn)是,拋棄傳統(tǒng)擁塞控制決策機(jī)制,讓DRL的決策網(wǎng)絡(luò)來選擇擁塞控制的調(diào)節(jié)動作。這些工作的目的是提高傳統(tǒng)互聯(lián)網(wǎng)架構(gòu)中TCP數(shù)據(jù)傳輸?shù)恼w性能,例如高吞吐量和低時(shí)延,并盡可能保證一定的公平性和魯棒性。因此這些較早期的工作更加注重于如何選擇強(qiáng)化學(xué)習(xí)的狀態(tài)、動作、獎(jiǎng)勵(lì)函數(shù)及訓(xùn)練算法等。
Li等人[71]在2018年提出了基于Q-learning的自適應(yīng)擁塞控制算法QTCP,其強(qiáng)化學(xué)習(xí)框架包含連續(xù)的狀態(tài)空間。這些狀態(tài)分別是發(fā)送包的平均間隔時(shí)間、接收到ACK包的平均間隔時(shí)間和平均RTT。動作空間則為離散的,分別為對擁塞窗口增加10 Byte、減小1 Byte和保持不變。QTCP的效用函數(shù)定義為:
U=a·log(throughput)-b·log(RTT),
(19)
之后根據(jù)當(dāng)前時(shí)間段的效用函數(shù)相對于前一時(shí)間段是否升高而選擇一個(gè)正值或負(fù)值常數(shù)作為當(dāng)前時(shí)間步的獎(jiǎng)勵(lì)。在多種網(wǎng)絡(luò)場景下,QTCP表現(xiàn)出優(yōu)于TCP NewReno的性能。
Yan等人[72]在2018年提出了基于模仿學(xué)習(xí)的擁塞控制算法Indigo。Indigo的離線訓(xùn)練在可重復(fù)實(shí)驗(yàn)的仿真器Pantheon[72]中開展,因此可以獲取網(wǎng)絡(luò)場景信息作為專家知識,從而使用模仿學(xué)習(xí)作為其訓(xùn)練算法。Indigo使用單層的LSTM網(wǎng)絡(luò)作為決策網(wǎng)絡(luò),并且采用連續(xù)的狀態(tài)空間,包括排隊(duì)延遲的指數(shù)加權(quán)移動平均值、發(fā)送速率的指數(shù)加權(quán)移動平均值、接收速率的指數(shù)加權(quán)移動平均值、當(dāng)前擁塞窗口的大小以及前一步采取的動作。其動作為離散的5個(gè)動作,它們分別是對擁塞窗口進(jìn)行“/2”,“-10”,“+0”,“+10”,“×2”操作。Indigo在訓(xùn)練過的場景中表現(xiàn)出優(yōu)越的性能。但是由于需要針對每個(gè)訓(xùn)練場景精心選擇專家知識,Indigo只能在有限的網(wǎng)絡(luò)場景中訓(xùn)練。
Jay等人[73]在2019年提出了基于DRL的擁塞控制算法Aurora。Aurora的輸入狀態(tài)包括延遲梯度、延遲比和發(fā)送比率。Aurora把神經(jīng)網(wǎng)絡(luò)的輸入狀態(tài)設(shè)置為當(dāng)前時(shí)刻之前10個(gè)時(shí)間片的狀態(tài)組合,從而獲取更充分的歷史信息。此外,Aurora也改變了之前基于離散動作的速率調(diào)節(jié)方式,而是用如下的公式去連續(xù)地調(diào)節(jié)發(fā)送速率。
(20)
式中,xt為數(shù)據(jù)包的發(fā)送速率,at為神經(jīng)網(wǎng)絡(luò)的輸出,α為常數(shù)。Aurora的決策網(wǎng)絡(luò)為兩層全連接神經(jīng)網(wǎng)絡(luò)。Aurora使用PPO算法進(jìn)行訓(xùn)練。將Aurora與TCP Cubic和TCP BBR等算法進(jìn)行對比,發(fā)現(xiàn)Aurora在固定帶寬和動態(tài)帶寬的單鏈路網(wǎng)絡(luò)場景下,都表現(xiàn)出超過傳統(tǒng)算法的性能。
2.4.2 針對特定傳輸問題的擁塞控制
本節(jié)的關(guān)注點(diǎn)為,在設(shè)計(jì)DRL算法時(shí),如何有效結(jié)合互聯(lián)網(wǎng)中TCP數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)特征或流量特征,或者如何解決強(qiáng)化學(xué)習(xí)過程與擁塞控制過程的不匹配問題。這部分所要介紹的工作包括:針對短流的DRL算法、融合多流TCP的DRL算法,以及兩個(gè)關(guān)于解決延遲問題的工作。
Nie等人[74]對百度移動搜索服務(wù)的數(shù)據(jù)流進(jìn)行測量,發(fā)現(xiàn)超過80%的TCP數(shù)據(jù)流都在算法的慢啟動階段便已經(jīng)傳輸完成。因此對于這些數(shù)據(jù)流來說,決定其帶寬利用率等性能的關(guān)鍵要素是初始擁塞窗口,而不是擁塞控制算法的速率調(diào)節(jié)機(jī)制。基于這樣的網(wǎng)絡(luò)流特征,他們在2019年提出TCP-RL[74]來動態(tài)地選擇初始擁塞窗口。TCP-RL把初始擁塞窗口的選擇看做一個(gè)多臂老虎機(jī)問題,并用折扣UCB算法對其進(jìn)行訓(xùn)練。而在速率調(diào)節(jié)階段,TCP-RL并未使用DRL的神經(jīng)網(wǎng)絡(luò)來直接產(chǎn)生調(diào)節(jié)動作,而是使用神經(jīng)網(wǎng)絡(luò)的輸出來選擇現(xiàn)存的14個(gè)擁塞控制算法之一,作為當(dāng)前時(shí)間段的調(diào)節(jié)算法。研究人員把TCP-RL的初始擁塞窗口選擇機(jī)制部署在百度移動搜索服務(wù)的一個(gè)數(shù)據(jù)中心。超過一年的測量顯示,TCP-RL可以提高23%的平均TCP響應(yīng)時(shí)間。
多路徑TCP允許數(shù)據(jù)發(fā)送端連接多個(gè)路徑來最大化帶寬資源利用率。Xu等人[75]于2019年提出了基于DRL的多路徑TCP擁塞控制算法——DRL-CC。這一算法選擇LSTM網(wǎng)絡(luò)作為DRL的決策網(wǎng)絡(luò),并使用Actor-critic算法進(jìn)行訓(xùn)練。每個(gè)TCP子流計(jì)算一個(gè)時(shí)間片的發(fā)送速率、有效吞吐量、平均RTT、平均RTT偏差和擁塞窗口作為當(dāng)前時(shí)間片的狀態(tài)。所有TCP子流的過去N個(gè)時(shí)間片的所有狀態(tài)組合在一起作為DRL的輸入狀態(tài)。在每個(gè)決策的時(shí)間點(diǎn),DRL-CC只對一個(gè)子流產(chǎn)生一個(gè)連續(xù)的調(diào)節(jié)動作。Xu等人將DRL-CC部署在Linux內(nèi)核的多流TCP協(xié)議中,并在簡單的鏈路設(shè)置中測試其與其他常見的多路徑TCP擁塞控制算法。實(shí)驗(yàn)表明,DRL-CC在不犧牲公平性的情況下取得了更高的吞吐量。類似的基于DRL的多路徑TCP擁塞控制算法還有Li等人在2019年提出的基于Q-learning的SmartCC[76]。
Xiao等人[77]認(rèn)為,對于擁塞控制問題來說,數(shù)據(jù)發(fā)送端執(zhí)行動作后,需要經(jīng)過特定的時(shí)間延遲之后才能得到對應(yīng)的獎(jiǎng)勵(lì)和下一個(gè)狀態(tài)。而數(shù)據(jù)發(fā)送端強(qiáng)化學(xué)習(xí)時(shí)間步長的長度并不與這個(gè)時(shí)間延遲一致。為了盡快適應(yīng)網(wǎng)絡(luò)變化情況,時(shí)間步長被設(shè)置得更小。因此這并不是一個(gè)標(biāo)準(zhǔn)的強(qiáng)化學(xué)習(xí)過程。Xiao等人提出的Drinc[77]使用特殊的緩存回放機(jī)制來解決這個(gè)延遲問題,即每個(gè)時(shí)間步得到的(狀態(tài),動作,獎(jiǎng)勵(lì))數(shù)據(jù)對都會保存在緩存中,并設(shè)定當(dāng)前時(shí)間步測量的RTT作為前面所述的時(shí)間延遲的一個(gè)估計(jì),然后根據(jù)這個(gè)延遲估計(jì)在緩存中重新組合成合理的數(shù)據(jù)對(狀態(tài),動作,獎(jiǎng)勵(lì),下一個(gè)狀態(tài))來用于訓(xùn)練。除此之外,Drinc選擇使用連續(xù)的64個(gè)時(shí)間片的狀態(tài)組合作為神經(jīng)網(wǎng)絡(luò)的輸入狀態(tài),并且使用節(jié)點(diǎn)更多、結(jié)構(gòu)更復(fù)雜(包括全連接層、LSTM層、卷積層、池化層等)的神經(jīng)網(wǎng)絡(luò)作為決策網(wǎng)絡(luò)。有研究人員提出基于DRL的擁塞控制算法無法部署的主要障礙是,神經(jīng)網(wǎng)絡(luò)做出決策需要一定的時(shí)間,而在這個(gè)時(shí)間內(nèi)不能處理的網(wǎng)絡(luò)擁塞控制請求。為解決這個(gè)問題,Sivakumar等人提出MVFST-RL[78],并在QUIC[79]中實(shí)現(xiàn)并訓(xùn)練。MVFST-RL使用異步的強(qiáng)化學(xué)習(xí)訓(xùn)練方法,并用Off-policy的方法來修正。
2.4.3 與傳統(tǒng)算法相結(jié)合的擁塞控制
純數(shù)據(jù)驅(qū)動的DRL擁塞控制算法面臨低穩(wěn)定性、低適應(yīng)性的問題。傳統(tǒng)擁塞控制算法經(jīng)過數(shù)年的實(shí)際部署和運(yùn)行,已經(jīng)證明了它們的穩(wěn)定性。近期的研究工作已經(jīng)開始在DRL擁塞控制算法的設(shè)計(jì)中融入傳統(tǒng)擁塞控制算法(Cubic,BBR等)的領(lǐng)域知識。例如,借助傳統(tǒng)擁塞控制算法來加速訓(xùn)練DRL智能體,或是用DRL直接對傳統(tǒng)擁塞控制算法的決策機(jī)制進(jìn)行改進(jìn)和優(yōu)化。前文提到的TCP-RL調(diào)節(jié)機(jī)制設(shè)計(jì)已經(jīng)用到了類似的思想。
傳統(tǒng)基于擁塞的算法,例如Cubic等只有在路由器的緩存過大時(shí)才會降低擁塞控制窗口,即它們調(diào)節(jié)的擁塞窗口與最優(yōu)的相比通常較大。因此,Abbasloo等人提出DeepCC[80],用DRL給傳統(tǒng)擁塞算法的調(diào)解結(jié)果制定一個(gè)最大值,來優(yōu)化傳統(tǒng)算法。仿真結(jié)果顯示,DeepCC可以在不犧牲帶寬利用率的情況下,提高傳統(tǒng)算法的平均RTT。
Emara 等人于2020年提出的Eagle[81],借助BBR算法的專家知識來優(yōu)化訓(xùn)練的DRL擁塞控制算法。首先Eagle參照BBR的狀態(tài)設(shè)計(jì),為基于DRL的調(diào)節(jié)機(jī)制也設(shè)計(jì)了類似的指數(shù)啟動、排空隊(duì)列和帶寬探測三個(gè)不同的狀態(tài)階段。其次,在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,Eagle使用一個(gè)同步BBR算法來周期性地產(chǎn)生一些調(diào)節(jié)動作投入訓(xùn)練中,從而加速訓(xùn)練過程,優(yōu)化動作選擇策略。實(shí)驗(yàn)結(jié)果顯示,Eagle的性能優(yōu)于其他經(jīng)典算法,但并沒有明顯優(yōu)于BBR。
Abbasloo等人提出了基于Cubic和DRL的混合算法[82]。他們首先測試了單純基于DRL的擁塞控制算法和Cubic在動態(tài)鏈路的性能表現(xiàn),發(fā)現(xiàn)這些基于DRL的算法存在收斂速度慢等問題。同時(shí)考慮計(jì)算量等問題,Abbasloo等人認(rèn)為Cubic用低計(jì)算量便實(shí)現(xiàn)了在時(shí)間域中精細(xì)的調(diào)節(jié)。因此在這一混合算法中,DRL在每個(gè)固定時(shí)間周期中收集信息,然后計(jì)算出一個(gè)基礎(chǔ)擁塞控制窗口,之后在下一個(gè)時(shí)間周期中,Cubic基于這個(gè)擁塞控制窗口數(shù)值根據(jù)自身的控制邏輯進(jìn)行調(diào)節(jié)。本文的這個(gè)時(shí)間周期被設(shè)定為20 ms,當(dāng)然也存在更優(yōu)的動態(tài)調(diào)節(jié)時(shí)間周期的機(jī)制。實(shí)驗(yàn)表明,DRL在這個(gè)混合算法中可以幫助Cubic更快地適應(yīng)網(wǎng)絡(luò)帶寬變化。
在互聯(lián)網(wǎng)內(nèi)容分發(fā)服務(wù)中,很小一部分網(wǎng)頁、文件或視頻被大量用戶訪問,而絕大部分互聯(lián)網(wǎng)內(nèi)容卻極少被重復(fù)訪問,即內(nèi)容的熱度呈現(xiàn)“扭曲”特性。熱度的差異導(dǎo)致移動互聯(lián)網(wǎng)的數(shù)據(jù)流量呈現(xiàn)很大的冗余性,特別是當(dāng)網(wǎng)絡(luò)帶寬成為瓶頸時(shí),互聯(lián)網(wǎng)的內(nèi)容分發(fā)服務(wù)質(zhì)量顯著降低。隨著存儲技術(shù)的進(jìn)步,磁盤存儲系統(tǒng)容量越來越大,單位存儲容量的價(jià)格顯著降低,這為網(wǎng)絡(luò)緩存(Cache)技術(shù)提供了重要前提。網(wǎng)絡(luò)內(nèi)緩存技術(shù)將用戶訪問過的部分視頻段存儲在網(wǎng)絡(luò)邊緣,使得這些視頻段的后續(xù)請求本地化,降低了服務(wù)器端的流量和內(nèi)容傳輸?shù)臅r(shí)間延遲,提高了網(wǎng)絡(luò)服務(wù)性能。緩存技術(shù)的最重要性能指標(biāo)是用戶請求的命中率。命中率越高,能夠節(jié)約的帶寬需求越大,相應(yīng)的內(nèi)容傳輸延遲可能會越小。
緩存研究的核心問題是“存儲什么內(nèi)容”。 廣義來說,內(nèi)容緩存的策略分為“被動式(Reactive)”和“主動式(Proactive)”兩類。被動式內(nèi)容緩存是被動地根據(jù)用戶產(chǎn)生的請求做出相應(yīng)的決策,即依據(jù)預(yù)先規(guī)定的緩存機(jī)制,決定文件的存入與移除,其關(guān)注的核心是緩存內(nèi)容的替換策略(Cache Replacement Policy)。緩存中的數(shù)據(jù)如何更新需要考慮以下要素:文件最近一次被請求的時(shí)間、文件的大小以及文件被請求的頻次。常用的被動式緩存替換策略有“最近最少使用(Least Recently Used,LRU)”“先入先出(First In First Out,F(xiàn)IFO)”“后入先出(Last In First Out,LIFO)”“隨機(jī)替換(Random Replacement,RR)”“最低使用頻率(Least Frequently Used,LFU)”以及“生存時(shí)間(Time-to-Live,TTL)”等。主動式緩存策略是在對用戶需求進(jìn)行預(yù)測的基礎(chǔ)上,主動進(jìn)行緩存內(nèi)容的推送與更新。本節(jié)聚焦于介紹互聯(lián)網(wǎng)中常用的被動式緩存替換策略的DRL算法設(shè)計(jì)。
DeepCache[84]的模型包括兩部分:基于LSTM 編碼器模型的目標(biāo)特征預(yù)測器和緩存替換管理模塊。其目標(biāo)在于提前預(yù)測出到達(dá)請求的目標(biāo)特征,自動學(xué)習(xí)到達(dá)流量模式的變化(特別是爆發(fā)式和非穩(wěn)態(tài)的流量),預(yù)測流行度變化等。DeepCache采用LSTM神經(jīng)網(wǎng)絡(luò),將視頻流行度預(yù)測視作一個(gè)Seq2seq問題。輸入輸出均為3D張量,即輸入中的元素為所有個(gè)體目標(biāo)在一個(gè)時(shí)間窗口內(nèi)的概率,輸入維度是個(gè)體目標(biāo)的數(shù)量,輸出為未來若干個(gè)時(shí)間單位內(nèi)所有個(gè)體目標(biāo)的概率分布。在合成的訪問請求數(shù)據(jù)實(shí)驗(yàn)上,DeepCache表現(xiàn)出比LRU和LFU顯著優(yōu)越的性能。
RL-Cache[85]研究采用DRL設(shè)計(jì)緩存接納策略,即當(dāng)一個(gè)沒有被緩存的請求到達(dá)時(shí),是否要將該請求內(nèi)容接納至緩存中,緩存的剔除策略依舊采用LRU。本文將緩存接納問題建模成無模型的強(qiáng)化學(xué)習(xí)問題,采用前饋神經(jīng)網(wǎng)絡(luò)(FNN)結(jié)合蒙特卡洛采樣及隨機(jī)優(yōu)化來求解。對于每一個(gè)輸入目標(biāo),狀態(tài)特征為該目標(biāo)的大小、出現(xiàn)頻率、最近一次請求時(shí)間間隔、指數(shù)平滑后的請求時(shí)間間隔、自上次訪問該目標(biāo)以來的其他目標(biāo)訪問次數(shù)、該訪問次數(shù)的指數(shù)平滑、該目標(biāo)的訪問頻次與目標(biāo)大小的比值、訪問頻次和目標(biāo)大小的乘積。在訓(xùn)練過程中,為了使訓(xùn)練的開銷保持在較低水平,RL-Cache從第一個(gè)請求開始,然后每次向后滑動K個(gè)請求。
Kirilin 等人[86]提出使用前饋神經(jīng)網(wǎng)絡(luò)預(yù)測內(nèi)容流行度,并運(yùn)用最小堆去實(shí)現(xiàn)LFU的緩存替換策略。輸入特征向量為一個(gè)內(nèi)容在過去K個(gè)時(shí)間片內(nèi)的被請求概率。實(shí)驗(yàn)結(jié)果表明,基于FNN的Cache性能優(yōu)于LRU和LFU,并且FNN的性能優(yōu)于兩種LSTM流行度預(yù)測算法。然后,Kirilin的進(jìn)一步研究表明,當(dāng)使用更為簡單的線性估計(jì)方法時(shí),緩存性能下降很小,這使得深度學(xué)習(xí)用于緩存算法設(shè)計(jì)受到一定程度的質(zhì)疑。
Wang 等人[87]提出采用純強(qiáng)化學(xué)習(xí)設(shè)計(jì)緩存算法。輸入狀態(tài)為一個(gè)四元組:到達(dá)請求的大小、上次該內(nèi)容被請求的時(shí)間間隔、該目標(biāo)迄今為止的訪問次數(shù)和剩余的緩存大小比例。所采用的訓(xùn)練方法為標(biāo)準(zhǔn)的A2C強(qiáng)化學(xué)習(xí)算法。強(qiáng)化學(xué)習(xí)的輸出動作為是否接納一個(gè)未在緩存的新請求。獎(jiǎng)勵(lì)為自上次決策以來總的命中字節(jié)數(shù)。其研究重點(diǎn)在于利用欠采樣的方法將強(qiáng)化學(xué)習(xí)緩存策略應(yīng)用至大型緩存系統(tǒng)中。具體方法是按照1/K的比例從數(shù)據(jù)集采樣數(shù)據(jù),欠采樣的方法是對目標(biāo)的ID進(jìn)行隨機(jī)的哈希,同時(shí)將緩存容量縮小K倍。數(shù)據(jù)驅(qū)動的實(shí)驗(yàn)結(jié)果表明,欠采樣的強(qiáng)化學(xué)習(xí)緩存策略與原來的強(qiáng)化學(xué)習(xí)緩存策略性能接近。
Zhong 等人[87]設(shè)計(jì)了基于DRL的緩存替換策略。該DRL模型的神經(jīng)網(wǎng)絡(luò)為雙側(cè)全連接結(jié)構(gòu),強(qiáng)化學(xué)習(xí)模型基于Wolpertinger策略,包括3個(gè)部分:Actor網(wǎng)絡(luò)、K最近鄰算法(KNN)和Critic網(wǎng)絡(luò),訓(xùn)練的方法為DDPG。采用Wolpertinger架構(gòu)的原因是,作為在線算法,該架構(gòu)能夠適應(yīng)數(shù)據(jù)的變化規(guī)律;Actor網(wǎng)絡(luò)能夠避免考慮一個(gè)非常巨大的動作空間,而Critic網(wǎng)絡(luò)能夠糾正演員網(wǎng)絡(luò)(actor network)的決策,并且KNN方法能夠拓展動作的選擇范圍。Zhong等人假設(shè)文件數(shù)量是固定的,并且每個(gè)文件的大小相同。其狀態(tài)空間包含緩存內(nèi)容在短期、中期和長期時(shí)間內(nèi)總的請求數(shù)量,獎(jiǎng)勵(lì)設(shè)置為緩存短期命中率和長期命中率的加權(quán)和,動作空間是使用當(dāng)前請求內(nèi)容替換某個(gè)已緩存內(nèi)容。
盡管這些基于DRL的方法在計(jì)算機(jī)網(wǎng)絡(luò)的各個(gè)領(lǐng)域均取得了較好的性能,但仍沒有替換傳統(tǒng)算法實(shí)現(xiàn)大規(guī)模的實(shí)際部署。針對基于專家知識的“白盒”算法,其內(nèi)部的工作原理和判定邏輯清晰透明,一旦算法出錯(cuò)網(wǎng)絡(luò)工程師可以立即進(jìn)行修正。針對基于DRL的“黑盒”算法,在智能體和環(huán)境的交互過程中,給定一個(gè)輸入狀態(tài),通過策略網(wǎng)絡(luò)或Q網(wǎng)絡(luò)的輸出來確定決策動作,其中策略網(wǎng)絡(luò)和Q網(wǎng)絡(luò)的本質(zhì)都是神經(jīng)網(wǎng)絡(luò),而一個(gè)神經(jīng)網(wǎng)絡(luò)通常由成千上萬的參數(shù)經(jīng)過非線性激活函數(shù)組成。這種給定輸入即生成輸出的黑盒行為以及復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)帶來了新的挑戰(zhàn),包括算法的可解釋性、算法的魯棒性以及同領(lǐng)域知識的有效融合問題,下面將分別對這幾點(diǎn)進(jìn)行敘述。
針對基于神經(jīng)網(wǎng)絡(luò)的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的可解釋性,Zheng等人[88]于2018年使用基于隱含層神經(jīng)元最大激活的方式去分析神經(jīng)網(wǎng)絡(luò)在執(zhí)行任務(wù)調(diào)度時(shí)對任務(wù)請求時(shí)長的敏感程度。但是,計(jì)算機(jī)網(wǎng)絡(luò)的工程師更傾向于直接使用簡單的邏輯規(guī)則去表示神經(jīng)網(wǎng)絡(luò),而不是去分析其復(fù)雜的激活規(guī)律。為了讓網(wǎng)絡(luò)工程師可以更直接地對這些基于神經(jīng)網(wǎng)絡(luò)的系統(tǒng)進(jìn)行調(diào)試、修正和部署,Meng等人于2019年提出了PiTree[89],將基于DRL的視頻傳輸系統(tǒng)Pensieve轉(zhuǎn)換為決策樹。Meng等人于2020年又提出了通用性更強(qiáng)的Metis[90],對于搭建在客戶端的小型系統(tǒng),如Pensieve[44]和Aurora[73],Metis通過將神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)化成決策樹的方式提供可解釋性;對于進(jìn)行規(guī)模控制的大型系統(tǒng),如Decima[25],Meitis可將其轉(zhuǎn)化為超圖(Hypergraph)。實(shí)驗(yàn)結(jié)果顯示,Metis可以在不降低系統(tǒng)性能的條件下提供更高程度的可解釋性。然而,Metis目前還不能解決對于RNN這種復(fù)雜神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),而且決策樹的構(gòu)建仍需要消耗大量的時(shí)間,如何簡單高效地提供通用性神經(jīng)網(wǎng)絡(luò)的可解釋性仍然是一個(gè)待解決的關(guān)鍵問題。
除了缺乏可解釋性外,基于DRL的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)也存在魯棒性的問題。由于計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境的多變性,環(huán)境條件經(jīng)常會發(fā)生變化。如在任務(wù)調(diào)度過程中任務(wù)的到達(dá)分布發(fā)生改變,文獻(xiàn)[91]指出此時(shí)基于DRL的負(fù)載均衡(Load Balance)系統(tǒng)的性能出現(xiàn)了大幅度下降,該解決方法是使用一個(gè)性能更穩(wěn)定的傳統(tǒng)算法作為后盾,當(dāng)發(fā)現(xiàn)DRL智能體的性能出現(xiàn)下降時(shí),則使用傳統(tǒng)算法替代智能體進(jìn)行決策。但處在輸入驅(qū)動的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中,如何準(zhǔn)確判斷性能是否真的出現(xiàn)下降,以及能否直接訓(xùn)練一個(gè)可以容忍環(huán)境變化和通用的智能體仍是待解決的問題。
對于網(wǎng)絡(luò)系統(tǒng)來說,領(lǐng)域知識是許多年的研究積累,是非常充沛的。它們可以幫助DRL算法變得更加可靠,降低模型推斷的復(fù)雜度而不損害其性能。然而,目前的“黑盒模式”在將網(wǎng)絡(luò)系統(tǒng)狀態(tài)和決策編碼成輸入和輸出后,DRL的訓(xùn)練和決策與領(lǐng)域知識往往無關(guān)。
上一節(jié)中提到的使用傳統(tǒng)算法作為DRL智能體的后盾,本質(zhì)上是希望能將領(lǐng)域知識和智能體進(jìn)行融合。這些領(lǐng)域知識雖然可通過智能體無盡地探索與試錯(cuò)得到,但是直接高效地融合領(lǐng)域知識可以使智能體獲取更快的訓(xùn)練速度和更高的性能表現(xiàn)。針對這個(gè)研究領(lǐng)域目前已有了一些初步的成果,Eagle[81]借助BBR算法的領(lǐng)域知識來優(yōu)化訓(xùn)練的DRL擁塞控制算法,它使用一個(gè)同步BBR算法來周期性地產(chǎn)生一些調(diào)節(jié)動作投入訓(xùn)練中,從而加速訓(xùn)練過程,優(yōu)化動作選擇策略。然而,從諸多文章的實(shí)驗(yàn)測試結(jié)果可以看出,DRL智能體的性能是超過傳統(tǒng)算法的,在訓(xùn)練的起始階段,融入傳統(tǒng)算法的建議可以加速訓(xùn)練速度,但是過多融入傳統(tǒng)算法的建議勢必會對智能體的性能帶來負(fù)面影響,如何合理地掌握傳統(tǒng)算法的參與程度也是需要解決的問題。
由于DRL可以避免對網(wǎng)絡(luò)環(huán)境進(jìn)行不準(zhǔn)確的建模,且智能體與環(huán)境的自主交互過程可以節(jié)省網(wǎng)絡(luò)專家對基于規(guī)則算法的頻繁參數(shù)配置,近年來DRL在計(jì)算機(jī)網(wǎng)絡(luò)中的應(yīng)用不勝枚舉。本文首先對DRL技術(shù)原理進(jìn)行介紹,詳細(xì)闡述了多種典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、傳統(tǒng)的以表格形式求解強(qiáng)化學(xué)習(xí)問題的方法以及廣泛應(yīng)用的DRL算法;其次,針對目前使用DRL技術(shù)的典型網(wǎng)絡(luò)系統(tǒng)進(jìn)行了全面的綜述,包括任務(wù)和數(shù)據(jù)流調(diào)度、視頻傳輸、路由選擇、TCP擁塞控制和網(wǎng)絡(luò)緩存;最后,指出了目前這些使用DRL的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)面臨的新挑戰(zhàn),包括可解釋性問題、魯棒性問題以及同領(lǐng)域知識進(jìn)行融合的問題,并給出了在這些問題上已有的工作進(jìn)展。