創(chuàng )澤機器人 |
CHUANGZE ROBOT |
隨著(zhù)移動(dòng)互聯(lián)網(wǎng)、IoT、5G 等的應用和普及,一步一步地我們走進(jìn)了數字經(jīng)濟時(shí)代。隨之而來(lái)的海量數據將是一種客觀(guān)的存在,并發(fā)揮出越來(lái)越重要的作用。時(shí)序數據是海量數據中的一個(gè)重要組成部分,除了挖掘分析預測等,如何G效的壓縮存儲是一個(gè)基礎且重要的課題。同時(shí),我們也正處在人工智能時(shí)代,深度學(xué)習已經(jīng)有了很多很好的應用,如何在更多更廣的層面發(fā)揮作用?本文總結了當前學(xué)術(shù)界和工業(yè)界數據壓縮的方法,分析了大型商用時(shí)序數據壓縮的特性,提出了一種新的算法,分享用深度強化學(xué)習進(jìn)行數據壓縮的研究探索及取得的成果。
深度學(xué)習的本質(zhì)是做決策,用它解決具體的問(wèn)題時(shí)很重要的是找到契合點(diǎn),合理建模,然后整理數據優(yōu)化 loss 等終較好地解決問(wèn)題。在過(guò)去的一段時(shí)間,我們在用深度強化學(xué)習進(jìn)行數據壓縮上做了一些研究探索并取得了一些成績(jì),已經(jīng)在 ICDE 2020 research track 發(fā)表(Two-level Data Compression using Machine Learning in Time Series Database)并做了口頭匯報。在這里做一個(gè)整體粗略介紹,希望對其它的場(chǎng)景,至少是其它數據的壓縮等,帶來(lái)一點(diǎn)借鑒作用。
背景描述
1 時(shí)序數據
時(shí)序數據顧名思義指的是和時(shí)間序列相關(guān)的數據,是日常隨處可見(jiàn)的一種數據形式。下圖羅列了三個(gè)示例:a)心電圖,b)股票指數,c)具體股票交易數據。
關(guān)于時(shí)序數據庫的工作內容,簡(jiǎn)略地,在用戶(hù)的使用層面它需要響應海量的查詢(xún),分析,預測等;而在底層它則需要處理海量的讀寫(xiě),壓縮解壓縮,采用聚合等操作,而這些的基本操作單元就是時(shí)序數據 <timestamp, value>,一般(也可以簡(jiǎn)化)用兩個(gè) 8 byte 的值進(jìn)行統一描述。
可以想象,任何電子設備每天都在產(chǎn)生各種各樣海量的時(shí)序數據,需要海量的存儲空間等,對它進(jìn)行壓縮存儲及處理是一個(gè)自然而然的方法。而這里的著(zhù)重點(diǎn)就是如何進(jìn)行更G效的壓縮。
2 強化學(xué)習
機器學(xué)習按照樣本是否有 groundTruth 可分為有監督學(xué)習,無(wú)監督學(xué)習,以及強化學(xué)習等。強化學(xué)習顧名思義是不停地努力地去學(xué)習,不需要 groundTruth,真實(shí)世界很多時(shí)候也沒(méi)有 groundTruth,譬如人的認知很多時(shí)候就是不斷迭代學(xué)習的過(guò)程。從這個(gè)意義上來(lái)說(shuō),強化學(xué)習是更符合或更多面普遍的一種處理現實(shí)世界問(wèn)題的過(guò)程和方法,所以有個(gè)說(shuō)法是:如果深度學(xué)習慢慢地會(huì )像 C/Python/Java 那樣成為解決具體問(wèn)題的一個(gè)基礎工具的話(huà),那么強化學(xué)習是深度學(xué)習的一個(gè)基礎工具。
強化學(xué)習的經(jīng)典示意圖如下,基本要素為 State,Action,和 Environment;具^(guò)程為:Environment 給出 State,Agent 根據 state 做 Action 決策,Action 作用在 Environment 上產(chǎn)生新的 State 及 reward,其中 reward 用來(lái)指導 Agent 做出更好的 Action 決策,循環(huán)往復….
而常見(jiàn)的有監督學(xué)習則簡(jiǎn)單很多,可以認為是強化學(xué)習的一種特殊情況,目標很清晰就是 groudTruth,因此對應的 reward 也比較清晰。
強化學(xué)習按照個(gè)人理解可以歸納為以下三大類(lèi):
1)DQN
Deep Q network,比較符合人的直觀(guān)感受邏輯的一種類(lèi)型,它會(huì )訓練一個(gè)評估 Q-value 的網(wǎng)絡(luò ),對任一 state 能給出各個(gè) Action 的 reward,然后終選擇 reward 大的那個(gè) action 進(jìn)行操作即可。訓練過(guò)程通過(guò)評估 “估計的 Q-value” 和 “真正得到的 Q-value” 的結果進(jìn)行反向傳遞,終讓網(wǎng)絡(luò )估計 Q-value 越來(lái)越準。
2)Policy Gradient
是更加端到端的一種類(lèi)型,訓練一個(gè)網(wǎng)絡(luò ),對任一 state 直接給出終的 action。DQN 的適用范圍需要連續 state 的 Q-value 也比較連續(下圍棋等不適用這種情況),而 Policy Gradient 由于忽略?xún)炔窟^(guò)程直接給出 action,具有更大的普適性。但它的缺點(diǎn)是更難以評價(jià)及收斂。一般的訓練過(guò)程是:對某一 state,同時(shí)隨機的采取多種 action,評價(jià)各種 action 的結果進(jìn)行反向傳遞,終讓網(wǎng)絡(luò )輸出效果更好的 action。
3)Actor-Critic
試著(zhù)糅合前面兩種網(wǎng)絡(luò ),取長(cháng)補短,一方面用 policy Gradient 網(wǎng)絡(luò )進(jìn)行任一 state 的 action 輸出,另外一方面用 DQN 網(wǎng)絡(luò )對 policy gradient 的 action 輸出進(jìn)行較好的量化評價(jià)并以之來(lái)指導 policy gradient 的更新。如名字所示,就像表演者和評論家的關(guān)系。訓練過(guò)程需要同時(shí)訓練 actor(policy Graident)和 critic(QN)網(wǎng)絡(luò ),但 actor 的訓練只需要 follow critic 的指引就好。它有很多的變種,也是當前 DRL 理論研究上不停發(fā)展的主要方向。
時(shí)序數據的壓縮
對海量的時(shí)序數據進(jìn)行壓縮是顯而易見(jiàn)的一個(gè)事情,因此在學(xué)術(shù)界和工業(yè)界也有很多的研究和探索,一些方法有:
Snappy:對整數或字符串進(jìn)行壓縮,主要用了長(cháng)距離預測和游程編碼(RLE),廣泛的應用包括 Infuxdb。
Simple8b:先對數據進(jìn)行前后 delta 處理,如果相同用RLE編碼;否則根據一張有 16 個(gè) entry 的碼表把 1 到 240 個(gè)數(每個(gè)數的 bits 根據碼表)pack 到 8B 為單位的數據中,有廣泛的應用包括 Infuxdb。
Compression planner:引入了一些 general 的壓縮 tool 如 scale, delta, dictionary, huffman, run length 和 patched constant 等,然后提出了用靜態(tài)的或動(dòng)態(tài)辦法組合嘗試這些工具來(lái)進(jìn)行壓縮;想法挺新穎但實(shí)際性能會(huì )是個(gè)問(wèn)題。
ModelarDB:側重在有損壓縮,基于用戶(hù)給定的可容忍損失進(jìn)行壓縮;舅枷胧前丫S護一個(gè)小 buff,探測單前數據是否符合某種模式(斜率的直線(xiàn)擬合),如果不成功,切換模式重新開(kāi)始buff等;對支持有損的 IoT L域比較合適。
Sprintz:也是在 IoT L域效果會(huì )比較好,側重在 8/16 bit 的整數處理;主要用了 scale 進(jìn)行預測然后用 RLC 進(jìn)行差值編碼并做 bit-level 的 packing。
Gorilla:應用在 Facebook G吞吐實(shí)時(shí)系統中的當時(shí) sofa 的壓縮算法,進(jìn)行無(wú)損壓縮,廣泛適用于 IoT 和云端服務(wù)等各個(gè)L域。它引入 delta-of-delta 對時(shí)間戳進(jìn)行處理,用 xor 對數據進(jìn)行變換然后用 Huffman 編碼及 bit-packing。示例圖如下所示。
MO:類(lèi)似 Gorilla,但去掉了 bit-packing,所有的數據操作基本都是字節對齊,降低了壓縮率但提供了處理性能。
![]() |
機器人招商 Disinfection Robot 機器人公司 機器人應用 智能醫療 物聯(lián)網(wǎng) 機器人排名 機器人企業(yè) 機器人政策 教育機器人 迎賓機器人 機器人開(kāi)發(fā) 獨角獸 消毒機器人品牌 消毒機器人 合理用藥 地圖 |