用循環神經網絡進行文件無損壓縮:斯坦福大學提出DeepZip

選自斯坦福大學web

做者:Kedar Tatwawadi算法

機器之心編譯網絡

參與:李澤南、黃小天架構

神經網絡不只能夠分析、識別特徵,提出預測,還能夠壓縮文件。斯坦福大學的研究者最近提交的論文中,循環神經網絡捕捉長期依賴關係的優點被用於無損壓縮任務中,這種被稱爲 DeepZip 的技術已在文本和基因組數據文件中獲得了實驗。研究人員稱,其結果頗具潛力。

正在進行的大數據變革讓咱們收集了大量不一樣類型的數據,如圖像、文本和音頻等;新類型的數據如 3D VR 數據、用於自動駕駛的點雲數據、不一樣類型的基因組數據等,佔據着巨量的存儲空間。所以,人們對於統計模型和適用於各類數據格式的高效壓縮方法有着很大的需求。框架

近 50 年來,無損壓縮技術已經歷了不少重要的發展。在克勞德·香農的一個經典研究中,這位先驅者指出,熵率是給定數據源可能達到的最佳壓縮比,同時也給出了一種實現方法(儘管不甚實際)。J. Rissanen 提出了算術編碼,這是一個實現已知分佈熵邊界的有效方法。對於未知分佈的數據源(如文本和 DNA),他還設計了算術編碼的自適應變體,它能夠經過嘗試學習條件 k-gram 模型的分佈來進行壓縮。儘管這種過程的複雜度會隨 k 的變化而呈指數級增加,一般上下文會被限制在 k=20 符號。這會致使壓縮比例的顯著損失,由於模型沒法捕捉長期依賴關係。咱們都知道基於循環神經網絡(LSTM/GRU)的模型善於捕捉長期依賴關係,同時能夠較準確地預測下一個字母/單詞。如此一來,可否使用基於 RNN 的框架來用於壓縮任務?在斯坦福大學的一份研究中,研究人員探索了使用基於 RNN 的語言模型及算術編碼來提高無損壓縮的性能。less

在這一研究的論文中,研究人員首先分析和理解了已知熵狀況下,合成數據集上 RNN 和算術編碼方法的表現,其目的是對各類 RNN 結構的能力和極限進行直觀的理解。研究人員也對僞隨機數生成序列(PRNG)進行了測試,儘管其熵率爲零(由於它們是肯定性的),但使用標準技術極難壓縮。基於對此前在合成數據集上測試的經驗,研究人員使用了文本壓縮模型和基因組數據集。性能


壓縮器框架學習


2.1 概述測試

首先是用於實驗的壓縮器模型,其框架能夠被分爲兩個模塊:大數據

  1. RNN 機率評估器模塊:對於數據流 S_0,S_1……S_N,RNN 機率評估器模塊能夠基於此前觀察到的負號 S_0,S_1……S_k-1 來估計 S_k 的條件機率分佈。這一律率估計 Pˆ(S_k|S_0, S_1, . . . , S_k−1)會被遞送到算術編碼模塊;
  2. 算術編碼器模塊:算法編碼器模塊可被認爲是 FSM,它接收下一個符號的機率分佈估計並將其編碼成一個狀態(與解碼器的操做相反)。


2.2 RNN 機率評估器模塊

實際上,RNN 評估器模塊能夠是任何循環神經網絡(LSTM/GRU),其中包括最終估算機率的 Softmax 層。算術編碼器模塊能夠是經典的算術編碼 FSM,或更快的非對稱數字系統(Asymmetric Numeral Systems,ANS)模塊。對於模型的運行,有一些重要的限制:

  1. 輸入的因果關係:RNN 評估器必須是具備因果關係的,它能夠視輸入爲特徵,僅僅基於此前的編碼符號進行估算(BiLSTM 等或許不行)。
  2. 權重更新:權重更新(如執行)應在編碼器和解碼器中執行。這是必要的,由於咱們須要編碼器和解碼器生成每一個符號的分佈。

研究人員主要探索了兩個模型:符號級別的GRU模型(DeepZip-ChGRU)和基於特徵的模型(DeepZip-Feat)。在 DeepZip-GRU上,在第 k 步,GRU 模塊的輸入是 X_k-1,而 state_k-1 是輸出的狀態,直到 k 點爲止。DeepZip-Feat 包含輸入做爲特徵計算因果關係,如過去的 20 個符號,以及觀察到的流內上下文表現記錄。此外,研究人員也考慮過基於文字的模型(Attention-RWA 模型)。


2.3 算術編碼器模塊

算術編碼器保持在區間 [0,1] 之間。每一個符號流惟一地肯定一個範圍,這個範圍可按順序計算,並直接基於下一符號的機率評估。它可視爲傳遞至下一迭代的算術編碼器的一個狀態。最後,該範圍被編碼,由此造成了壓縮數據。在給定機率評估的狀況下,解碼操做則相反。算術編碼操做如圖 2 所示。

圖 2:獨立同分布 (0.6, 0.2, 0.1, 0.1) 做爲分佈源的序列 (0, 2, 3) 算術編碼


2.4 編碼器&解碼器操做

編碼器&解碼器操做以下圖所示:

  1. 算術編碼器模塊一般從首個符號 S_0 的自定義機率分佈評估開始。完成以後,解碼器能夠解碼首個符號。
  2. 算術編碼器和 RNN 評估器模塊都經過迭代傳遞狀態信息。算術編碼器的最終狀態充當壓縮數據。
  3. 若是模型訓練超過一個 epoch,RNN 評估器模塊的權重須要被存儲,並計算壓縮大小(MDL Principle [14])。

圖 3:編碼器模型架構


接着研究人員討論了不一樣模型在上述數據集上的一些有趣實驗。模型有:

  1. DeepZip-ChRNN:基於字符級 RNN 的神經網絡模型。
  2. DeepZip-ChGRU:基於字符級 GRU 的神經網絡模型。
  3. DeepZip-Feat:基於 GRU 的模型,其中包含全部之前觀察到的符號的功能,而不只僅是以前的輸入。


3 合成數據集上的實驗

圖 5:包含 128 個單元的 DeepZip-ChRNN 模型在 Markov-k 源上的表現


圖 6:包含 128 個單元的 DeepZip-ChGRU 模型在 Markov-k 源上的表現

圖 7:包含 128 個單元的 DeepZip 模型與 GZIP[15]、適應性算術編碼-CABAC 的表現對比


圖 8:包含 128 個單元的 DeepZip 模型在實際數據集上的表現


論文:DeepZip: Lossless Compression using Recurrent Networks

論文地址:web.stanford.edu/class/cs224…

摘要:現今,咱們生成的數據量大幅增長。新類型的數據,好比基因組數據 [1]、3D-360 度 VR 數據、自動駕駛點雲數據已經出現。大量努力用在了分析以上數據的統計學信息,以設計好的壓縮器。咱們由信息論得知,好的壓縮器來自好的預測器 [2]。咱們知道基於循環神經網絡(LSTM/GRU)的模型擅長捕捉長期依賴關係 [3],並能夠很好地預測下一字符/詞。這樣 RNN 可被有效用於壓縮嗎?咱們分析了 RNN 在數據壓縮問題上的應用。

壓縮器 DeepZip 包含兩個主要模塊:基於 RNN 的機率評估器和算術編碼模塊。首先,咱們討論了現有文獻和基本的模型架構。接着咱們深刻到合成及真實文本和基因組數據集的實驗結果。最後,咱們對發現的結果和將來工做做了討論。

相關文章
相關標籤/搜索