Scalar Quantization(標量量化)是一種將連續(xù)的模擬信號轉換為離散的數(shù)字信號的技術,廣泛應用于數(shù)字通信、音頻處理、圖像壓縮等領域。其原理如下:
- 原理概述:標量量化是通過把輸入信號的取值范圍劃分成有限個區(qū)間,然后將落入每個區(qū)間的輸入值都映射為一個固定的輸出值,這個輸出值也被稱為量化值或重建值。
-
量化過程
- 劃分區(qū)間:首先,根據(jù)量化器的設計,將輸入信號的取值范圍劃分為若干個互不重疊的子區(qū)間,每個子區(qū)間稱為一個量化間隔。例如,對于一個取值范圍在[-1, 1]的信號,可以將其劃分為[-1, -0.5)、[-0.5, 0)、[0, 0.5)、[0.5, 1]這4個量化間隔。
- 確定量化值:為每個量化間隔指定一個代表值,即量化值。這個量化值通常是該區(qū)間的中點或其他特定值。比如在上述例子中,4個量化間隔的量化值可以分別設為-0.75、-0.25、0.25、0.75。
- 映射量化:當輸入信號到來時,判斷它落入哪個量化間隔,然后將其映射為該間隔對應的量化值。例如,若輸入信號的值為0.3,它落入[0, 0.5)這個量化間隔,那么它將被量化為0.25。
- 量化誤差:由于量化過程是將連續(xù)的輸入值映射為有限個離散的量化值,所以不可避免地會產生誤差,這種誤差稱為量化誤差。量化誤差的大小取決于量化間隔的大小,量化間隔越小,量化誤差就越小,但所需的量化級數(shù)和存儲量就越大。
-
量化器設計準則:在設計標量量化器時,通常需要考慮兩個重要的準則,即最小均方誤差準則和最大熵準則。最小均方誤差準則是指使量化誤差的均方值最小,從而使量化后的信號與原始信號在均方意義下最接近。最大熵準則則是在給定量化級數(shù)的情況下,使量化后的信號熵最大,從而保留盡可能多的原始信號信息。
image.png
針對 1024維浮點向量進行Scalar Quantization(8位量化)前后的內存占用對比,分析如下:
1. 原始浮點向量的內存占用
假設原始向量使用 單精度浮點數(shù)(float32) 存儲(機器學習/信號處理中最常見),每個浮點元素占用 4字節(jié)(32位)。
- 總內存 = 維度 × 單元素字節(jié)數(shù) = ( 1024 \times 4 = 4096 , \text{字節(jié)(4KB)} )。
2. 8位標量量化后的內存占用
“8量化”通常指 每個量化后的值用8位(1字節(jié))表示(如無符號整數(shù)0255或有符號整數(shù)-128127)。
標量量化對每個維度獨立處理,量化后每個元素存儲為 1字節(jié)的整數(shù)(而非浮點)。
- 總內存 = 維度 × 單元素字節(jié)數(shù) = ( 1024 \times 1 = 1024 , \text{字節(jié)(1KB)} )。
3. 對比結果
| 指標 | 原始浮點向量(float32) | 8位量化后(整數(shù)) |
|---|---|---|
| 單元素存儲大小 | 4字節(jié) | 1字節(jié) |
| 總內存占用 | 4096字節(jié)(4KB) | 1024字節(jié)(1KB) |
| 壓縮比 | — | 4:1(內存減少75%) |
關鍵假設與說明
- 浮點類型:假設使用單精度浮點數(shù)(float32),若為雙精度(float64,8字節(jié)/元素),原始內存會翻倍(8KB),量化后仍為1KB,壓縮比變?yōu)?:1。
- 量化方式:標量量化對每個元素獨立量化,量化后的值用8位整數(shù)表示(無額外元數(shù)據(jù),如縮放因子/偏移量的存儲未計入,實際應用中可能需額外存儲少量參數(shù),但通??珊雎曰蚍謹偟酱罅繑?shù)據(jù)中)。
- 應用場景:常用于模型量化(如神經網絡權重/激活值壓縮)、數(shù)據(jù)存儲優(yōu)化,在精度損失可接受的前提下顯著減少內存/計算量。
總結
通過8位標量量化,1024維浮點向量的內存占用從 4KB降至1KB,壓縮比為 4:1,大幅節(jié)省存儲空間和傳輸帶寬。
