謝海濤 陳樹
摘 要:媒體網(wǎng)站的用戶流量呈現(xiàn)平穩(wěn)性、周期性、不規(guī)則變動等特征,對用戶流量的有效預(yù)測有助于管理者設(shè)計更合理的負載均衡(Load Balance)策略。鑒于傳統(tǒng)預(yù)測技術(shù)難以對蘊含在不同時間跨度中的知識進行融合,論文提出了一種基于深度學習技術(shù)“長短期記憶網(wǎng)絡(luò)(LSTM)”的用戶流量預(yù)測及負載均衡方法。該方法將網(wǎng)站的各類運營數(shù)據(jù)作為影響流量的特征,從而挖掘流量與其特征間的關(guān)聯(lián)知識。根據(jù)未來時間窗口的流量預(yù)測結(jié)果,進行服務(wù)器資源預(yù)留,以實現(xiàn)較好的負載均衡效果。實驗表明,相對于傳統(tǒng)方法,論文方法的請求響應(yīng)時間均值更低。
關(guān)鍵詞:用戶流量預(yù)測;長短期記憶網(wǎng)絡(luò);負載均衡
中圖分類號:TP393 文獻標識碼:A
1 引言
負載均衡是將用戶的請求分發(fā)到不同服務(wù)器,以縮短請求響應(yīng)時間的技術(shù)。對媒體網(wǎng)站來說,用戶訪問量的準確預(yù)測是設(shè)計更合理的負載均衡策略、改善用戶訪問體驗的數(shù)據(jù)依據(jù)。媒體網(wǎng)站的訪問量總體上呈現(xiàn)出平穩(wěn)性、趨勢性、周期性、隨機性等特征。例如,網(wǎng)站內(nèi)容質(zhì)量的提高讓用戶流量穩(wěn)中有升;用戶流量會伴隨日夜交替而產(chǎn)生周期性起伏;發(fā)布熱門內(nèi)容會導(dǎo)致用戶流量的激增等。上述現(xiàn)象表明用戶訪問量具有時間序列(Time Series)數(shù)據(jù)的典型特征,也使得媒體網(wǎng)站的用戶流量預(yù)測變得較為困難。
對于用戶流量問題,已存在諸多研究成果。傳統(tǒng)方法主要基于統(tǒng)計學、隨機過程、機器學習(淺層學習)等技術(shù)提出解決方案。上述方法在用戶訪問量預(yù)測問題上取得了不錯的應(yīng)用效果。不過,傳統(tǒng)方法在持續(xù)提高預(yù)測精度過程中遇到瓶頸,其重要原因是無法對蘊含在不同時間跨度中的知識進行有效提取及融合,即不具備“記住對預(yù)測有用的信息,忘記對預(yù)測無用的信息”能力。對此,本文提出了一種基于長短期記憶網(wǎng)絡(luò)(深度學習)的媒體網(wǎng)站用戶流量預(yù)測方法,并設(shè)計了基于預(yù)測結(jié)果的負載均衡優(yōu)化策略。
創(chuàng)新點在于兩點:
(1)LSTM的深層結(jié)構(gòu)與遺忘記憶機制,可融合不同時間跨度的歷史信息;
(2)考慮到高峰流量通常伴有相似的內(nèi)容請求,負載均衡策略會預(yù)留出優(yōu)質(zhì)的服務(wù)器資源,對流量進行集中處理和響應(yīng)。
在本文隨后的章節(jié)中,將首先闡述相關(guān)研究成果;然后對所解決問題進行形式化,并基于LSTM提出了媒體網(wǎng)站流量預(yù)測方法;接著設(shè)計了具有資源預(yù)留機制的負載均衡方法;最后開展對比實驗。
2 相關(guān)研究綜述
用戶流量預(yù)測(Network Traffic Prediction)作為評估與保障網(wǎng)絡(luò)可靠性、網(wǎng)絡(luò)安全性的機制,被廣泛應(yīng)用于門戶網(wǎng)站、電子商務(wù)網(wǎng)站等[1]。根據(jù)數(shù)據(jù)建模方法與視角的不同,主流方法包括三種:
(1)基于泊松分布、小波分析等的統(tǒng)計類建模方法;
(2)基于線性時間序列(Linear Time Series)模型、非線性時間序列(Nonlinear Time Series)模型、馬爾科夫過程的隨機過程類建模方法;
(3)基于神經(jīng)網(wǎng)絡(luò)、支持向量機等的機器學習類(Machine Learning)方法。
Erlang很早便提出基于排隊論方法學來建模用戶到達率問題,使用泊松分布對數(shù)據(jù)建模[2]。洪飛等基于小波分析技術(shù)建模網(wǎng)絡(luò)流量[3]。綜合自回歸移動平均模型ARIMA也常被用于解決該問題,它將數(shù)據(jù)從非平穩(wěn)時間序列轉(zhuǎn)化為平穩(wěn)時間序列,其特點在于能從數(shù)據(jù)中捕獲到隨時間變化的隨機模式,隨機模式是指隨機過程的特征隨時間變化[4]。溫祥西、韓敏等基于支持向量機提出了時間序列預(yù)測模型[5,6]。彭喜元等使用原始數(shù)據(jù)構(gòu)建出多個特征,并基于神經(jīng)網(wǎng)絡(luò)進行學習和預(yù)測[7]。
綜上,媒體網(wǎng)站用戶訪問量具有典型的非線性時間序列特征,且存在各類外部隨機擾動。對其進行精準預(yù)測需要模型從不同時間尺度上學習數(shù)據(jù)規(guī)律。在難以可視化高維數(shù)據(jù)、難以描述隨機過程機制的情況下,使用LSTM模型將媒體的各類行為特征作為輸入,能最大限度捕捉特征變化規(guī)律,適于解決該問題。
3 基于LSTM的媒體網(wǎng)站訪問量預(yù)測方法
3.1 訪問量預(yù)測問題的形式化描述
媒體網(wǎng)站某段時間內(nèi)用戶訪問量數(shù)據(jù)V可記為:。其中,t是時間片序號,v代表時間片內(nèi)的訪問量。按照上述表示法,媒體網(wǎng)站在運營中的各類行為均可被形式化描述為數(shù)據(jù)特征,如表1所示。
基于上述表示法,訪問量預(yù)測問題的輸入數(shù)據(jù)表示為:
本節(jié)要解決的問題,即通過對若干歷史時間片內(nèi)上述數(shù)據(jù)的學習,預(yù)測未來若干時間片內(nèi)的訪問量。
3.2 長短期記憶網(wǎng)絡(luò)
LSTM(Long Short Term Memory)是一種基于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN改進而來的模型[8]。LSTM在長短時間跨度的序列數(shù)據(jù)預(yù)測中,比RNN表現(xiàn)更好。神經(jīng)網(wǎng)絡(luò)作為具有輸入層、隱藏層、輸出層的機器學習模型可學習到數(shù)據(jù)中的非線性關(guān)系。神經(jīng)網(wǎng)絡(luò)通過后向和前向傳播完成參數(shù)的調(diào)整。當按照計算時間將RNN展開后,如圖1所示。
其中,U、V、W是參數(shù),x、s、o分別為輸入、隱含層、輸出。LSTM在RNN基礎(chǔ)上通過增加“遺忘機制”“選擇記憶機制”實現(xiàn)了適應(yīng)長短期時間跨度的序列數(shù)據(jù)學習能力。相比于RNN,LSTM有兩套傳輸狀態(tài):單元狀態(tài)(Cell State)和隱藏層狀態(tài)(Hidden State),前者隨時間變化較慢,后者變化較快,具體細節(jié)如下:
某時刻t的單元狀態(tài)和隱藏層狀態(tài)分別記為:Ct,ht。若當前輸入為Xt,<α,β>表示將兩向量進行拼接(Concatenate),那么LSTM中的一組變量計算如下:
(1)
其中,zi,zf,zo由權(quán)重矩陣與拼接向量相乘得到,σ代表sigmoid激活函數(shù),將數(shù)值映射為0到1區(qū)間。上述三變量作為模型的門控信號,分別控制著輸入、遺忘、輸出機制。z通過tanh函數(shù)將數(shù)值映射為-1到1區(qū)間,作為其它構(gòu)件的輸入數(shù)據(jù)。以上變量隨后參與如下運算過程,并最終形成輸出yt,計算流程如圖2所示。
其中,⊕是矩陣相加算子,是同型矩陣相乘算子,即:矩陣中對應(yīng)元素相乘。上述結(jié)構(gòu)圖中的各變量計算方法如下:
(2)
LSTM在時序數(shù)據(jù)學習中,展現(xiàn)出如下的機制:
忘記機制:使用忘記門控信號zf對上一時刻所持有的信息Ct-1進行選擇性忘記,忘記不重要的信息,即對結(jié)果預(yù)測無用的信息。
選擇記憶機制:對當前時刻的輸入信息Xt進行選擇性記憶,記住相對重要的信息,即對結(jié)果預(yù)測有用的信息,通過門控信號zi以及之前計算得到的z得到。
將上述兩路信息組合,形成當前時刻的單元狀態(tài)Ct。以上信息經(jīng)過tanh函數(shù)并通過輸出門控信號zo來決定輸出內(nèi)容,并最終形成輸出yt。
3.3 基于LSTM的訪問量預(yù)測方法
由于LSTM接受向量形式的輸入與輸出。將時間序列樣本數(shù)據(jù)轉(zhuǎn)換為LSTM輸入數(shù)據(jù),其主要方法是將原數(shù)據(jù)與其按照步長沿時間錯位后的數(shù)據(jù)拼接而成。若某單變量Var時間序列數(shù)據(jù)為<…a,b,c,d,e,…>,那么步長為2的轉(zhuǎn)換數(shù)據(jù)如表2所示,其中步長為2表示當前時刻t的數(shù)值受之前兩個時刻t-1,t-2的數(shù)值影響。在數(shù)據(jù)轉(zhuǎn)換完后,變量Vart即對應(yīng)監(jiān)督學習中的樣本的目標值Y,Vart-1,Vart-2組成了樣本的特征向量X。
上述轉(zhuǎn)換可預(yù)測未來1個單位時間跨度的數(shù)值,若要針對2個單位時間跨度預(yù)測,可將數(shù)據(jù)轉(zhuǎn)換為如表3所示。其與表2的區(qū)別在于,用該組數(shù)據(jù)訓練的LSTM模型的輸出向量包含兩個預(yù)測數(shù)值,對應(yīng)于未來兩個時間片段。
在本研究中,由于需要基于媒體的多類行為特征以及用戶流量本身,來預(yù)測未來若干時間片段的用戶流量,那么對于表4中的數(shù)據(jù)可轉(zhuǎn)換為表5中的數(shù)據(jù),其中Var_1、Var_2表示兩個特征。
通過上述轉(zhuǎn)換,將多變量時間序列轉(zhuǎn)化為了LSTM學習與預(yù)測時所需要的樣本特征與目標值記錄。之后將記錄劃分為訓練集和測試集,便可生成未來若干時間片中用戶流量的預(yù)測結(jié)果。
4 基于用戶流量預(yù)測結(jié)果的負載均衡優(yōu)化方法
常用的負載均衡方法包括五大類。
(1)輪詢法。將用戶請求按順序輪流地分發(fā)給后端服務(wù)器處理。
(2)隨機法。通過系統(tǒng)的隨機算法,根據(jù)后端服務(wù)器的列表來隨機選取其中的一臺服務(wù)器進行分發(fā)。
(3)源地址哈希法。根據(jù)發(fā)起請求的客戶IP地址,通過哈希函數(shù)計算得到的一個數(shù)值,用該數(shù)值對服務(wù)器列表進行選擇和分發(fā)。
(4)加權(quán)法。后端服務(wù)器通常具有不同的配置和負載,對配置高、負載低的機器給與高權(quán)重,將更多的請求分發(fā)給權(quán)重高的服務(wù)器。
(5)最小連接數(shù)法。由于后端服務(wù)器的配置不同,對于請求的處理速度也不同,該方法根據(jù)服務(wù)器當前連接的情況,動態(tài)地選取其中積壓請求數(shù)最較少的服務(wù)器來處理當前請求。
上述傳統(tǒng)的負載均衡方法,并沒有考慮不同請求之間的相似性。對于媒體網(wǎng)站,處于相近時間的用戶請求往往具有較大相似性。例如,媒體網(wǎng)站發(fā)布一則重要消息后,激增的用戶流量經(jīng)常均指向同一內(nèi)容。考慮到服務(wù)器的緩存機制和資源預(yù)取機制,若隨機或輪詢分發(fā)請求,其服務(wù)器平均響應(yīng)時間要遠高于集中處理的時間。
對此,本文提出了基于流量預(yù)測和服務(wù)器資源預(yù)留的負載均衡方法,其主旨:若預(yù)測到未來某時間片中,用戶流量超過閾值,則根據(jù)服務(wù)器性能,為該時間片預(yù)留服務(wù)器資源,當該時間片到臨時,將請求集中分發(fā)到預(yù)留的服務(wù)器,方法邏輯圖如圖3所示。
5 實驗與分析
本文基于Python機器學習開發(fā)環(huán)境開發(fā)LSTM模型。該環(huán)境搭建兼容Windows與Linux平臺。首先下載Anaconda工具并安裝,確保環(huán)境中有機器學習開發(fā)所必需的合適版本的基礎(chǔ)類庫。隨后,安裝深度學習所需要的Python類庫,包括Theano、TensorFlow和Keras。在設(shè)計與實現(xiàn)LSTM前,需要明確的模型重要特征包括:
(1)基于多少個歷史時間片段的數(shù)據(jù)進行學習;
(2)針對未來多少個時間片段做預(yù)測;
(3)隱藏層有多少個神經(jīng)元;
(4)損失函數(shù)的選擇,如平均絕對誤差MAE;
(5)優(yōu)化算法選擇,如隨機梯度下降法SGD;
(6)樣本數(shù)據(jù)的訓練輪次以及參數(shù)優(yōu)化中的一批次數(shù)據(jù)規(guī)模。
在模型特征確定后,實現(xiàn)模型的偽代碼如下:
用戶流量預(yù)測的實驗數(shù)據(jù)源于真實數(shù)據(jù)和仿真數(shù)據(jù)。其中,真實數(shù)據(jù)來源于基于微信公眾號搭建的媒體網(wǎng)站的服務(wù)器日志,以IP地址來區(qū)分不同用戶的訪問行為。仿真數(shù)據(jù)則基于新浪微博(中國計算機學會CCF官微)的爬取數(shù)據(jù)而生成,生成方法為將微博賬戶的各類行為及點贊情況類比為媒體網(wǎng)站的各類行為及用戶流量。數(shù)據(jù)在用途上分為訓練集與測試集,分別用于訓練模型和進行測試,仿真數(shù)據(jù)由程序自動生成。在評價模型效果之前,需要對模型預(yù)測精度進行定義。本文中,當預(yù)測數(shù)值落在實際數(shù)值一定范圍內(nèi),則認為該次預(yù)測準確,否則為不準確。精度定義為準確預(yù)測占全部預(yù)測的比例。公式如下:
(3)
仿真實驗分別針對用戶流量預(yù)測和負載均衡方法展開5組實驗,每組實驗分別模擬具有不同特質(zhì)的用戶流量,得到結(jié)果如圖4和圖5所示。
從圖4和圖5可見,基于LSTM的用戶流量預(yù)測方法相比于傳統(tǒng)方法具有更高的精度?;诹髁款A(yù)測的負載均衡方法具有更短的服務(wù)器平均響應(yīng)時間。
6 結(jié)束語
本文針對媒體網(wǎng)站用戶訪問量受多類運營行為影響而難以預(yù)測的問題,提出了基于LSTM的預(yù)測方法,該方法能夠?qū)μN含在不同時間跨度中的知識進行融合,與傳統(tǒng)預(yù)測方法ARIMA相比,具有更高的預(yù)測精度。根據(jù)用戶流量預(yù)測,設(shè)計了基于服務(wù)器資源預(yù)留的負載均衡方法。該方法可縮短請求的平均響應(yīng)時間,改善用戶訪問體驗。
基金項目:
北京市科學技術(shù)研究院萌芽項目“深度學習技術(shù)在情報檢索用戶群體行為分析中的應(yīng)用研究”的階段性研究成果(項目編號:GS201804)。
參考文獻
[1] Joshi M, Hadi T H. A review of network traffic analysis and prediction techniques[J]. Computer Science,2015.
[2] Bonald T.The Erlang model with non-poisson call arrivals[C]//Joint International Conference on Measurement and Modeling of Computer Systems. ACM,2006:276-286.
[3] 洪飛,吳志美.基于小波的多尺度網(wǎng)絡(luò)流量預(yù)測模型[J].計算機學報, 2006, 29(1):166-170.
[4] Contreras J,Espinola R, Nogales F J, et al.ARIMA models to predict next-day electricity prices[J].IEEE Transactions on Power Systems,2003,18(3):1014-1020.
[5] 溫祥西,孟相如,馬志強,等.小時間尺度網(wǎng)絡(luò)流量混沌性分析及趨勢預(yù)測[J].電子學報,2012, 40(8):1609-1616.
[6] 韓敏,許美玲,穆大蕓.無核相關(guān)向量機在時間序列預(yù)測中的應(yīng)用[J].計算機學報,2014, 37(12):2427-2432.
[7] 彭喜元,王軍,彭宇.一種新型時間序列多分辨預(yù)測模型研究[J].電子學報,2007, 35(11):2146-2149.
[8] Hochreiter S,Schmidhuber J.Long short-term memory[J].Neural Computation,1997, 9(8):1735-1780.