劉祎彤,王平輝,趙俊舟
(1. 西安交通大學自動化科學與工程學院,710049,西安;2. 西安交通大學智能網絡與網絡安全教育部重點實驗室,710049,西安)
計算機網絡作為互聯網時代的基礎設施,是現代社會生活中不可或缺的組成部分。隨著網絡通信技術的快速發展,各類新型網絡協議和應用層出不窮,如TLS加密協議[1]、5G通信[2]、云服務[3]等。與此同時,互聯網用戶對高通量網絡傳輸的需求不斷增長,Cisco發布的2021年度互聯網報告[4]顯示,預計到2023年,全球固定寬帶速度將是2018年的2.4倍。面對日益復雜的網絡生態環境和龐大的實時流量數據,運營商亟需提升自身的管理水平和運維能力以保障網絡空間的安全與穩定。網絡流量分類[5]作為先進網絡管理的前提,旨在從不同應用和協議的混合流量中準確識別每條流所屬的應用類型,進而幫助運營商提升用戶服務質量[6],實現差異化網絡定價,提供精細化服務[7]以及診斷分析網絡異常[8]等。
近年來,隨著人工智能技術在自然語言處理[9-10]和計算機視覺[11-12]等領域取得成功,國內外研究人員也開始利用深度學習模型來解決流量分類任務[13-19]。迄今為止,基于深度學習的流量分類方法已經在絕大多數公開數據集上實現了最優結果,這很大程度上歸功于數據集中包含的大量標注樣本。但是,隨著網絡監管政策和數據隱私保護的加強,流量采集和標注工作變得越發困難,導致難以生成高質量的數據集用于模型訓練。此外,由于實際網絡環境動態變化,各種類型的未知應用不斷涌現,如果能在未知應用出現早期對其進行快速有效識別,不僅能為應用提供合適的帶寬和時延保障,而且能及時檢測惡意應用,避免用戶信息泄露和財產損失。然而,未知應用在早期階段產生的流量規模小,難以在短時間內獲取充足的樣本用于已有分類器的微調或重新訓練,而現有方法很大程度上忽略了這一問題,因此對未知應用的早期識別效果不佳。綜上,盡管目前基于深度學習的方法在公開流量分類任務上成果斐然[20-23],但在實際中,尤其是在未知應用早期識別場景下,經常會面臨樣本稀缺的問題。眾所周知,深度神經網絡參數龐大,訓練樣本的質量和數量對模型性能起著決定性作用,樣本稀缺會導致模型過擬合,進而降低模型的泛化能力,影響模型的魯棒性和適用性[24-27]。
針對上述問題,本文提出了一種基于序列特征與知識引導的未知網絡應用早期識別方法。該方法首先基于Transformer-encoder框架構建流量分類模型(FAIN),利用自注意力機制挖掘流量序列中數據包之間的全局依賴關系,提取流量序列的高維隱式特征,進而將其編碼為具有可分辨性的表示向量用于分類。在之后的訓練階段,為提升FAIN模型在樣本稀缺場景下的適應能力,本文采取監督預訓練與元學習相耦合的模型優化策略。首先,利用大規模已知網絡應用的流量樣本,按照監督學習范式對模型進行預訓練。其次,構建小樣本流量分類任務,并將預訓練后的模型參數作為元學習過程的初始化參數,利用預訓練參數中蘊含的有關流量時序特征的通用領域知識,引導元學習過程中梯度更新方向。與此同時,為降低元學習過程中求解高階梯度帶來的高昂計算成本,采用一階梯度更新算法Reptile[25],對模型參數進行多輪更新。優化后的FAIN模型具備了在樣本稀缺場景下快速學習流量分類任務的能力,能夠滿足準確識別早期未知網絡應用的需求。
本文主要貢獻如下:
(1)設計了一種基于Transformer-encoder框架的流量分類模型FAIN,利用自注意力機制挖掘流量序列中數據包之間的全局依賴關系,進而構建具有可分辨性的流量表示向量用于分類;
(2)提出了一種監督預訓練與一階梯度元學習相耦合的模型優化策略,用于提升流量分類模型FAIN在小樣本場景下的快速適應能力,使得模型滿足準確識別早期未知應用的需求;
(3)在公開數據集ISCXTor和ISCXVPN以及由真實校園網流量合成的小樣本數據集XJTU-FSTC上進行了對比實驗,結果表明,FAIN模型在公開數據集3個分類任務上的綜合表現優于對比方法,性能指標F1值(模型精確率和召回率的調和平均值)分別為93.17%、92.93%和91.10%;優化后的FAIN模型在XJTU-FSTC和CSTNET數據集的5類和10類小樣本分類任務上,準確率顯著提升。
基于深度學習的流量分類方法的主要特點在于,將特征提取和流量分類兩方面工作整合到統一的端到端深度神經網絡之中,能夠自動從原始流量中提取高維隱式表示向量,降低了特征構建過程中對專家經驗和領域知識的依賴,模型具有良好的泛化能力,因此更加適合真實網絡環境。
Lotfollahi等利用流量序列中數據包負載中的字節序列構建特征向量,提出了基于堆疊自動編碼器(SAE)和一維卷積神經網絡(1D-CNN)的流量分類模型Deep Packet,該方法從數據包層面對流量進行分類,在ISCXVPN公開數據集上的分類性能相較于機器學習類方法有明顯提升[13]。Li等提出BSNN流量分類方法,該方法將數據包負載中的字節序列分割成多個片段,基于LSTM和GRU循環神經網絡構建編碼器提取片段內和不同片段之間時序特征,同樣實現了數據包層面的流量分類[15]。Liu等考慮流量中數據包之間的時序特征,提出了流層面的流量分類模型(FS-Net)。該模型采用數據包包長序列作為輸入,基于雙向門控單元(Bi-GRU)構建流量特征提取器,并引入重構損失保證編碼向量的有效性[14]。Xiao等對BSNN模型進行拓展,提出了可適用數據包層面和流層面的流量分類模型(EBSNN)。具體來講,該方法在BSNN模型之上增加了包信息聚合模塊,進一步提升了模型的性能和可解釋性[17]。
本節首先給出網絡流量分類和未知網絡應用早期識別問題的公式化定義,其次介紹基于Transformer-encoder框架的流量分類模型,最后闡述基于監督預訓練和梯度元學習的模型優化策略。
2.1.1 網絡流量分類

2.1.2 未知網絡應用早期識別

2.2.1 Transformer模型
Transformer作為當下應用最為廣泛的序列表示學習模型,已經在自然語言處理和計算機視覺領域取得了矚目的成就。Transformer是基于自注意力機制構建的編碼-解碼架構,設計初衷是為了更好地解決機器翻譯任務。相較于基于循環神經網絡建模方法,Transformer通過自注意力機制挖掘序列中不同時刻特征之間的全局依賴關系,有效避免了模型在訓練過程中存在的梯度爆炸和梯度消失問題,而且能夠并行進行注意力計算,極大程度上縮短了模型訓練和推理所需的時間。
(1)編碼-解碼架構。Transformer架構中的編碼和解碼模塊均由6個結構相同的子模塊堆疊而成,每個子模塊由多頭注意力層、殘差歸一化層和前向傳播層3部分構成。使用Transformer進行序列建模時首先給定一組輸入序列X=[x1,x2, …,xn]∈Rn×din,使用編碼模塊對X進行特征編碼,得到高維隱式嵌入表示Z=[z1,z2, …,zn]∈Rn×dmodel,之后Z作為解碼模塊的輸入,經過帶有掩碼操作的自回歸運算得到輸出序列Y=[y1,y2, …,ym]∈Rn×dout。
(2)自注意力機制。Transformer的核心是自注意力機制。數學上,自注意力機制是通過矩陣點積操作來進行向量相似度計算。給定矩陣Q∈Rn×dk、K∈Rn×dk、V∈Rn×dk分別表示queries、keys和values向量,在注意力計算過程中,首先將矩陣Q和矩陣K進行點積并將結果歸一化,之后再點積矩陣V得到輸出結果
(1)
MultiHead(Q,K,V)=
Concat(head1, head2, …, headh)Wo
(2)
(3)

2.2.2 流量表示學習模塊
類似于Bert[10],FAIN模型摒棄了Transformer架構中的解碼模塊,采用完全堆疊編碼層的方式構建流量表示學習模塊,這一做法主要出于兩方面考慮:①Transformer中的解碼模塊主要適用于長度不定的序列生成任務,如機器翻譯、對話生成等,且在注意力計算過程中需要對序列進行掩碼操作,因此并不適用于分類任務;②不使用解碼模塊能夠減少大約一半的模型參數,可以大大縮短模型訓練和推理所需時間。
如圖1所示,流量表示學習模塊中的編碼層包含多頭注意力層、殘差歸一化層以及前向傳播層3個部分。值得注意的是,本文參考文獻[26]在殘差歸一化層中將Transformer中使用的層歸一化替換成批歸一化,目的是減輕序列中存在的異常值的影響,同時在位置編碼階段采用可學習編碼替換Transformer的正弦位置編碼方式。給定一條包含n個數據包的網絡流,表示為矩陣X=[p1,p2, …,pn]∈Rn×m,其中m表示每個數據包的原始特征維度(包長、間隔到達時間等),流量表示學習模塊將從矩陣X中學習網絡流的時序特征表示。

圖1 本文方法整體框架圖Fig.1 Overall framework of the proposed method
具體地,對矩陣X編碼時,首先將每個時刻的特征pi經過線性層Wproj映射到d維嵌入空間中,添加位置編碼后,得到每個數據包的初始表示向量ei,可寫為
(4)

Hl=MultiHead(Ql,Kl,Vl)
(5)
El=BatchNorm(FFN(El-1+Hl))
(6)
式中:El,Hl∈Rn×dmodel;l表示層數;FFN(·)表示前向傳播;BatchNorm(·)表示歸一化。將最后一層的輸出El經線性層映射后得到表示向量Z
Z=WoutEl+bout
(7)
式中:Z∈Rn×dout;Wout∈Rn×dout;bout∈Rdout,均為線性層參數。
2.2.3 流量分類模塊和損失函數
在分類階段,采用雙層前饋神經網絡構建分類器,將流量表示學習模塊編碼得到的表示向量Z作為輸入,輸出該條流所屬網絡應用的預測結果
(8)
式中:W1、W2、b1、b2為線性層參數;ReLU(·)表示激活函數;Mean(·)表示平均操作。本文采用多分類問題常用的交叉熵損失作為損失函數

(9)

2.3.1 MAML算法

(10)

(11)
在元更新階段,聚合M個訓練任務的損失梯度用于更新模型參數θ
(12)
式中β表示元更新階段的學習率。
為了減少元學習過程中的梯度更新帶來的高昂計算成本,文獻[27]同時提出了MAML的一階近似算法FOMAML。FOMAML省略了式(10)中的二階導數的求解過程,用θ′i作為元梯度的更新方向。實驗證明,采用FOMAML算法不但提升了元學習效率,而且能夠保證模型性能不發生明顯下降。
2.3.2 基于預訓練和梯度元學習的模型優化策略
由式(9)和(10)可知,MAML算法對參數θ的每輪更新都需要求解其二階甚至更高階導數,這將使得訓練計算成本過大,且訓練過程易受超參數和異常樣本的影響,使得訓練不穩定。除此之外,FAIN模型中基于Transformer框架構建的特征提取模塊參數量龐大,在小樣本學習過程中可能出現過擬合,將嚴重影響模型的泛化能力,導致訓練失敗。而且,直接對特征提取模塊參數進行隨機初始化,一方面會導致訓練時間過長,另一方面由于樣本數量不足,訓練過程中模型可能收斂到局部最優,導致無法獲得最優性能。
為此,本文提出監督預訓練和一階梯度元學習相結合的模型優化策略,如圖1(b)所示。具體地,首先使用大量已知網絡應用樣本對FAIN模型按照有監督的方式進行預訓練,之后去除分類層參數,將特征提取模塊的預訓練參數θpretrained作為元學習過程的初始參數,目的在于利用預訓練參數中蘊含的有關流量時序特征的通用領域知識,引導元學習過程中參數的梯度更新方向,緩解隨機初始化參數可能造成的模型收斂到局部最優問題。與此同時,為進一步提高訓練效率,元學習過程采用一階梯度算法Reptile用以降低求解高階梯度帶來的高昂計算成本,縮短模型訓練所需時間。模型參數為
(13)
式中:μ表示學習率;N表示訓練輪數。
算法1基于監督預訓練和Reptile的參數優化算法

輸出:優化后模型參數θopt
1 初始化模型參數:θ0←θpretrained
2 whilei≤Ndo
3 #元訓練階段
5 forjin range(M):

7 根據式(11)對參數θi進行k步更新;

9 end for
10# 元更新階段

12i=i+1
13end while
14returnθopt
16使用優化后的參數θopt計算分類結果
3.1.1 實驗環境
本文所有實驗使用的服務器配置了2塊Intel(R) Xeon(R) E5-2690 V4 2.60 Hz CPU處理器以及4塊NVIDIA Tesla V100 32 GB GPU處理器,操作系統為Ubuntu 16.04,代碼環境為Python 3.8。
3.1.2 數據集與數據預處理
基于2個公開網絡流量分類數據集ISCXTor2016[28]和ISCXVPN2016[29],以及由真實校園網流量合成的小樣本數據集XJTU-FSTC[30]和公開數據集CSTNET-TLS 1.3[31]合成的小樣本數據集開展相關實驗。
(1)ISCXTor2016數據集從18種具有代表性的網絡應用(Facebook、Spotify、Gmail等)中,收集了包含郵件、聊天、音頻、文件傳輸等8種常用網絡服務的流量,并且根據流量是否通過Tor瀏覽器代理,將采集到流量分為Tor和Non-Tor兩類,數據集共計16類標簽。
(2)ISCXVPN2016數據集從Facebook、Skype、Spotify、YouTube等16種網絡應用中采集了包含聊天、郵件、文件傳輸等6種常用網絡服務的流量,并且根據流量是否通過VPN隧道代理,將每種服務的流量分為VPN和Non-VPN兩類,數據集包含Application classification和Service classification兩個分類任務,分別包含16類標簽和12類標簽。
(3)XJTU-FSTC小樣本數據集根據實驗室收集的真實校園網流量合成,包含BitTorrent、YOUKU、QQLive、TikTok等64種網絡應用產生的流量,經過濾、合并、標注等一系列預處理工作后,每類應用包含50個流量樣本,每個樣本由應用會話的前256個數據包構成。選取其中50類應用用于構建訓練任務,剩余14類應用構建測試任務。
(4)CSTNET小樣本數據集由公開數據集CSTNET-TLS 1.3合成得到,數據集包含120類應用標簽,每類標簽包含50個流量樣本,每個樣本由應用會話前30個數據包構成。選取其中96類應用用于構建訓練任務,剩余24類應用用于構建測試任務。
數據集詳細的統計信息如表1所示,在預處理過程中,按照相同五元組從原始pcap文件中篩選出網絡流并保留每條流的前N個數據包,移除數據包中鏈路層包頭、傳輸層包頭中源IP地址、目的IP地址、端口號等,得到網絡流序列樣本并標注。提取序列中數據包包長、TTL、時間窗口大小、Flags、包間隔到達時間等作為候選特征集合。

表1 實驗所用數據集統計信息
3.1.3 實驗細節
采用Pytorch深度學習框架實現實驗代碼,使用Scapy和nfstream工具庫解析原始pcap文件,得到序列長度為30的數據包包長序列。在ISCXTor2016和ISCXVPN2016公開數據集上按照6∶2∶2的比例劃分訓練集、驗證集和測試集。在XJTU-FSTC數據集上按照8∶2的比例劃分已知應用和未知應用,并構建5類K樣本和10類K樣本小樣本學習任務。設置FAIN模型的編碼層數為3,自注意力模塊頭數為8,初始嵌入維度為128,采用ReLU激活函數。在預訓練階段,采集大規模已知應用流量樣本對模型進行預訓練,采用Radam優化器,學習率設為10-3,最大訓練輪數為200,批樣本數量為32,訓練過程中采用早停機制防止過擬合。在小樣本學習階段,從訓練集中隨機采樣5 000個訓練任務進行訓練,元訓練階段采用SGD優化器,學習率10-4,迭代步數為5,元更新階段采用Adam優化器,學習率為10-5。
3.2.1 基線方法
為驗證所提方法的有效性,本文選取了6個網絡流量分類方法作為基線進行對比試驗,包括packet-level方法:BSNN和DeepPacket,以及flow-level方法:AppScanner、AWF、DeepFinger和FSNet。
(1)DeepPacket[13]。利用數據包負載字節信息,基于堆疊自動編碼器(SAE)和一維卷積神經網絡(1D-CNN)構建的流量分類模型。
(2)BSNN[15]。將數據包負載中的字節序列分割成多個片段,基于LSTM和GRU循環神經網絡構建編碼器提取片段內和不同片段之間時序特征。
(3)AppScanner[32]。使用數據包包長序列和40余類序列統計特征作為輸入,結合SVC和隨機森林算法,實現手機App流量分類。
(4)AWF[33]。基于卷積神經網絡構建特征提取器,用于自動檢測網站指紋攻擊流量。
(5)DeepFinger[34]。在AWF基礎上改進網絡框架,用于深度檢測增加防御策略后的Tor瀏覽器流量。
(6)FS-Net[14]。提取流中的數據包包長序列作為輸入,基于Bi-GRU循環神經構建流量特征提取器,并引入重構損失保證所編碼特征的有效性。
3.2.2 評價指標
本文采用召回率(R)、精準率(P)、準確率(A)和F1值來評估所提方法在各個分類任務上的性能。
(14)
(15)
(16)
(17)
式中:TP表示正確分類正樣本;FP表示將負樣本分類為正樣本;FN表示將正樣本分類為負樣本;TN表示正確分類負樣本。考慮到數據集中存在的樣本不均衡問題,本文采用加權平均計算分類結果。
3.3.1 公開數據集實驗結果
本文與現有基于深度學習的packet-level流量分類方法DeepPcaket和BSNN,以及flow-level流量分類方法AppScanner、AWF、DeepFinger和FS-Net,在ISCXTor2016和ISCXVPN2016公開數據集的3個分類任務上進行對比實驗,實驗結果如表2所示。

表2 ISCXTor2016和ISCXVPN2016公開數據集對比實驗結果
由表2可知,在ISCXTor和ISCXVPN-Service分類任務上,FAIN相較其余baseline方法,在3個評價指標上均排名第一。
(1)在ISCXTor任務上,FAIN的F1值相較于DeepPacket和FS-Net分別提升了1.74%和1.62%;對于ISCXVPN-Service分類任務,FAIN的F1值相較于DeepPacket和FS-Net分別提升了0.76%和1.98%。
(2)在ISCXVPN-Application分類任務上,FAIN相較于次優flow-level方法FS-Net,其F1值提升了1.13%。但是,在該任務上FAIN的表現不及packet-level方法DeepPacket和BSNN。
實驗結果表明,本文提出的基于Transformer-encoder框架的流量分類模型FAIN,能夠從原始流量中有效地挖掘流量序列的時序特征,并構建具有可分辨性的表示向量用于流量分類。
在ISCXVPN-Application分類任務上,FAIN模型表現不及packet-level方法BSNN和DeepPacket,這是由于ISCXVPN2016數據集提供的是原始pcap文件,packet-level方法提取pacp文件中每個數據包的字節序列生成訓練數據集和測試數據集,而作為flow-level方法的FAIN是提取pacp文件中每條流的包長序列生成訓練數據集和測試數據集。由于樣本形式不同,導致這兩類方法的數據集樣本數量和標簽分布存在差異。如圖2所示,packet-level方法的訓練集從樣本數量和樣本均衡度上均遠好于flow-level方法的訓練集,導致FAIN在該任務上的表現不及BSNN和DeepPacket。

圖2 ISCXVPN-App任務訓練集數據分布Fig.2 The distribution of ISCXVPN-App training set
3.3.2 小樣本數據集實驗結果
在小樣本實驗中,本文選取5種flow-level流量分類方法AWF、AppScanner、DeepFinger、BiLSTM和FS-Net作為主干網絡,分別結合FOMAML和Reptile梯度元學習算法作為baseline模型,同時也和當前較為常用的小樣本學習方法Prototypical Network、Relation Network進行了對比。表3和表4分別展示了上述方法與本文方法在XJTU-FSTC以及CSTNET小樣本流量分類數據集上的對比結果。其中,XJTU-FSTC數據集對比實驗結果表明,本文方法在所有設置的小樣本分類任務中效果最優。

表3 XJTU-FSTC數據集對比實驗結果

表4 CSTNET數據集對比實驗結果
(1)在5類1、5、10樣本任務上分別取得了68.80%、79.52%和87.63%的分類準確率,在10類1、5、10樣本任務上分別取得了45.26%、72.84%和78.67%的分類準確率。
(2)值得注意的是,當不使用預訓練參數對FAIN的模型特征提取模塊進行初始化時,FAIN分類準確率在5類1、5、10樣本任務上降低了26.16%、10.12%以及10.52%,在10類1、5、10樣本任務上,分類準確率分別降低了12.74%,9.41%和8.39%,而且在5類1樣本和10類1樣本條件下不及FOMAML+FsNe和Prototypical Network方法。因為相比于FOMAML+FsNet 和Prototypical Network,本文使用了參數量更大的Transformer-based流量特征提取模塊,所以在樣本稀缺場景下,模型難以進行有效學習;但是隨著樣本數目增加,在5類 5、10樣本和10類 5、10樣本條件下,即使不使用預訓練參數進行模型初始化,本文方法依舊取得了最優結果,表明了FAIN模型在流量表示學習方面的優越性。
CSTNET數據集對比實驗結果同樣表明,本文方法在所有設置的小樣本分類任務上綜合表現優于其余對比方法。
(1)除了在5類 1樣本條件下準確率低于Prototypical Network,在其余的5類5、10樣本和10類1、5、10樣本任務上,均取得了最優的準確率,其值分別為88.74%、90.12%、48.13%、75.82%和80.54%。
(2)當不使用預訓練參數對FAIN模型的特征提取模塊進行初始化時,CSTNET數據集上的對比結果與XJTU-FSTC數據集上結果表現出相同的規律。FAIN分類準確率在5類1、5、10樣本任務上分別降低了11.57%、5.22%、2.58%,在10類 1、5、10樣本任務上,分類準確率分別降低了8.24%、4.81%、3.29%、在5類1樣本和10類1樣本條件下不及FOMAML+FsNe和Prototypical Network方法。
總的來看,由于流量的數據包序列不包含明顯語義信息,因此基于深度學習的流量分類方法往往需要大量訓練樣本來學習不同應用的時序特征,而當訓練樣本稀缺時,就要求模型具備更強的表示學習能力以及泛化能力。在XJTU-FSTC和CSTNET小樣本流量分類數據集上的對比結果表明,本文提出的流量分類模型FAIN經過小樣本學習后的綜合表現優于其余方法,充分體現了基于自注意力機制的表示學習模塊在流量時序特征提取方面的有效性。同時,使用預訓練參數作為元學習的初始化參數能夠顯著提升FAIN的性能,說明使用大量已知應用樣本對FAIN進行預訓練,能夠賦予模型參數關于流量時序特征的通用領域知識。將預訓參數作為FAIN在元學習過程的初始化參數,這些領域知識將作為先驗知識,引導整個元學習過程中參數的梯度更新方向,能夠有效提升訓練穩定性,避免訓練過程陷入局部最優,從而使得模型獲得最優性能。
3.3.3 公開數據集細粒度分類結果
本文對比了同為flow-level方法的FAIN和FS-Net在不同分類任務上對每類標簽的分類準確率。圖3(a)、(c)、(e)展示了FAIN在ISCXTor、ISCXVPN-Appliction和ISCXVPN-Service任務上的混淆矩陣,圖3(b)、(d)、(f)展示了FS-Net的結果。可以看出,在各個分類任務上,FAIN對于絕大多數標簽的分類準確率均優于FS-Net。證明了FAIN在流量時序特征提取方面具有更強的魯棒性和泛化能力,能更好地適用于不同的應用分類場景。同時,FAIN和FS-Net在ISCXTor任務上對Tor Browsing、Tor Chat、Tor File-Transfer、Tor Email這幾類標簽的分類錯誤率較高,說明經由Tor瀏覽器轉發的流量,其數據包之間的時序特征變得更加模糊難以被提取,這可能與Tor瀏覽器的路由機制有關。

(a)Tor任務上FAIN混淆矩陣

(b)Tor任務上FS-Net混淆矩陣

(c)VPN-App任務上FAIN混淆矩陣

(f)VPN-Service任務上FS-Net混淆矩陣
為了評估超參數對FAIN分類性能的影響,在ISCXTor數據集上分別對序列長度、編碼層數、嵌入維度以及小樣本學習過程內循環步數α進行參數分析,其中序列長度取值范圍為{10, 20, 30, 60, 90, 120},編碼層數取值范圍為{2, 3, 4, 5, 6},嵌入維度取值范圍為{16, 32, 64, 128, 256, 512},內循環步數的取值范圍為{3, 4, 5, 6, 7, 8}。為保證實驗公平性,其余參數不做更改。
圖4展示了序列長度對FAIN的各項評價指標的影響。可以看出,當序列長度小于30時,模型性能隨著序列長度的增加呈線性提升,當序列長度大于30時,模型性能不再明顯提升,各項評價指標趨于穩定。這一結果說明,對于流量序列而言,前30個數據包相較于其余數據包蘊含更為重要的序列特征信息。

圖4 序列長度對FAIN分類性能的影響Fig.4 Effect of sequence length on FAIN performance
表示向量的維度對于分類效果有著重要影響,增加嵌入維度使得模型能夠感知更加高維的隱式特征,但同時意味著特征空間更加稀疏,而且模型容易受到噪聲和異常值的影響導致過擬合。圖5展示了模型性能隨嵌入維度的變化趨勢。可以看出,隨著嵌入維度的增加,FAIN的各項評價指標緩慢提升,而當嵌入維度大于128時,模型性能有了明顯下降,當嵌入維度從128增至512時,F1值下降了24.83%。

圖5 編碼維度對FAIN分類性能的影響Fig.5 Effect of embedding dimension on FAIN performance
圖6展示了編碼層數對模型性能的影響。當編碼層數小于4時,隨著層數的不斷增加,各項評價指標沒有發生明顯變化,而當層數從4層增至6層時,F1值下降了19.68%。這一結果說明,基于自注意力機制構建的編碼層具有良好的序列建模能力,即使是淺層網絡,依然可以學習到豐富的特征信息,而加深編碼層數會使得模型參數呈指數增加,當訓練樣本不足時就會引起過擬合,導致模型性能劣化。

圖6 編碼層數對FAIN分類性能的影響Fig.6 Effect of encoder layer on FAIN performance
圖7展示了5類1、5樣本和10類1、5樣本條件下小樣本學習過程中內循環更新步數對模型準確率的影響。為排除先驗知識的影響,步數分析時不對模型進行預訓練。從圖中可以看出,隨著內循環更新步數的不斷增加,在5類5樣本和10類5樣本條件下,模型的準確率呈現緩慢上升趨勢,模型準確率最高提升2%;而在5類1樣本和10類1樣本條件下,模型的準確率呈現先緩慢上升之后下降的現象。總體來看,相較于其他參數,小樣本學習過程中內循環更新步數對模型性能的影響有限。

圖7 小樣本學習中內循環更新步數對模型準確率的影響Fig.7 Effect of update steps of inner loop in few-shot learning on accuracy
(1)本文提出的FAIN流量分類模型在公開數據集上綜合性能優于現有方法,且細粒度分類結果表明,FAIN模型在流量時序特征提取方面具有更強的魯棒性和泛化能力,能更好地適用于不同的應用分類場景。
(2)優化后的FAIN模型在小樣本數據集上的綜合性能優于對比方法,其中在XJTU-FSTC數據集的5類和10類分類任務上準確率最高分別提升了16.75%、10.08%和11.57%、8.24%。這表明使用預訓練參數作為元學習的初始化參數能夠顯著提升FAIN模型在樣本稀缺場景下的性能。
未來,將會考慮在計算資源有限的邊緣網絡設備上,部署能夠實時分類流量的輕量化模型,進一步提升對網絡空間的管理能力。