聲網深度學習時序編碼器的資源預測實踐丨Dev for Dev 專欄

聲網發表於2022-11-23

圖片

本文為「Dev for Dev 專欄」系列內容,作者為聲網大後端智慧運營演算法團隊 演算法工程師@黃南薰。

隨著深度學習技術的發展,編碼器的結構在構建神經網路中成為了熱門之選,在計算機視覺領域有眾多成功案列。聲網智慧運營演算法團隊經過調研後發現,經過修改調整後的時序編碼器在與時間規律強相關的資料集上展示出很優秀的預測能力。聲網的許多業務場景中涉及以運籌演算法為核心的資源排程策略,聲網深度學習時序編碼器模型可以提供高效而準確的預測服務,以支援運籌演算法根據未來資源需求進行提前規劃。

01 背景介紹

在聲網的眾多業務中,許多業務的資料往往伴隨著較強的時間規律性,例如泛娛樂場景下一般週末業務會相對較為活躍,教育場景下往往有著相對固定的用量高峰時段。這種跟時間關聯在一起的資料一般被稱為“時間序列”。時間序列由於在生活中的廣泛應用,關於時間序列的預測一直是經久不衰的話題之一。

聲網的業務系統在支援公司業務的同時,也實時記錄了這些業務所消耗的各個維度的資源情況。經過探究後發現,只要業務規模達到一定程度,對應的業務的各項資源使用情況就會呈現出或強或弱的規律性特徵。聲網的通用業務平臺提供了超融合基礎架構(Hyper Converged Infrastructure),能夠從資源池中高效分配、回收資源。對服務未來資源的變更操作,依賴於對該服務未來資源需求情況的精準預測。一旦確定了某個可排程範圍內的未來資源需求情況,業務系統可以透過基於運籌演算法的排程策略實現資源高效利用,從而降本增效,因此時間序列預測是整個業務資源高效利用的核心,也是保障業務高可用的基石。

在處理時間序列資料時,常見演算法是根據資料的時序特徵,對資料本身進行分解。進行時間序列分解時,通常認為時間序列是週期性成分、趨勢性成分和殘差成分疊加或相乘的產物,即y(t)=S(t)+T(t)+R(t)或y(t)=S(t)×T(t)×R(t),因此,一般會假定時間序列具有較強的週期性,從原資料中將時間序列的週期性和趨勢性進行剝離,分別進行預測,最後根據殘差來得到一個預測的時間序列未來的可能值範圍。聲網智慧運營演算法團隊在進行時間序列的分解時經常發現,常見的按週期和趨勢分解時間序列進行預測的方法會遇到週期固化,異常波動難以處理,不確定性預測難以實現等各種問題。

圖片

■計算機視覺和自然語言處理中常見的自編碼結構

在特定的場景下,傳統的機器學習演算法無法到達較好的預測效果,這時候深度學習便成為了最優之選。深度學習的許多經典場景集中在計算機視覺和自然語言處理上,核心目標是提取出輸入部分的關鍵資訊,制定合適的最佳化目標,得到期望的目標結果。既然影像與文字均能夠透過合適的變換,提取出特徵資訊,帶有時間標籤的資料也不應當例外。聲網智慧運營演算法團隊經過探索後發現,時間序列資料經過合適的預處理方案,透過特定的模型結構與特殊的預測方式,可以在各種業務的各個資源維度上均取得較好的預測結果,繼而提出了兩個通用解決方案:通用資源時序自編碼器 GRTAE(General Resource Timeseries Auto-Encoder)和通用資源時序變分自編碼器 GRTVAE(General Resource Timeseries Variational Auto-Encoder)。

02 時間序列分解預測演算法

演算法詳解

常見的時間序列分解方法一般會採用類似 STL(Seasonal and Trend decomposition using Loess)² 的思想,透過迴歸、平滑、過濾等方式挖掘出時間序列的週期性,在處理週期、趨勢較為明顯的時間序列資料的時候,透過分解、分別預測、重組的方式來得到一個時間序列的預測結果相比 ARIMA(Autoregressive Integrated Moving Average)等單純透過迴歸的方式來進行預測,往往要來的更準確一點,同時也能夠透過分解後的殘差得到一個較為合理的置信區間。

演算法潛在問題

時間序列的規律並非一成不變的,截止到哪部分的資料適合用來當作預測資料往往會成為一個較大的難點。由於趨勢性的部分往往是透過分段並採取線性的方式進行預測的,當遇到趨勢性非線性的時候往往會和週期性難以區分,導致訓練過擬合。而進行相對較長的未來預測的時候由於模型魯棒性較差,一旦出現規律發生微小變化,就會產生一定誤差,而這部分誤差作為歷史資料進行滾動預測的時候便會導致誤差被放大,最後整個預測趨勢會變得難以挽回。如下圖中使用Prophet³ 進行預測遇到的誤差放大就是常見的情況。

圖片

■時序分解中誤差放大的情況

03 通用資源時序自編碼

模型介紹

自編碼這一概念最早誕生於1986年¹,隨著神經網路技術的發展,在計算機視覺與自然語言處理中都發揮著重要的作用。自編碼器的核心在於透過編碼層將輸入資料的高維特徵進行抽象化的提取,再透過解碼層將這些特徵進行表達。為了儘可能保證資訊的還原,編碼器和解碼器的結構往往是對稱或近似對稱的。

通用資源時序自編碼器 GRTAE 跟常規的自編碼器一樣,分為編碼器和解碼器兩個部分。模型會要求定義好輸入和輸出視窗大小,對時間序列數值及時間進行視窗化的劃分,並在視窗中進行預處理,作為訓練時的特徵和預測時的輸入值。異常值的過濾也會在預處理的過程中同步完成。

圖片

■GRTAE 編碼器部分結構

模型的編碼器部分會同時接收時間序列的時間值及資料值,分別進行特徵的抽象化。模型中的中間層部分並不相同,但結構相似,通常為由數個全連線層、啟用函式層、池化層和隨機丟失層組合而成。資料值部分會先經過中間層,再經過一層迴圈神經網路 GRU(gated recurrent unit),再經過一次中間層;同時時間部分會經過一次特徵嵌入Embedding,再經過一層中間層。兩部分分別處理過以後會分別得到形狀相同的兩部分張量,合併層會將兩部分張量連線,並再經過一層全連線進行變換,得到訓練完成的隱資訊部分。

圖片

■GRTAE 解碼器部分結構

模型的解碼器部分和編碼器部分採取的各個子模組都是相似的。首先將隱資訊輸入到中間層,經過 GRU 層備用,同時將要預測的部分的時間提取出來,經過一次特徵嵌入後輸入至中間層。再將這兩部分合並,最後輸出一次中間層得到預測視窗中的數值資訊。

模型區域性細節詳解

模型的中間層中會選擇性地加入一個或多個啟用函式層、池化層和隨機丟失層。通常中間層都是以全連線層作為起始層和終止層,但在經過迴圈神經網路後一般會直接使用啟用函式層作為起始層。中間層一般起到增加模型表達力和魯棒性的作用,實踐表明,該網路架構具備較強的魯棒性和通用性,適用於多個業務場景,預測效果得到保證。

時序嵌入(Embedding)有多種方式,我們一開始參考了Transformer⁴ 中的positional encoding的思想,用正弦和餘弦的三角函式變換後進行交替編碼,並在原方法上做了簡化處理,得到了通用便捷的時間序列嵌入方案。同時經過研究我們也發現,如果採用適當的結構直接引入位置資訊,也可以達到和三角函式相仿的效果,這也同時證明了時序部分的合理嵌入方式可以是多樣的。

模型優勢

通用資源時序自編碼器 GRTAE 相比於其他編碼器模型較為輕量。在實踐中,如果需要預測未來十五分鐘的資料,只需要兩週的歷史資料作為訓練集,預測時使用四小時的歷史資料,在模型前端增加合適的預處理方式,後端增加合適的平滑方式,就能夠將預測視窗內的誤差控制在 5% 以內。

由於整個視窗都是由單次預測直接完成,待預測位置上的點除了位置資訊外,本身的預測結果沒有被作為中間值引入下一次預測。這種非自迴歸式的預測方式能夠有效避免發生傳統時間預測演算法的誤差放大現象。

模型效果展示

圖片

■GRTAE 在資源預測領域的效果展示

圖中展示的是 GRTAE 演算法在資源預測領域的效果。黃色曲線是傳統機器學習演算法的預測結果,綠色部分是 GRTAE 的預測結果,藍色部分是真實值。不難發現,傳統機器學習方法在整體趨勢上基本能夠貼合真實資料,然而一旦區域性發生波動或者驟升驟降,演算法就會產生較大的誤差。然而 GRTAE 則能在一定程度上提前感知到這種變化,及時修正預測結果,和真實值曲線貼合緊密。

04 通用資源時序變分自編碼

模型介紹

通用資源時序變分自編碼器 GRTVAE 則是在結構上參考了變分自編碼器的結構⁵。由於變分自編碼器的結構是在自編碼器的結構上修改而得到的,而自編碼器在上文已經做過介紹,此處就不再贅述,將編碼器部分和解碼器部分作為整個整體直接說明,並著重介紹 GRTVAE 與 GRTAE 之間的不同點。首先,在 GRTVAE 中,時序資料不再透過位置嵌入的方式傳遞,而是透過固定的方式轉換成矩陣,和數值資料一起進入編碼器。由於將時間特徵直接引入,編碼器中採用了 Transformer 裡經典的自注意力機制(Self-Attention),用以建立關鍵特徵之間的聯絡。訓練和預測過程採用重引數化技巧(reparameterization trick),對標準正態分佈進行取樣,將預測問題轉化為生成問題,得到資料分佈,從而較為容易地計算預測結果置信區間,緩解異常波動帶來的預測誤差較大的問題。

圖片

■GRTVAE 整體結構概括

模型區域性細節詳解

通用資源時序變分自編碼器 GRTVAE 的編碼器部分引入了自注意力機制。自注意力機制在自然語言處理及計算機視覺中都有廣泛的使用,主要透過改變權重的方式讓模型自行學習輸入中比較重要的部分,比如句子中的關鍵詞或圖片中的關鍵部分,在時序相關資料中則是學習能夠決定未來走向的時間和對應的資料。

解碼層除了使用長期資訊以外,還會從原始資料中拉取一份短期資料,並訓練成為包含短期資訊的張量,將長短期資訊做融合後協同預測。充足的長期資料有助於發現時間序列中的規律,但在規律性上的過渡聚焦會導致演算法在預測時只會機械化的參考最類似的場景,而現實生活中的時序資料除了和歷史的規律有關外,往往也和最新時刻的狀態有緊密關係。短期資訊的重複引入有助於這種關係在模型中得到恰當的發揮。

GRTVAE 的解碼器部分在預測時獲取的短期資料與使用的長期資料均為歷史已知資料,同樣不採用自迴歸的方式以規避誤差放大的風險。

資料的預處理階段,進入解碼器前的資料還經過了資料濾波平滑和一階差分預測的處理,這兩類處理方式也是時序預測中的常用技巧,和自注意力機制一樣,在幫助模型集中學習資料規律性部分上起到了較大的作用。資料濾波平滑可以幫助消除曲線中的隨機殘差成分,同時會保留資料中的高頻訊號部分,即時間序列中的驟升驟降的成分,削弱了隨機誤差對模型訓練及預測的干擾。另外,經過測試發現,在使用 GRTVAE 的過程中,比起訓練資料本身,將濾波的資料經過一階差分處理來訓練資料的增量部分能夠得到更準確的結果。

模型優勢

通用資源時序變分自編碼器 GRTVAE 由於引入了機率模型,能夠直接透過統計學方式生成業務需要的置信區間,這在通用資源平臺中資源容量分配及其他很多需要用到預測演算法的業務場景中都有廣泛的應用場景。

透過注意力機制獲得隱向量的方法具有很高的魯棒性,也就意味著在相似業務上能夠進行快速地遷移。模型可以透過遷移學習等方法在相似場景小以極小的訓練代價進行快速地複用。

模型效果展示

圖片

■GRTVAE 在資源預測領域的效果展示

圖中展示的是 GRTVAE 演算法在資源預測領域的效果。黃色曲線是統計學演算法的預測結果,紅色部分是 GRTVAE 的預測結果,藍色部分是真實值。圖中選取的時刻是曲線的規律性發生變化的時刻,平時原本會以凹陷形式下降的數值呈現了凸形的下降方式。統計學演算法參考了過往同一時刻的值,採用了加權平均,區域性迴歸等思想,但這些方法無法對新的規律變化產生感知。而 GRTVAE 則敏銳地發現了曲線短期資訊中包含的差異性,給出了合理的預測結果。同時統計學方法受歷史極端值影響較強,故經常呈現出數值的突升突降,而 GRTVAE 由於其依靠分佈而生成的原理,得到的是平滑且穩定的預測結果。

05 總結

聲網智慧運營演算法團隊在時間序列資料預測任務的實踐過程中,嘗試了業界比較優秀的演算法,如 DeepAR、Uber 的基於 Dropout 的 Uncertain 和 confident 預測、NBeats、Transformer 系列如 autoformer 等,總體上這些演算法在我們的場景裡精度和複雜度都難以滿足需求,因此我們在借鑑業界優秀成果的基礎上研發了適應聲網場景的通用資源時序自編碼器 GRTAE 和通用資源時序變分自編碼器 GRTVAE 兩種時間序列預測通用解決方案。單維度的時間序列預測問題在業界一直是一個難以攻克的難關,常見的時間序列預測模型往往在長期週期性與短期趨勢性之間難以找到平衡點,同時又會受到滾動預測的思想的影響難以產生穩定的預測結果。經過演算法團隊的測試,只需要採取合適的預處理方式和輸出最佳化方案,這兩套解決方案可以應對各種規模、各種型別的單維度時間序列,也支援擴充到多維時間序列預測上,與一些其他深度學習解決方案相比,又有著魯棒性強、輕量化、需求樣本少等各種優勢,能快速滿足大部分業務場景的需求。

聲網的資源預測場景採用了兩種新的編碼器方案作為預測模組以後,真正做到了在各個服務各個粒度上,對未來短時間內的資源使用情況有一個較為精準的預測範圍,不管是強週期性的時間序列還是驟升驟降的時間序列,都能夠參考歷史場景及實時趨勢,給出合理的預測值。透過將預測演算法與以運籌演算法為核心的資源排程策略相結合,聲網真正意義上實現了隨用隨取的“資源自由”。

參考文獻

1. D.E. Rumelhart, G.E. Hinton, and R.J. Williams, "Learning internal representations by error propagation." Parallel Distributed Processing. Vol 1: Foundations. MIT Press, Cambridge, MA, 1986

2. Cleveland, Robert B., William S. Cleveland, and Irma Terpenning. "STL: A seasonal-trend decomposition procedure based on loess." Journal of Official Statistics 6.1, 1990

3. Sean J. Taylor, Benjamin Letham (2018) Forecasting at scale. The American Statistician

4. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, ”Attention Is All You Need”, 2017

5. Diederik P Kingma, Max , “Auto-Encoding Variational Bayes”, 2013

關於 Dev for Dev

Dev for Dev 專欄全稱為 Developer for Developer,該專欄是聲網與 RTC 開發者社群共同發起的開發者互動創新實踐活動。

透過工程師視角的技術分享、交流碰撞、專案共建等多種形式,匯聚開發者的力量,挖掘和傳遞最具價值的技術內容和專案,全面釋放技術的創造力。

相關文章