Scalar Quantization

Scalar Quantization(标量量化)是一种将连续的模拟信号转换为离散的数字信号的技术,广泛应用于数字通信、音频处理、图像压缩等领域。其原理如下:

  • 原理概述:标量量化是通过把输入信号的取值范围划分成有限个区间,然后将落入每个区间的输入值都映射为一个固定的输出值,这个输出值也被称为量化值或重建值。
  • 量化过程
    • 划分区间:首先,根据量化器的设计,将输入信号的取值范围划分为若干个互不重叠的子区间,每个子区间称为一个量化间隔。例如,对于一个取值范围在[-1, 1]的信号,可以将其划分为[-1, -0.5)、[-0.5, 0)、[0, 0.5)、[0.5, 1]这4个量化间隔。
    • 确定量化值:为每个量化间隔指定一个代表值,即量化值。这个量化值通常是该区间的中点或其他特定值。比如在上述例子中,4个量化间隔的量化值可以分别设为-0.75、-0.25、0.25、0.75。
    • 映射量化:当输入信号到来时,判断它落入哪个量化间隔,然后将其映射为该间隔对应的量化值。例如,若输入信号的值为0.3,它落入[0, 0.5)这个量化间隔,那么它将被量化为0.25。
  • 量化误差:由于量化过程是将连续的输入值映射为有限个离散的量化值,所以不可避免地会产生误差,这种误差称为量化误差。量化误差的大小取决于量化间隔的大小,量化间隔越小,量化误差就越小,但所需的量化级数和存储量就越大。
  • 量化器设计准则:在设计标量量化器时,通常需要考虑两个重要的准则,即最小均方误差准则和最大熵准则。最小均方误差准则是指使量化误差的均方值最小,从而使量化后的信号与原始信号在均方意义下最接近。最大熵准则则是在给定量化级数的情况下,使量化后的信号熵最大,从而保留尽可能多的原始信号信息。
    image.png

针对 1024维浮点向量进行Scalar Quantization(8位量化)前后的内存占用对比,分析如下:

1. 原始浮点向量的内存占用

假设原始向量使用 单精度浮点数(float32) 存储(机器学习/信号处理中最常见),每个浮点元素占用 4字节(32位)

  • 总内存 = 维度 × 单元素字节数 = ( 1024 \times 4 = 4096 , \text{字节(4KB)} )。

2. 8位标量量化后的内存占用

“8量化”通常指 每个量化后的值用8位(1字节)表示(如无符号整数0255或有符号整数-128127)。
标量量化对每个维度独立处理,量化后每个元素存储为 1字节的整数(而非浮点)。

  • 总内存 = 维度 × 单元素字节数 = ( 1024 \times 1 = 1024 , \text{字节(1KB)} )。

3. 对比结果

指标 原始浮点向量(float32) 8位量化后(整数)
单元素存储大小 4字节 1字节
总内存占用 4096字节(4KB) 1024字节(1KB)
压缩比 4:1(内存减少75%)

关键假设与说明

  1. 浮点类型:假设使用单精度浮点数(float32),若为双精度(float64,8字节/元素),原始内存会翻倍(8KB),量化后仍为1KB,压缩比变为8:1。
  2. 量化方式:标量量化对每个元素独立量化,量化后的值用8位整数表示(无额外元数据,如缩放因子/偏移量的存储未计入,实际应用中可能需额外存储少量参数,但通常可忽略或分摊到大量数据中)。
  3. 应用场景:常用于模型量化(如神经网络权重/激活值压缩)、数据存储优化,在精度损失可接受的前提下显著减少内存/计算量。

总结

通过8位标量量化,1024维浮点向量的内存占用从 4KB降至1KB,压缩比为 4:1,大幅节省存储空间和传输带宽。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容