日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

簡介: 隨著移動互聯(lián)網(wǎng)、IoT、5G 等的應(yīng)用和普及,一步一步帶我們走進(jìn)了數(shù)字經(jīng)濟(jì)時代。隨之而來的海量數(shù)據(jù)將是一種客觀的存在,并發(fā)揮出越來越重要的作用。時序數(shù)據(jù)是海量數(shù)據(jù)中的一個重要組成部分,除了挖掘分析預(yù)測等,如何高效的壓縮存儲是一個基礎(chǔ)且重要的課題。同時,我們也正處在人工智能時代,深度學(xué)習(xí)已經(jīng)有了很多很好的應(yīng)用,如何在更多更廣的層面發(fā)揮作用?本文總結(jié)了當(dāng)前學(xué)術(shù)界和工業(yè)界數(shù)據(jù)壓縮的方法,分析了大型商用時序數(shù)據(jù)壓縮的特性,提出了一種新的算法,分享用深度強(qiáng)化學(xué)習(xí)進(jìn)行數(shù)據(jù)壓縮的研究探索及取得的成果。

如何更高效地壓縮時序數(shù)據(jù)?

 

彼節(jié)者有間,而刀刃者無厚;以無厚入有間,恢恢乎其于游刃必有余地矣。——庖丁解牛

深度學(xué)習(xí)的本質(zhì)是做決策,用它解決具體的問題時很重要的是找到契合點,合理建模,然后整理數(shù)據(jù)優(yōu)化 loss 等最終較好地解決問題。在過去的一段時間,我們在用深度強(qiáng)化學(xué)習(xí)進(jìn)行數(shù)據(jù)壓縮上做了一些研究探索并取得了一些成績,已經(jīng)在 ICDE 2020 research track 發(fā)表(Two-level Data Compression using machine Learning in Time Series Database)并做了口頭匯報。在這里做一個整體粗略介紹,希望對其它的場景,至少是其它數(shù)據(jù)的壓縮等,帶來一點借鑒作用。

背景描述

1 時序數(shù)據(jù)

時序數(shù)據(jù)顧名思義指的是和時間序列相關(guān)的數(shù)據(jù),是日常隨處可見的一種數(shù)據(jù)形式。下圖羅列了三個示例:a)心電圖,b)股票指數(shù),c)具體股票交易數(shù)據(jù)。

如何更高效地壓縮時序數(shù)據(jù)?

 

關(guān)于時序數(shù)據(jù)庫的工作內(nèi)容,簡略地,在用戶的使用層面它需要響應(yīng)海量的查詢,分析,預(yù)測等;而在底層它則需要處理海量的讀寫,壓縮解壓縮,采用聚合等操作,而這些的基本操作單元就是時序數(shù)據(jù) ,一般(也可以簡化)用兩個 8 byte 的值進(jìn)行統(tǒng)一描述。

可以想象,任何電子設(shè)備每天都在產(chǎn)生各種各樣海量的時序數(shù)據(jù),需要海量的存儲空間等,對它進(jìn)行壓縮存儲及處理是一個自然而然的方法。而這里的著重點就是如何進(jìn)行更高效的壓縮。

2 強(qiáng)化學(xué)習(xí)

機(jī)器學(xué)習(xí)按照樣本是否有 groundTruth 可分為有監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí),以及強(qiáng)化學(xué)習(xí)等。強(qiáng)化學(xué)習(xí)顧名思義是不斷地努力地去學(xué)習(xí),不需要 groundTruth,真實世界很多時候也沒有 groundTruth,譬如人的認(rèn)知很多時候就是不斷迭代學(xué)習(xí)的過程。從這個意義上來說,強(qiáng)化學(xué)習(xí)是更符合或更全面普遍的一種處理現(xiàn)實世界問題的過程和方法,所以有個說法是:如果深度學(xué)習(xí)慢慢地會像 C/Python/JAVA 那樣成為解決具體問題的一個基礎(chǔ)工具的話,那么強(qiáng)化學(xué)習(xí)是深度學(xué)習(xí)的一個基礎(chǔ)工具。

強(qiáng)化學(xué)習(xí)的經(jīng)典示意圖如下,基本要素為 State,Action,和 Environment?;具^程為:Environment 給出 State,Agent 根據(jù) state 做 Action 決策,Action 作用在 Environment 上產(chǎn)生新的 State 及 reward,其中 reward 用來指導(dǎo) Agent 做出更好的 Action 決策,循環(huán)往復(fù)….

而常見的有監(jiān)督學(xué)習(xí)則簡單很多,可以認(rèn)為是強(qiáng)化學(xué)習(xí)的一種特殊情況,目標(biāo)很清晰就是 groudTruth,因此對應(yīng)的 reward 也比較清晰。

如何更高效地壓縮時序數(shù)據(jù)?

 

強(qiáng)化學(xué)習(xí)按照個人理解可以歸納為以下三大類:

1)DQN

Deep Q network,比較符合人的直觀感受邏輯的一種類型,它會訓(xùn)練一個評估 Q-value 的網(wǎng)絡(luò),對任一 state 能給出各個 Action 的 reward,然后最終選擇 reward 最大的那個 action 進(jìn)行操作即可。訓(xùn)練過程通過評估 “估計的 Q-value” 和 “真正得到的 Q-value” 的結(jié)果進(jìn)行反向傳遞,最終讓網(wǎng)絡(luò)估計 Q-value 越來越準(zhǔn)。

2)Policy Gradient

是更加端到端的一種類型,訓(xùn)練一個網(wǎng)絡(luò),對任一 state 直接給出最終的 action。DQN 的適用范圍需要連續(xù) state 的 Q-value 也比較連續(xù)(下圍棋等不適用這種情況),而 Policy Gradient 由于忽略內(nèi)部過程直接給出 action,具有更大的普適性。但它的缺點是更難以評價及收斂。一般的訓(xùn)練過程是:對某一 state,同時隨機(jī)的采取多種 action,評價各種 action 的結(jié)果進(jìn)行反向傳遞,最終讓網(wǎng)絡(luò)輸出效果更好的 action。

3)Actor-Critic

試著糅合前面兩種網(wǎng)絡(luò),取長補(bǔ)短,一方面用 policy Gradient 網(wǎng)絡(luò)進(jìn)行任一 state 的 action 輸出,另外一方面用 DQN 網(wǎng)絡(luò)對 policy gradient 的 action 輸出進(jìn)行較好的量化評價并以之來指導(dǎo) policy gradient 的更新。如名字所示,就像表演者和評論家的關(guān)系。訓(xùn)練過程需要同時訓(xùn)練 actor(policy Graident)和 critic(QN)網(wǎng)絡(luò),但 actor 的訓(xùn)練只需要 follow critic 的指引就好。它有很多的變種,也是當(dāng)前 DRL 理論研究上不停發(fā)展的主要方向。

時序數(shù)據(jù)的壓縮

對海量的時序數(shù)據(jù)進(jìn)行壓縮是顯而易見的一個事情,因此在學(xué)術(shù)界和工業(yè)界也有很多的研究和探索,一些方法有:

  • SnAppy:對整數(shù)或字符串進(jìn)行壓縮,主要用了長距離預(yù)測和游程編碼(RLE),廣泛的應(yīng)用包括 Infuxdb。
  • Simple8b:先對數(shù)據(jù)進(jìn)行前后 delta 處理,如果相同用RLE編碼;否則根據(jù)一張有 16 個 entry 的碼表把 1 到 240 個數(shù)(每個數(shù)的 bits 根據(jù)碼表)pack 到 8B 為單位的數(shù)據(jù)中,有廣泛的應(yīng)用包括 Infuxdb。
  • Compression planner:引入了一些 general 的壓縮 tool 如 scale, delta, dictionary, huffman, run length 和 patched constant 等,然后提出了用靜態(tài)的或動態(tài)辦法組合嘗試這些工具來進(jìn)行壓縮;想法挺新穎但實際性能會是個問題。
  • ModelarDB:側(cè)重在有損壓縮,基于用戶給定的可容忍損失進(jìn)行壓縮?;舅枷胧前丫S護(hù)一個小 buff,探測當(dāng)前數(shù)據(jù)是否符合某種模式(斜率的直線擬合),如果不成功,切換模式重新開始buff等;對支持有損的 IoT 領(lǐng)域比較合適。
  • Sprintz:也是在 IoT 領(lǐng)域效果會比較好,側(cè)重在 8/16 bit 的整數(shù)處理;主要用了 scale 進(jìn)行預(yù)測然后用 RLC 進(jìn)行差值編碼并做 bit-level 的 packing。
  • Gorilla:應(yīng)用在 Facebook 高吞吐實時系統(tǒng)中的當(dāng)時 sofa 的壓縮算法,進(jìn)行無損壓縮,廣泛適用于 IoT 和云端服務(wù)等各個領(lǐng)域。它引入 delta-of-delta 對時間戳進(jìn)行處理,用 xor 對數(shù)據(jù)進(jìn)行變換然后用 Huffman 編碼及 bit-packing。示例圖如下所示。
  • MO:類似 Gorilla,但去掉了 bit-packing,所有的數(shù)據(jù)操作基本都是字節(jié)對齊,降低了壓縮率但提供了處理性能。
如何更高效地壓縮時序數(shù)據(jù)?

 

還有很多相關(guān)的壓縮算法,總的來說:

  • 它們基本都是支持單模式,或者有限的偏static的模式進(jìn)行數(shù)據(jù)的壓縮。
  • 很多為了提高壓縮率,都用了 bit-packing (甚至有損壓縮),但對越來越廣泛使用的并行計算不太友好。

兩階段的基于深度學(xué)習(xí)的壓縮算法

1 時序數(shù)據(jù)壓縮的特性

時序數(shù)據(jù)來源于 IoT、金融、互聯(lián)網(wǎng)、業(yè)務(wù)管理監(jiān)控等方方面面,形態(tài)特性相差很多,然后對數(shù)據(jù)精確度等的要求也不盡相同。如果只能有一種統(tǒng)一的壓縮算法進(jìn)行無差別對待地處理,那應(yīng)該是基于無損的、用 8B 數(shù)據(jù)進(jìn)行數(shù)據(jù)描述的算法。

下圖是阿里云業(yè)務(wù)中一些時序數(shù)據(jù)的示例,無論是從宏觀還是微觀層面,數(shù)據(jù)的 pattern 都是五花八門的,不僅僅是形狀曲線,也包括數(shù)據(jù)精度等。所以壓縮算法很有必要支持盡量多的一些壓縮模式,然后又可以既有效又經(jīng)濟(jì)地選擇其中一種進(jìn)行壓縮。

如何更高效地壓縮時序數(shù)據(jù)?

 

對于一個大型的商用的時序數(shù)據(jù)壓縮算法,需要重點關(guān)注三個重要的特性:

  • Time correlation:時序數(shù)據(jù)有很強(qiáng)的時間相關(guān)性,然后對應(yīng)的數(shù)據(jù)基本上是連續(xù)的。采樣間隔通常是 1s,100ms 等。
  • Pattern diversity:如上圖,pattern 及特性差距會很大。
  • Data massiveness:每天、每小時、每秒需要處理的數(shù)據(jù)量都是海量的,總體處理數(shù)據(jù)至少是在每天 10P 的 level,對應(yīng)的壓縮算法需要高效且有高吞吐率。

2 新算法核心理念

追本溯源,數(shù)據(jù)壓縮的本質(zhì)可分為兩階段:首先 Transform 階段把數(shù)據(jù)從一個空間轉(zhuǎn)化到另外一個更規(guī)則的空間,然后在差值編碼階段用各種各樣的辦法較好的標(biāo)識變換后的差值。

根據(jù)時序數(shù)據(jù)的特點,可以定義以下 6 個基本的 transform primitives(可擴(kuò)展):

如何更高效地壓縮時序數(shù)據(jù)?

 

然后定義以下 3 種基本的 differential coding primitives(可擴(kuò)展):

如何更高效地壓縮時序數(shù)據(jù)?

 

接下來把上面的兩種 tools 排列組合進(jìn)行壓縮,這樣可行但效果肯定不太好,因為模式選擇和相關(guān)參數(shù)的 cost 比重太高了,需要 2B(primitive choice + primitive parameter)的控制信息,占了 8B 需要表達(dá)數(shù)據(jù)的 25%。

更好的方法應(yīng)該是對數(shù)據(jù)的特性進(jìn)行抽象化分層表達(dá),示意圖如下。創(chuàng)建一個控制參數(shù)集較好的表達(dá)所有的情況,然后在全局(一個 timeline)層面選擇合適的參數(shù)來確定一個搜索空間(只包含少量的壓縮模式,譬如 4 種);然后在具體進(jìn)行每個點的壓縮時,遍歷從中選擇出最好的那一種壓縮模式進(jìn)行壓縮??刂菩畔⒌谋戎卦?~3%。

如何更高效地壓縮時序數(shù)據(jù)?

 

3 兩階段壓縮框架AMMMO

AMMMO(adatpive multiple mode middle-out)整體過程分為兩個階段,第一階段確定當(dāng)前這條時間線的總體特性(確定 9 個控制參數(shù)的具體值);然后在第二階段在少量的壓縮模式中遍歷并查找最后的一種進(jìn)行壓縮,具體框圖如下:

如何更高效地壓縮時序數(shù)據(jù)?

 

第二階段的模式選擇沒有難度,邏輯簡單適合高效率執(zhí)行;第一階段確定各參數(shù)值(9個這里)得到合適的壓縮空間有比較大的挑戰(zhàn),需要從理論上的 300K 多個排列組合選擇里找出合適的那一個。

4 基于規(guī)則的模式空間選擇算法

可以設(shè)計一種算法,譬如創(chuàng)建各個壓縮模式的效果記錄牌(scoreboard),然后遍歷一個 timeline 里的所有點并進(jìn)行分析記錄,然后再經(jīng)過統(tǒng)計分析比較等選擇最好的模式。一些顯而易見的問題有:

  • 選擇的評估指標(biāo)是否理想?
  • 需要人工去思考并編寫程序,有較多的實現(xiàn),debug 和 maintain 的工作量。
  • 如果算法中的 primitive,壓縮模式等做了改變,整個代碼都需要重構(gòu),基于上面的選擇不是理論選擇,需要一種自動且較智能的方法支撐不停的演化等。

深度強(qiáng)化學(xué)習(xí)

1 問題建模

簡化上面的整個模式空間選擇算法如下圖,我們可以把這個問題等同于多目標(biāo)的分類問題,每個參數(shù)就是一個目標(biāo),每個參數(shù)空間的取值范圍就是可選擇的類目數(shù)。深度學(xué)習(xí)在圖像分類,語義理解等方面證明了它的高可用性。類似地,咱們也可以把這里的模式空間的選擇問題用深度學(xué)習(xí)來實現(xiàn),把它當(dāng)做一個 multi-label 的 classification 問題。

如何更高效地壓縮時序數(shù)據(jù)?

 

用什么樣的網(wǎng)絡(luò)?考慮到識別的主要關(guān)系是 delta/xor, shift,bitmask 等為主,cnn 不恰當(dāng),full-connect 的 mlp 比較合適。相應(yīng)地,把一條時間線上的所有點,如果 1 小時就是 3600 個共 3600*8B,有些太多,考慮到同一 timeline 內(nèi)部一段一段的相似性,把 32 個點作為一個最基本的處理單元。

接下來,怎么去創(chuàng)建訓(xùn)練樣本?怎么給樣本尋找 label 呢?

在這里我們引入了強(qiáng)化學(xué)習(xí),而不是有監(jiān)督的學(xué)習(xí)去訓(xùn)練,因為:

1)去創(chuàng)建有 label 的樣本很難

32 個樣本 256B,理論上 sample 有 256^256 種可能性,對每個這種樣本,需要遍歷 300K 的可能性才能找出最好的那一個。創(chuàng)建及選擇 sample,create label 的工作量都非常大。

2)這不是普通的 one-class-label 問題

給定一個樣本,并不是有唯一的最好的一個結(jié)果,很有可能很多的選擇都能取得相同的壓縮效果,N class(N 基本不可知)的訓(xùn)練又增加了很多難度。

3)需要一種自動化的方法

壓縮的 tool 等參數(shù)選擇很有可能是需要擴(kuò)展的,如果發(fā)生整個訓(xùn)練樣本的創(chuàng)建等都需要重新再來。需要一種自動化的辦法。

用什么樣的強(qiáng)化學(xué)習(xí)呢?DQN,policy gradient,還是 actor-critic? 如前面分析,DQN 是不太適合 reward/action 不連續(xù)的的情況,這里的參數(shù),譬如 majorMode 0 和 1 是完全不同的兩種結(jié)果,所以 DQN 不合適。此外,壓縮問題一方面不容易評價另外網(wǎng)絡(luò)也沒有那么復(fù)雜,不需要 actor-critic。最終我們選擇了 policy gradient。

Policy gradient 常見的 loss 是用一個慢慢提高的 baseline 作為衡量標(biāo)準(zhǔn)來反饋當(dāng)前的 action 是否合適,但這里并不太合適(效果嘗試了也不太好),因為這里 sample 的理論 block(256^256)state 太多了一些。為此,我們專門設(shè)計了一個 loss。

得到了每個 block 的參數(shù)后,考慮到 block 的相關(guān)性等??梢杂媒y(tǒng)計的辦法,聚合得到整個 timeline 的最終參數(shù)設(shè)置。

2 深度強(qiáng)化學(xué)習(xí)網(wǎng)絡(luò)框架

整體的網(wǎng)絡(luò)框架示意圖如下:

如何更高效地壓縮時序數(shù)據(jù)?

 

在訓(xùn)練端:隨機(jī)選擇 M 個 block,每個 block 復(fù)制 N 份,然后輸入到有 3 個隱含層的全連接網(wǎng)絡(luò)中,用 region softmax 得到各參數(shù)各種 choice 的概率,然后按照概率去 sample 每個參數(shù)的值,得到參數(shù)后輸入到底層的壓縮算法進(jìn)行實際壓縮并得到壓縮值。復(fù)制的 N 個 block 相互比較計算 loss 然后做反向傳播。loss 的整體設(shè)計為:

如何更高效地壓縮時序數(shù)據(jù)?

 

fn(copi) 描述了壓縮效果,比 N 個 block 的均值高就正反饋,Hcs(copi) 是交叉熵,希望得分高的概率越大越確定越好;反之亦然。后面的 H(cop) 是交叉熵作為正則化因子來盡量避免網(wǎng)絡(luò)固化且收斂到局部最優(yōu)。

在推理端,可以把一個 timeline 的全部或局部 block 輸入到網(wǎng)絡(luò)中,得到參數(shù),做統(tǒng)計聚合然后得到整個 timeline 的參數(shù)。

結(jié)果數(shù)據(jù)

1 實驗設(shè)計

測試數(shù)據(jù)部分一方面隨機(jī)選取了阿里云業(yè)務(wù) IoT 和 server 兩個大場景下共 28 個大的 timeline;另外也選取了時序數(shù)據(jù)分析挖掘領(lǐng)域最通用的數(shù)據(jù)集 UCR?;拘畔⑷缦拢?/p>如何更高效地壓縮時序數(shù)據(jù)?

 


如何更高效地壓縮時序數(shù)據(jù)?

 

對比算法選取了比較有對比性的 Gorilla,MO 和 Snappy。因為 AMMMO 是兩階段的壓縮算法框架,第一階段的參數(shù)選擇可以有各種各樣的算法,這里選用了 Lazy(簡單粗暴的設(shè)置一些普世參數(shù)),rnd1000Avg(隨機(jī) 1000 次取效果平均值),Analyze(用人工代碼的算法)和 ML(深度強(qiáng)化學(xué)習(xí)的辦法)等。

2 壓縮效果對比

首先從整體壓縮率來看,AMMMO 兩階段自適應(yīng)多模式的壓縮比起 Gorila/MO 等有明顯的效果提升,平均壓縮率提升在 50% 左右。

如何更高效地壓縮時序數(shù)據(jù)?

 

然后 ML 的效果怎么樣呢?下圖在 ML 的視野對比了測試集 B 上的壓縮效果,總的來說,ML 相比人工精心設(shè)計的算法略好,比隨機(jī)平均等明顯好很多。

如何更高效地壓縮時序數(shù)據(jù)?

 

3 運(yùn)行效率

AMMMO 借鑒了 MO 的設(shè)計思想,移除了 bit-packing,不僅僅在 CPU 上能高速運(yùn)行,也特別適合于并行計算平臺如 GPU。此外 AMMMO 分兩階段,其中第一階段的性能會差一些,但很多時候,譬如對一個特定的設(shè)備過去 2 天的數(shù)據(jù),全局壓縮參數(shù)是可以復(fù)用的。下圖描述了整體的性能對比,實驗環(huán)境為 “Intel CPU 8163 + Nvidia GPU P100",其中 AMMMO 的代碼使用了 P100。

如何更高效地壓縮時序數(shù)據(jù)?

 

從上圖中看出,AMMMO 在壓縮端和解壓縮端都能達(dá)到 GB/s 的處理性能,性能指標(biāo)還是很不錯的。

4 算法學(xué)到的效果

深度強(qiáng)化學(xué)習(xí)訓(xùn)練的網(wǎng)絡(luò)從最終效果上看著不錯,那它是不是真的學(xué)到了有意義的內(nèi)容呢?下標(biāo)對比了 3 種算法在幾個測試集上的表現(xiàn),可以看出,ML 版本的參數(shù)選擇和分析算法/最優(yōu)效果選擇是差不多的,特別是在 byte offset 和 majorMode 的選擇上。

如何更高效地壓縮時序數(shù)據(jù)?

 

這種壓縮的全連接網(wǎng)絡(luò)參數(shù)表象會是怎么樣的?對第一層進(jìn)行了參數(shù) heatmap 可視化(正的參數(shù)為紅色,負(fù)的為藍(lán)色,值越大顏色越亮),如下:

如何更高效地壓縮時序數(shù)據(jù)?

 

可以明顯看到 32 個點在相同的 byte 上有很多規(guī)則的操作,豎線(如果跨越 byte 則混淆情況),可以認(rèn)為是在對應(yīng)的位置上做 delta 或 xor 運(yùn)算等。然后數(shù)字變動最大的 Byte0 的參數(shù)也比較活躍。

綜上,深度學(xué)習(xí)學(xué)到的東西還是挺有解釋性的。

來源:阿里云開發(fā)者社區(qū)

分享到:
標(biāo)簽:時序 數(shù)據(jù)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定