宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

獨立研究者開發的"小模型大壓縮"系統:不靠超級AI,一台普通電腦也能超越頂級壓縮工具

2026年05月11日 首頁 » 熱門科技

這項由獨立研究者發表的研究成果以預印本形式發布於2026年4月,論文編號為arXiv:2605.02904,感興趣的讀者可通過該編號在arXiv平台查閱完整論文。研究成果的名稱是StateSMix,一個聽起來有點技術腔,但背後故事相當引人入勝的壓縮系統。

說到文件壓縮,大多數人腦海里浮現的可能是把一堆文件塞進一個zip包,或者用WinRAR生成一個rar文件。我們習以為常地認為,壓縮文件不過是把數據"打包"一下,節省一點儲存空間。但實際上,數據壓縮是一門深刻的數學藝術——它的本質,是預測。

一、壓縮的本質:預測就是壓縮

這聽起來有點繞,但用一個簡單的例子就能說清楚。假設你在收一封朋友發來的信,信的開頭寫著"今天天氣很好,我去公園……",你大概已經能猜出下一個字是"散步"、"玩耍"或者"遛狗",而不是"發射火箭"。正因為有這種預測能力,如果你和朋友事先約好"遇到可預測的詞就用一個簡短代號替代",那封信就能寫得更短。這正是壓縮的底層邏輯——模型對下一個符號的預測越准,就越能用更少的位數把它表示出來。

香農在1948年的資訊論奠基之作中就證明了這一點:編碼一個符號所需的最少位數,等於這個符號出現概率的負對數。換句話說,一件事情越"不出所料",描述它所需的資訊量就越少。

沿著這條思路走了幾十年,壓縮工具從LZ77、gzip、LZMA,一路進化到了用神經網路做預測的現代方案。近年來,研究者們發現,像GPT這樣的大語言模型,因為能極其精準地預測下一個詞,理論上可以實現驚人的壓縮比。Chinchilla 70B這個擁有700億參數的巨型模型,在100MB的英文維基百科文本上,能把每個字節壓縮到僅用0.664個比特來表示,遠超任何傳統工具。

但這裡有一個巨大的代價:這些模型本身就重達幾百GB,必須提前下載好、雙方共享,才能用於壓縮和解壓。更要命的是,運行它們需要專業的GPU顯卡,普通筆記本電腦根本跑不動。就像雇了一支交響樂團來伴奏,樂手的酬勞和樂器運費加起來比演出票價還貴。

這篇論文的出發點,就是要走另一條路:完全不依賴任何預訓練的大模型,一切從零開始,用極小的資源,在普通CPU上實現超越頂級傳統壓縮工具的效果。

二、從零開始的"即學即用"壓縮器

StateSMix的核心理念,可以用"邊讀邊學"來概括。傳統的神經網路壓縮器把模型和壓縮結果分開存放——模型是模型,壓縮包是壓縮包,解壓時必須兩樣東西都有。而StateSMix的做法是:模型從完全空白開始,一邊讀取要壓縮的文件內容,一邊學習這個文件的統計規律,學到的知識被"隱式地烙印"在壓縮結果里,根本不需要單獨儲存。

這就像一個速記員,在沒有任何預習的情況下開始聽講座,隨著講座推進,他越來越能預判講者下一句話要說什麼,記錄也越來越簡短高效。等講座結束,他的筆記本里不僅有講座內容的壓縮版,其中還暗含了他在這場講座中學到的所有預測規律。

StateSMix的"速記員"核心,是一個叫做Mamba的狀態空間模型(SSM)。相比近年來大紅大紫的Transformer(也就是ChatGPT背後的基礎架構),Mamba在處理序列數據時效率更高,因為它用的是一種類似"滾動記憶"的機制,而不是每次都回頭看所有歷史內容。研究者用了一個極其袖珍的版本:只有2層,隱藏維度僅32,加上詞彙表相關的參數,每個文件大約只有12萬個活躍參數——相比之下,GPT-3有1750億個參數,這個模型連它的零頭的零頭都不到。

就是這樣一個"迷你學徒",配合一套叫做"稀疏N元語法偏置"的輔助機制,組成了StateSMix的完整系統。

三、系統的四個工作階段:從原始文件到壓縮包

StateSMix處理一個文件,大致經歷四個階段,每個階段各有分工。

第一步是把原始字節轉換成"詞元"(token)。StateSMix借用了GPT-NeoX的BPE分詞方案,把連續的字節流切成有意義的片段。以英文維基百科為例,平均每3.3到3.5個字節對應一個詞元。這套詞彙表理論上有49152個不同的詞元類型,但實際上任何一個文件里出現的詞元種類都遠少於此——一篇100MB的維基百科文本大約用到44298種,而一篇1MB的文本只用到18058種。StateSMix會為每個文件單獨建立一個"緊湊映射",只保留實際用到的詞元,這樣模型的嵌入矩陣和輸出矩陣就可以縮小到剛好合適的尺寸,計算量隨之大幅減少。這個映射表本身用一種叫做Rice編碼的技術壓縮後存入文件頭部,只需大約12KB。

第二步是初始化所有模型參數和輔助結構,包括Mamba的權重(從隨機小值開始)和一系列N元語法哈希表。

第三步是最核心的"預測-編碼-更新"循環。對於文件中的每一個詞元,系統先用當前的模型對下一個詞元給出一個概率分布,然後用範圍算術編碼(一種比霍夫曼編碼更精確的編碼方式,能逼近理論極限)把這個詞元編碼進輸出流,編碼完成後再把這個詞元的真實身份告訴模型,讓模型用它更新自己的知識。每積累32個詞元,就對Mamba模型做一次梯度下降訓練,更新參數。

第四步是序列化輸出文件,把編碼好的比特流、文件頭資訊和映射表打包成最終的壓縮文件。

解壓過程完全對稱:解碼器同樣從頭開始訓練,逐詞元地跑同樣的預測-解碼-更新循環,因為每次訓練用的數據都是已經解碼出來的真實詞元,所以兩端的模型狀態始終保持同步,保證了正確還原。

四、Mamba的"滾動記憶":如何在極小體積內學會預測

Mamba的核心機制值得多花一點時間解釋,因為它是StateSMix能跑得快、占內存少的關鍵所在。

經典的循環神經網路(RNN)像一個只有固定大小日記本的旅行者,每讀一個新詞,就更新日記,但翻回去看舊記錄很費力。Transformer像一個有超強記憶力的學者,能同時回顧所有歷史內容,但處理長序列時計算量呈平方級增長,代價極高。Mamba則走了一條中間路:它維護一個緊湊的"狀態向量",每步根據當前輸入動態決定"記住多少、忘掉多少"——這個比例是輸入自適應的,而不是固定的。

在StateSMix里,Mamba的每一層都按照固定步驟運作。輸入向量先經過層歸一化穩定數值範圍,然後通過一個投影矩陣分成兩個分支:一個用於SSM核心計算,另一個用於門控。SSM分支先經過一個短程因果卷積(窗口長度4),再投影出三個關鍵參數B、C和Δ,它們都依賴當前輸入,這正是Mamba"選擇性"的來源。之後執行狀態更新:每個狀態維度有自己的衰減係數A,通過Δ縮放後決定舊狀態保留多少;同時把新輸入按B權重加進來;最後按C權重讀出狀態向量,得到當前時步的輸出。兩個分支的結果相乘(門控),再經過輸出投影,加上殘差連接後送入下一層。

整個模型的"工作記憶"是一個形狀為2×64×16的浮點數數組,共2048個數,外加卷積緩衝區384個數。就這麼一點點狀態,在壓縮英文文本時,竟然能逐漸學會詞彙搭配習慣、句子結構模式,甚至某些語義關聯。

Mamba各層參數的初始化也有講究。衰減係數的對數初始值按log(1)、log(2)、...、log(16)排列,形成從快到慢的幾何級數時間常數,鼓勵不同狀態維度專注於不同時間尺度的規律。跳連權重D初始化為1,讓模型一開始有一個合理的"直通"基線。

訓練用的是Adam優化器,學習率0.002,每32個詞元的塊訓練一次。文件開頭階段訓練疊代次數更多(前10塊各訓練8次,接下來20塊各訓練4次,之後固定為每塊2次),因為模型剛剛"出生",需要快速熱身。損失函數加入了標籤平滑(平滑係數0.12),避免模型對訓練數據過度自信。

五、N元語法的"精確記憶":用稀疏偏置補充模型的不足

Mamba學到的是統計規律和結構模式,但它無法逐字逐句地"死記硬背"所有曾出現過的精確上下文。這時候,N元語法表就發揮作用了。

N元語法(N-gram)是NLP領域的經典工具,核心思想極其簡單:統計文本里連續N個詞元的共現頻率,以此預測下一個詞。如果某個上下文"the quick brown"之後總是跟著"fox",那麼下次遇到這個上下文,就大膽押注"fox"。N越大,上下文越精確,預測也越有針對性,但覆蓋率越低(因為長序列重複出現的概率更低)。

StateSMix維護了從二元(bigram)到八元(8-gram)、再到十六元(16-gram)和三十二元(32-gram)共九張N元語法哈希表,每張表有2的24次方即1600萬個槽位。每次遇到一個詞元,就把這個詞元對應各長度上下文的計數加一;預測時,把所有表中找到的計數轉換成"對數偏置",疊加到Mamba給出的原始logit向量上。

疊加方式的設計頗為巧妙,借用了一個數學性質:softmax函數對向量做整體平移是不變的(因為分子分母同時乘以同一個常數,結果不變)。這意味著,N元語法的貢獻只需要修改那些計數不為零的詞元對應的logit值,計數為零的詞元根本不用碰——稀疏更新,只動有數據的地方。這在計算上非常高效,因為對於自然語言文本,任何一個上下文後面真正出現過的詞元種類通常只有5到30個,遠小於總詞彙量。

偏置的強度由公式δ = λ·log(1 + c/α)決定,其中c是該上下文後跟這個詞元的歷史計數,λ和α是控制強度和平滑度的超參數,不同N-gram階數有不同的取值。十六元和三十二元表的α設得極小(0.001),哪怕只見過一次的長上下文也會產生很強的偏置——因為31個詞元完全相同的上下文一旦出現過,後續幾乎可以肯定是同一個延續,理應給予極強的確定性信號。

哈希表用線性探測方式解決碰撞,最多探測8個相鄰槽位,有效減少了碰撞丟失;每個槽位儲存完整的64位上下文鍵用於碰撞驗證,加上一個稀疏計數數組(通常4到32個條目)。二元語法表則更簡單,直接用前一個詞元的編號做索引,完全沒有哈希碰撞問題。

十六元和三十二元表的存在,專門針對一類長距離重複模式:維基百科文章里充斥著重複的引用格式、導航模板、頁腳套路,往往跨越10到50個詞元。Mamba的滾動記憶雖然通過訓練能學到一些這類模式,但面對需要精確匹配的長字符串時,哈希表的"死記硬背"更為可靠。

N元語法的整體偏置強度還會根據Mamba的當前預測置信度動態調整。系統實時計算Mamba輸出概率分布的香農熵——熵越高說明Mamba越沒把握,此時N元語法的權重就調大,最高放大到2.5倍;熵越低說明Mamba胸有成竹,此時N元語法權重縮小到0.2倍,幾乎不影響最終結果。這個機制確保兩種來源的資訊相互補充而非相互干擾。

六、其他輔助預測機制

除了Mamba和N元語法,StateSMix還有三個小助手進一步精調概率分布。

第一個是LZ哈希預測器,它記錄"上上一個詞元和上一個詞元"這個二詞組合之後最近出現的下一個詞元,以及這個預測被證實的次數。命中次數越多,對應詞元的logit偏置越大,最大趨近於1.5。這捕獲了那些過於具體、N元語法表也未必能覆蓋的"兩對一"關聯。

第二個是近因偏置,給最近出現的64個詞元額外加分,越新近出現的詞元獎勵越高,模擬了"句子內部詞語傾向於重複"的現象。

第三個是全局頻率先驗,根據整個文件中每個詞元的總出現次數加一個平滑的基礎分,給出模型熱身階段最初幾步的合理起點。

所有這些來源的logit值加在一起,經過softmax歸一化,得到最終的概率分布,送入32位範圍算術編碼器。算術編碼器用整數量化的累積分布函數來編碼每個詞元,每個詞元至少分配頻率1防止零概率,量化精度T=65536,引入的冗餘約為每詞元0.6比特,相對於模型平均每詞元6.8比特的預測誤差是很小的開銷。

七、實驗結果:小模型,真的贏了

評測基準用的是enwik8,這是英文維基百科前若干字節的標準截取,壓縮社區普遍使用它來對比不同工具的性能。對比基準是xz -9e,也就是LZMA2算法的極限預設,公認是不依賴GPU的通用壓縮工具里最強的選手之一,在100MB的enwik8上達到1.989 bpb(每字節比特數)。

在1MB截取上,StateSMix壓縮後是265370字節,對應2.123 bpb,比xz的2.326 bpb小了8.7%;在3MB截取上,StateSMix的805926字節對應2.149 bpb,比xz的2.271 bpb小了5.4%;在10MB截取上,StateSMix的2702498字節對應2.162 bpb,比xz的2.177 bpb小了0.7%。隨著文件增大,優勢在縮窄:在100MB的完整enwik8上,StateSMix以26622640字節、2.130 bpb輸給了xz的1.992 bpb,差距約6.9%。

優勢拐點大約在30MB左右。超過這個規模,LZMA的"字典匹配"開始全面發力——它能發現並近乎零成本地複製幾KB長的完全相同字節塊,而StateSMix的預測-編碼架構無論預測多准,仍需逐詞元編碼,無法實現這種"整塊搬運"的效率。實驗證明,表飽和導致的損失只有約13KB,真正的瓶頸在於架構本身的局限。

壓縮過程中的實時進展也很能說明問題。冷啟動時每詞元需要約8.1比特,50000個詞元後Mamba已經熱身,降到7.1比特;50萬詞元時N元語法表開始真正發力,降至6.9比特;300萬詞元時約6.83比特;此後趨於平穩,最終29700000個詞元結束時穩定在6.813比特。

八、消融實驗:各部件貢獻幾何

為了搞清楚哪個部件貢獻了多少,研究者在3MB的enwik8截取上做了系統性的"拆零件"測試。

只保留全局頻率先驗(最簡單的基準):1571738字節,4.191 bpb。

加上全部N元語法表但不用Mamba:1319045字節,3.517 bpb,比基準改善了16.1%,但仍遠不及xz的851572字節。這說明沒有好的基礎模型,N元語法的"查字典"能力受限於底層分布的質量。

只用Mamba加頻率先驗、不用任何N元語法:840095字節,2.240 bpb,比基準改善了46.6%,並且已經以1.3%的優勢超過xz。這是一個相當令人印象深刻的數字——一個只有12萬參數、從隨機初始化開始的微型模型,僅靠在線學習,就能超越一個歷經數十年優化、專門針對文本壓縮調參的成熟工具。

完整系統(Mamba加所有N元語法):805926字節,2.149 bpb,在純Mamba基礎上再降4.2%,最終比xz好5.4%。N元語法在Mamba之上提供了互補的精確記憶,兩者合力效果超過任何一方單獨工作。

對各N-gram階數的單獨分析揭示了一個有趣的分工格局。二元語法命中率超過99%(幾乎每個位置都有數據),但平均每個上下文後面有約8種不同延續,預測能力有限。隨著階數增加,命中率急劇下降但預測精度大幅提升:八元語法命中率不足5%,但找到時平均只有約2種延續,接近確定性預測。十六元和三十二元表命中率極低(分別約1%和不足0.5%),一旦命中幾乎完全確定下一個詞元。移除任何單個階數都會造成可測量的性能下降,移除二元語法造成的損失最大(約0.5 bpb),因為它的高命中率提供了最穩定的基礎偏置。

九、性能與資源:普通硬體上的代價

StateSMix的速度和內存消耗是其主要局限,也值得正視。在100MB的enwik8上,單核速度約1100詞元/秒,對應約400KB/s;4核OpenMP並行後提升至2000詞元/秒,約700KB/s;完整壓縮100MB需要約4.2小時。相比之下,xz的速度是10MB/s,gzip更是GB/s級別。

內存方面,九張N元語法哈希表合計占用約5.1GB,加上SSM參數和其他開銷,峰值內存約6.1GB。不過得益於Linux的寫時複製零頁機制,實際物理內存占用正比於哈希表的實際負載率,未被訪問的槽位不占實際內存。

75%的運行時間花在"每32個詞元一次"的在線訓練上,主要瓶頸是輸出頭的矩陣乘法:44298個詞元乘以32維,每次前向和反向各需要約140萬次乘加運算。OpenMP把這個循環並行化到多核,帶來約1.9倍的加速。

實現完全用C語言完成,利用AVX2指令集做SIMD向量化,不依賴任何Python、CUDA或BLAS庫,只需gcc加-O3 -march=native -mavx2 -mfma編譯選項即可。

十、與其他系統的橫向比較

把StateSMix放在更大的壓縮工具譜系裡來看,它的定位相當獨特。

與傳統工具比:xz、gzip、bzip2都不能學習文本的語義和句法規律,只能匹配字節層面的重複模式。StateSMix通過在線學習捕獲了更高層次的規律,在中小文件上取得優勢。

與PAQ/CMIX類上下文混合器比:PAQ8px能在enwik8上達到約1.27 bpb,CMIX v21能達到約1.17 bpb,都優於StateSMix,但它們需要極高的計算時間(每秒不足1KB),內存需求16到64GB,且部分版本需要GPU。StateSMix是這個方向上更輕量的實現,權衡點在於以稍差的壓縮比換取更低的資源門檻。

與NNCP比:NNCP v3用在線訓練的Transformer-XL實現約1.19 bpb,比StateSMix強很多,但它把模型權重(約10MB)存入壓縮包,導致短文件時壓縮包反而膨脹(在壓縮enwik81M時實際輸出約3.96 bpb等效),而StateSMix完全不儲存模型,輸出是真正自包含的。

與LLM型壓縮器比:ts_zip用RWKV-169M實現約1.11 bpb,FineZip用LLaMA-3-8B實現約1.024 bpb,甚至還有最新的Nacrith用135M參數的SmolLM2實現0.939 bpb。它們在大文件上的壓縮比遠優於StateSMix,但都需要事先獲取幾百MB到幾十GB的模型權重,並且通常需要GPU,解壓同樣需要相同的模型。StateSMix的優勢在於零預訓練、零外部依賴、純CPU可用,是一個真正意義上開箱即用的自包含方案。

十一、理論支撐:為什麼這樣設計是合理的

研究者為StateSMix的幾個核心設計選擇提供了理論解釋,值得簡述。

Mamba的多尺度記憶來自狀態向量不同維度的衰減率差異。衰減率的對數初始化為log(j+1),使得不同維度的記憶時間常數呈幾何級數分布——有的維度只記住最近1到2步,有的能留存16步以上。因為步長Δ依賴輸入,實際的有效記憶深度還會根據內容動態調整:內容變化劇烈時步長大(記得少),內容緩慢演變時步長小(記得多)。在線訓練則進一步把這些時間常數調整到對當前文件最有用的配置。

N元語法的對數偏置疊加,理論上等價於貝葉斯更新。若把Mamba的概率分布視為先驗,N元語法的計數證據構成一個似然函數,後驗在對數空間的形式恰好是logit相加——也就是StateSMix實際做的事情。

從資訊論角度看,總壓縮長度等於真實熵加上每步的KL散度之和。Mamba降低了全局結構帶來的KL散度,N元語法降低了精確局部模式的KL散度,LZ預測器和近因偏置降低了高度特定重複模式的KL散度,三者各攻一個方向。

與PPM(部分匹配預測)的關係也可以說清楚:把所有N-gram階數的對數偏置加起來,近似等價於PPM的混合預測,只是權重是固定的λ而非PPM的轉義概率。Mamba扮演了PPM背景語言模型的角色,相當於神經版的PPM-Z。與PAQ的關係則是:StateSMix的熵自適應縮放是PAQ上下文混合器的單權重簡化版,PAQ用梯度下降學習每個模型的最優組合權重,StateSMix則用香農熵的解析函數近似。

十二、未來可能的方向

研究者在論文裡列出了幾個有潛力的改進方向,雖然尚未實現,但值得一提。

一個思路是在詞元序列上先做Burrows-Wheeler變換(BWT,bzip2背後的技術),把上下文相同的詞元聚集到一起,大幅放大N元語法表的有效命中率,這是讓系統在大文件上也能保持競爭力的可能路徑。

另一個思路是GPU加速,把輸出頭矩陣乘法和Adam更新搬到GPU上,理論上能把速度提升50到100倍,進而允許使用更大的模型(比如隱藏維度128、4層),在更可接受的時間內實現更好的壓縮比。

還有一個思路是自適應N-gram權重,用類PAQ的在線元學習器動態調整各階N-gram的權重,而不是固定的λ值,讓系統能根據每個文件的統計特徵自動調整。

混合預測-複製架構也是一個有趣方向:檢測到重複的長詞元序列時,跳過算術編碼,直接用(偏移量, 長度)的方式引用歷史內容,徹底繞過概率編碼的開銷,這正是xz在大文件上的核心優勢所在。

說到底,StateSMix講述的是一個關於"小而精"的故事。不靠龐大的預訓練模型,不靠高端顯卡,僅憑一個從空白開始、邊讀邊學的微型神經網路,加上幾張簡單的統計計數表,在一台普通筆記本電腦上就能壓縮得比深耕幾十年的頂級工具還要好——至少在中等規模的文本文件上是這樣。這說明,神經網路的在線學習能力本身就具備相當的實用價值,不一定非要先餵它海量數據才能派上用場。當然,它也並非萬能:在超大文件上,LZMA"整塊複製"的暴力優勢目前還無法被這種逐詞元預測的架構追上。但壓縮比的差距正在縮小,方向清晰,路還很長。

對這項研究感興趣的讀者,可以通過論文編號arXiv:2605.02904在arXiv平台獲取完整的技術細節,代碼也已在GitHub開源,倉庫地址在論文中有明確標註。

Q&A

Q1:StateSMix壓縮時為什麼不需要保存模型參數?

A:StateSMix的模型每次都從零開始訓練,邊讀取被壓縮的文件內容邊更新參數,學到的知識已經"隱式地反映"在壓縮結果的每個編碼決策里。解壓時只需按同樣順序重跑一遍相同的訓練和解碼流程,就能完整還原文件,不需要額外儲存任何權重。

Q2:StateSMix在100MB大文件上為什麼反而不如xz?

A:核心原因在於架構差異。xz的LZMA算法能發現並以近零代價"整塊搬運"重複出現的多KB字節序列,而StateSMix必須逐個詞元地預測和編碼,無論預測多准都有固定開銷。在大文件里重複長段落越來越多,xz的塊複製優勢就越來越明顯,StateSMix的N元語法表也因哈希碰撞開始飽和。

Q3:StateSMix的6GB內存需求主要來自哪裡?

A:主要來自九張N元語法哈希表,每張有1600萬個槽位,共約5.1GB。不過在Linux系統上,從未被寫入的槽位實際不會占用物理內存,所以真實內存消耗正比於文件的N-gram上下文種類數,通常遠低於理論峰值。Mamba模型本身的參數只占約11MB。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新