2.6 Neural Networks With Limited Numerical Precision
Most deep learning frameworks use 32-bit or 64-bit floating point for CNN training and inference.(This paper is to describe the process of quantizing a full precision network to limited precision numbers).
Denoting ϵ\epsilonϵ as the quantization step size and ⌊x⌋\lfloor x \rfloor⌊x⌋ as the largest quantization value less or equal to x. As round-nearest-even is deterministic, we chose this rounding scheme for inference
Round stochastic
round(x)={⌊x⌋,w.p.1−x−⌊x⌋ϵ⌊x⌋+ϵ,w.p.x−⌊x⌋ϵround(x) = \begin{cases} \lfloor x \rfloor, & w.p. \ 1-\frac{x-\lfloor x \rfloor}{\epsilon} \\ \lfloor x \rfloor + \epsilon , & w.p. \ \frac{x-\lfloor x \rfloor}{\epsilon} \end{cases}round(x)={⌊x⌋,⌊x⌋+ϵ,w.p.1−ϵx−⌊x⌋w.p.ϵx−⌊x⌋ 随机舍入给量化过程增加了随机性,在训练过程可以有一个平均的影响(即平均结果一般为0)。 We chose to use this rounding scheme when quantizing network parameters during fine-tuning.
本文更新权重的方式是第二种:: full precision shadow weights. Small weight updates ∆w are applied to the full precision weights w, whereas the discrete weights w1 are sampled from the full precision weights. (在9.3有更多的fine-tune细节而)
方法提出的出发点:在数据密集型应用的能量耗费上,片外内存(Off-chip)的访问占据了很大一部分。 所以,有一个很重要步骤就是压缩网络的参数数量。Han et al.(2016b)解决了这个问题,其方案分为三个步骤:
fixed point number format:[IL.FL][IL.FL][IL.FL],其中IL和FLIL和FLIL和FL分别表示整数长度和分数长度。即bitwidth=IL+FLbit _{width} = IL + FLbitwidth=IL+FL 为了把 floating point 量化成 fixed point,本文使用round-nearest。使用二进制补码数来表示数字,所以最大的正数可以表示为:Xmax=2IL−1−2−FLX_{max}=2^{IL-1}-2^{-FL}Xmax=2IL−1−2−FL
Choice of Number Format 在每一层的每一个Type的数值而言,其Fixed Point的格式为:IL=⌈lg2(max(x))+1⌉IL=\lceil lg_2(max(x))+1\rceilIL=⌈lg2(max(x))+1⌉ 即保证IL足够让所有的数都包括进来,而不向上饱和。 注意,这种计算 IL 的方法,适用于 layer parameters;对于 layer outputs,用这个公式 减去 1 来表达 IL。