Experience-driven Congestion Control: When Multi-Path TCP Meets Deep Reinforcement Learning 筆記

原論文鏈接

Abstract

摘要:在這篇文章中,我們打算從利用新興深度學習的全新的角度研究網絡問題,開發一個experience-driven方法,使網絡或協議從自己的經驗(例如,運行時統計數據)中學習最好的辦法來control itself,正如人類的學習技能一樣。我們提出了基於 深度強化學習(DRL) 的擁塞控制框架DRL- cc (DRL for control)的設計、實現和評估,實現了基於多路徑TCP擁塞控制的經驗驅動設計思想。DRL-CC使用一個(而不是多個獨立的)代理來動態、聯合地對終端主機上的所有活動MPTCP流執行擁塞控制,其目標是最大化總體效用。我們的設計的新穎之處在於利用靈活的 循環神經網絡LSTM ,在DRL框架下學習所有活動流的表示並處理它們的動態性。此外,我們首次將上述基於LSTM的表示網絡集成到一個用於持續(擁塞)控制的 actor-critic 框架中,該框架利用新興的確定性策略梯度以端到端方式訓練critic, actor和LSTM網絡。我們在Linux內核中基於MPTCP實現了DRL-CC。實驗結果表明:1)在不犧牲公平性的前提下,DRL-CC在實際吞吐量方面一致且顯著地優於一些著名的MPTCP擁塞控制算法;2)在具有時變流量的高動態網絡環境下,DRL-CC具有靈活性和魯棒性;3)對於常規的TCP非常友好。

1 Introduction

本文的思路比較清晰,結構如下:

  1. 簡介部分
  2. 介紹DRL部分
  3. 如何將DRL運用到MPTCP CC問題中(重點)
  4. 評估(僅爲了學習方法,此部分可以跳過)
  5. 做的相關工作
  6. 結論

2 DEEP REINFORCEMENT LEARNING (DRL)

介紹DRL基礎知識的前戲不必多說,不懂的自行查閱資料,光看論文裏講的學DRL不一定能看懂。

3 DRL-BASED CONGESTION CONTROL FOR MPTCP

A. Overview

設計的DRL-CC有兩部分:

  • Representation Network:利用 LSTM 以序列學習的方式學習當前所有MPTCP和TCP的狀態的 representation
  • Actor-Critic:基於Representation Network,訓練Actor網絡和Critic網絡

接下來介紹下State、Action、Reward 如何表示。

State
原文中的 sti=[st1,1,...,sti,k,...,stN,Ki]st=[bti,k,gti,k,dti,k,vti,k,wti,k]s^i_t=[s_t^{1,1},...,s_t^{i,k},...,s_t^{N,K_i}] 和 s_t =[b_t^{i,k},g_t^{i,k},d_t^{i,k},v_t^{i,k},w_t^{i,k}] 倆公式自己感覺有筆誤(也有可能自己理解不對)。按照原文意思 sti,ks^{i,k}_t 代表的是 epoch t 下 第 i 個flow(如果此flow是MPTCP,則kk代表第k個subflow, KiK_i代表flow裏有多少個subflow)的狀態,所以第一個公式出現stN,Kis_t^{N,K_i}的N讓人很費解,感覺有問題,而且st=[bti,k,gti,k,dti,k,vti,k,wti,k]s_t =[b_t^{i,k},g_t^{i,k},d_t^{i,k},v_t^{i,k},w_t^{i,k}]感覺也有問題。最後以自己的理解,這兩公式應該是:
sti=[sti,1,...,sti,k,...,sti,Ki]sti,k=[bti,k,gti,k,dti,k,vti,k,wti,k] s^i_t=[s_t^{i,1},...,s_t^{i,k},...,s_t^{i,K_i}] 和 s_t^{i,k} =[b_t^{i,k},g_t^{i,k},d_t^{i,k},v_t^{i,k},w_t^{i,k}]
其中,sti,k=[bti,k,gti,k,dti,k,vti,k,wti,k]s_t^{i,k} =[b_t^{i,k},g_t^{i,k},d_t^{i,k},v_t^{i,k},w_t^{i,k}]裏面的b,g,d,v,wb,g,d,v,w指的是corresponding sending rate, goodput, average RTT, the mean deviation of RTTs and the congestion window size respectivel. 也就是發送速率、吞吐量、平均RTT,RTTs的平均偏差和擁塞窗口大小。

Action
這個很好理解:在第 t 個 epoch 中,at=[xt1,...,xtk,...,xtK]a_t=[x_t^1,...,x_t^k,...,x_t^K]。其中xtkx_t^k表示擁塞控制窗口的改變大小,正數、負數和0代表着增大、減小和不改變窗口大小。並且需要注意的是每一個epoch中,僅僅只會對一個MPTCP做出action, 也稱之爲目標 MPTCP

Reward
這個也簡單。在第 t 個 epoch 中,rt=iNU(i,t)r_t=\sum_i^NU(i,t),文中也說了,U(i,t)U(i,t)效用函數不用侷限於特定的效用函數(比如常見的就是通過throughput和delay之間的權衡),可以根據實際需要選擇,本文選取的是U(i,t)=log(gti)U(i,t) = log(g_t^i)gg表示平均的吞吐量。

B. Representation Network

  • input: 狀態sts_t。需要注意的是,MPTCP流的數量是可變的,所以sts_t的長度是可變的。傳統的DNN的輸入是固定的,所以引入了LSTM神經網絡。神經網絡結構如fig2,每個流一個接一個的輸入LSTM。
  • ouput:如fig2,輸入就是htNh_t^N

值得說的是LSTM可以和Actor-Critic一起訓練。
在這裏插入圖片描述

C. Actor Critic Method

  • input:htNh_t^N和目標MPTCP流的狀態的連結一起
  • output:action
    具體算法如下圖,裏面具體步驟不做解釋,原文講解的很清楚。
    在這裏插入圖片描述
    以上三個網絡的具體結構:
  • representation network:single-layer LSTM unit
  • actor network:是一個含有兩個隱藏層的全連接網絡,每個隱藏層都有128個神經元。隱含層的激活函數是ReLU,輸出層激活函數用的是 Hyperbolic tangent(tanh)。
  • critic network:和actor network結構一樣,除了輸出層爲僅有一個神經元的線性函數。

訓練的一些參數:

  • 優化器:Adam
  • 學習率:0.0001 ~ 0.001
  • discount factor γ\gamma:0.9
  • 程序框架:TFLearn,是一個對tensorflow進行更高的封裝API。

D. implementation of DRL-CC

講了下如何具體的實施。
最後講了下,如果網絡環境發生變化,本方法就需要重新蒐集數據來訓練,目前還沒有很好的重新訓練的方法。也是他們將後研究的方向。

PERFORMANCE EVALUATION

跳過,後面幾章也一併跳過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章