Skip to main content
QUICK REVIEW

[论文解读] Understanding Entropy Coding With Asymmetric Numeral Systems (ANS): a Statistician's Perspective

Robert Bamler|arXiv (Cornell University)|Jan 5, 2022
Evolutionary Algorithms and Applications被引用 13
一句话总结

本文从统计学与隐变量模型的视角出发,对非对称数字系统(Asymmetric Numeral Systems, ANS)熵编码进行了重新诠释,使机器学习研究人员能够更直观地理解并实现 ANS。论文提出了一种基于 Python 的新型实现方式,通过比特回溯技巧对 ANS 进行泛化,并对一款高性能开源库(constriction)进行了评估,该库在压缩效率接近理论极限的同时,运行速度显著优于算术编码(Arithmetic Coding)。

ABSTRACT

Entropy coding is the backbone data compression. Novel machine-learning based compression methods often use a new entropy coder called Asymmetric Numeral Systems (ANS) [Duda et al., 2015], which provides very close to optimal bitrates and simplifies [Townsend et al., 2019] advanced compression techniques such as bits-back coding. However, researchers with a background in machine learning often struggle to understand how ANS works, which prevents them from exploiting its full versatility. This paper is meant as an educational resource to make ANS more approachable by presenting it from a new perspective of latent variable models and the so-called bits-back trick. We guide the reader step by step to a complete implementation of ANS in the Python programming language, which we then generalize for more advanced use cases. We also present and empirically evaluate an open-source library of various entropy coders designed for both research and production use. Related teaching videos and problem sets are available online.

研究动机与目标

  • 使对算法压缩不熟悉的机器学习与统计学研究人员能够更容易地理解非对称数字系统(Asymmetric Numeral Systems, ANS)。
  • 通过隐变量模型与比特回溯技巧重新诠释 ANS,为声明式建模与过程式编程之间建立概念上的桥梁。
  • 通过将算法分解为比特回溯框架的三个步骤,实现 ANS 的新变体。
  • 开发并实证评估一款面向研究与部署的开源、生产就绪的熵编码库(constriction)。
  • 证明 ANS 与范围编码(Range Coding)在速度上优于算术编码,同时保持接近最优的压缩性能。

提出的方法

  • 将 ANS 重新解释为比特回溯技巧的应用,将其分解为三个步骤:编码作为后验采样、压缩作为比特回溯、解码作为推理。
  • 提出一个完整、可运行的 Python 实现(清单 3.3),通过真实代码逐步展示算法流程。
  • 通过以新方式重新组合比特回溯的三个步骤,对 ANS 进行泛化,从而支持新的压缩模式与模型架构。
  • 引入查找表优化方法,用于分类熵模型,以加速高熵区域的解码。
  • 在低精度模型中采用二分查找进行符号查找,并提供内存与速度之间的可配置权衡。
  • 开发并基准测试了 constriction 库,该库支持 Python 与 Rust,提供多种具有二进制兼容性的熵编码器。

实验结果

研究问题

  • RQ1如何从统计学与隐变量建模的视角理解并实现 ANS?
  • RQ2比特回溯技巧框架能否用于泛化 ANS 并实现新型压缩技术?
  • RQ3在不同熵水平下,ANS 与算术编码、范围编码在比特率与速度方面的性能对比如何?
  • RQ4在不同精度设置与查找策略下实现 ANS 的实际权衡是什么?
  • RQ5能否构建一个统一的高性能熵编码库,同时支持研究原型开发与生产环境部署?

主要发现

  • constriction 库实现了接近理论熵极限的压缩性能,比特率非常接近理论下限。
  • ANS 与范围编码在速度上显著优于算术编码,尤其在高熵区域,算术编码因位级操作而性能下降。
  • 在高熵区域,ANS 解码速度因对符号区间进行二分查找而变慢,但通过为低精度模型使用预计算查找表可有效缓解此问题。
  • 查找表方法可将解码时间降至常数时间,但增加了内存占用,并因缓存性能差而在低熵区域表现更差。
  • 该库的默认配置在速度、内存与压缩效率之间实现了良好平衡,适用于初始原型开发。
  • 比特回溯视角通过重新组合三个算法步骤,使新型 ANS 变体成为可能,为结构化压缩研究开辟了新路径。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。