Quantizationgiáo trình tự học
Chương 43 phút đọcBiểu diễn số và lượng tử hoá

4Phân tích sai số lượng tử#

4.1Hai nguồn sai số#

Với dải [α,β][\alpha, \beta] đã chọn, mỗi giá trị xx chịu đúng một trong hai loại sai số:

  • Sai số làm tròn (rounding error) khi xx nằm trong dải. Độ lớn luôn ≤S/2\le S/2.
  • Sai số cắt (clipping error) khi xx nằm ngoài dải. Độ lớn bằng khoảng cách từ xx đến mép dải, không bị chặn.

Mô hình nhiễu đều. Nếu SS nhỏ so với độ biến thiên của phân phối dữ liệu, sai số làm tròn e=x^−xe = \hat{x} - x xấp xỉ phân phối đều trên [−S/2,S/2][-S/2, S/2]. Khi đó:

E[e2]=1S∫−S/2S/2e2 de=S212.\mathbb{E}[e^2] = \frac{1}{S}\int_{-S/2}^{S/2} e^2\, de = \frac{S^2}{12}.

Kết quả này cho thấy sai số làm tròn tỉ lệ với bình phương bước nhảy SS, tức tỉ lệ với bình phương độ rộng dải.

4.2Mỗi bit đáng giá khoảng 6 dB#

Đại lượng chuẩn để đo chất lượng lượng tử là tỉ số tín hiệu trên nhiễu lượng tử (SQNR):

SQNR=10log⁡10E[x2]E[(x−x^)2](dB).\text{SQNR} = 10\log_{10}\frac{\mathbb{E}[x^2]}{\mathbb{E}[(x - \hat{x})^2]} \quad (\text{dB}).

Xét trường hợp lý tưởng: xx phân phối đều trên [−c,c][-c, c], dùng lưới đối xứng hạn chế với q=2b−1−1q = 2^{b-1} - 1 mức mỗi phía, S=c/qS = c/q. Công suất tín hiệu là c2/3c^2/3, công suất nhiễu là S2/12S^2/12, nên

SQNR=c2/3S2/12=4c2S2=(2q)2=(2b−2)2  ⇒  20log⁡10(2b−2)≈6,02 b dB.\begin{gathered} \text{SQNR} = \frac{c^2/3}{S^2/12} = \frac{4c^2}{S^2} = (2q)^2 = (2^b - 2)^2 \\ \;\Rightarrow\; 20\log_{10}(2^b - 2) \approx 6{,}02\, b \text{ dB}. \end{gathered}

Kết luận: mỗi bit thêm vào giảm SS một nửa, giảm công suất nhiễu 4 lần, tức tăng SQNR khoảng 6 dB.

Hình 6
Hình 6. SQNR theo số bit. Dữ liệu đều khớp chính xác với lý thuyết. Dữ liệu Gauss thấp hơn khoảng 9 dB nếu dùng dải min–max, và cải thiện được nếu chọn ngưỡng cắt tối ưu.
bb Đều, lý thuyết Đều, thực nghiệm Gauss, min–max Gauss, ngưỡng tối ưu
4 22,92 dB 22,92 dB 13,93 dB 18,86 dB
8 48,09 dB 48,09 dB 39,10 dB 40,71 dB

Vì sao dữ liệu Gauss kém hơn? Với 10610^6 mẫu N(0,1)\mathcal{N}(0,1), giá trị lớn nhất vào khoảng 5σ5\sigma, trong khi phần lớn dữ liệu nằm trong ±2σ\pm 2\sigma. Dùng dải min–max nghĩa là "trả tiền" cho cả một vùng rộng gần như không có dữ liệu.

4.3Đánh đổi giữa làm tròn và cắt#

Thu hẹp dải [−c,c][-c, c] làm SS nhỏ đi (giảm sai số làm tròn) nhưng khiến nhiều giá trị bị cắt hơn (tăng sai số cắt). Tổng MSE vì thế có một điểm cực tiểu.

Hình 7
Hình 7. INT4 đối xứng trên 10610^6 trọng số phân phối Laplace. Ngưỡng tối ưu c∗≈4,83c^* \approx 4{,}83 cho MSE =0,0547= 0{,}0547. Dùng min–max (c=max⁡∣w∣=15,28c = \max|w| = 15{,}28) cho MSE =0,348= 0{,}348, lớn gấp 6,4 lần.

Phân phối Laplace được chọn vì trọng số của mạng nơ-ron đã huấn luyện thường có dạng "nhọn đỉnh, đuôi dày" giống Laplace hơn là Gauss. Đuôi càng dày, cái giá của dải min–max càng lớn và việc chọn ngưỡng cắt càng quan trọng. Chương 8 sẽ trình bày các phương pháp tự động tìm ngưỡng này cho activation.

Câu hỏi suy ngẫm. Vì sao ngưỡng tối ưu c∗c^* tăng khi số bit tăng? (Gợi ý: khi bb tăng, sai số làm tròn giảm theo 4−b4^{-b} còn sai số cắt không phụ thuộc bb, nên ta "đủ khả năng" mở rộng dải để giảm clipping.)


Tự kiểm tra

3 câu. Chọn đáp án để xem ngay lời giải thích.

  1. 1Thêm một bit vào độ rộng bit thì SQNR thay đổi thế nào?

  2. 2Theo mô hình nhiễu đều, kỳ vọng bình phương sai số làm tròn bằng bao nhiêu?

  3. 3Trên 10610^6 trọng số Laplace lượng tử INT4 đối xứng, dùng dải min–max thay vì ngưỡng tối ưu làm MSE tăng bao nhiêu lần?

Đã trả lời 0/3