NICE: noise injection and clamping estimation for neural network quantization

N I C E : N O I S E I N J E C T I O N A N D C L A M P I N G E S T I M A - T I O N F O R N E U R A L N E T W O R K Q U A N T I Z AT I O N Anonymous authors Paper under double-blind review A B S T R A C T Convolutional Neural Networks ( CNN ) are very popular in many fields including computer vision , speech recognition , natural language processing , to name a few . Though deep learning leads to ground breaking performance in these domains , the networks used are very demanding computationally and are far from real-time even on a GPU , which is not power efficient and therefore does not suit low power systems such as mobile devices . To overcome this challenge , some solutions have been proposed for quantizing the weights and activations of these networks , which accelerate the runtime significantly . Yet , this acceleration comes at the cost of a larger error . The NICE method proposed in this work trains quantized neural networks by noise injection and a learned clamping , which improve the accuracy . This leads to state-of-the-art results on various regression and classification tasks , e.g. , ImageNet classification with architectures such as ResNet-18/34/50 with low as 3-bit weights and 3 -bit activations . We implement the proposed solution on an FPGA to demonstrate its applicability for low power real-time applications . 1 I N T R O D U C T I O N Deep neural networks have established themselves as an important tool in the machine learning arsenal . They have shown spectacular success in a variety of tasks in a broad range of fields such computer vision , computational and medical imaging , signal , image , speech and language processing ( Hinton et al. , 2012 ; Lai et al. , 2015 ; Chen et al. , 2018 ) . However , while deep learning models ’ performance is impressive , the computational and storage requirements of both training and inference are harsh . For example , ResNet-50 ( He et al. , 2016 ) , a popular choice for image detection , has 98 MB parameters and requires 4 GFLOPs of computations for a single inference . In many cases , the devices do not have such a big amount of resources , which makes deep learning infeasible in smart phones and the Internet of things ( IoT ) . In attempt to solve these problems , many researchers have recently came up with less demanding models , often at the expense of more complicated training procedure . Since the training is usually performed on servers with much larger resources , this is usually an acceptable trade-off . One prominent approach is to quantize the networks . The default choice for the data type of the neural networks ’ weights and feature maps ( activations ) is 32-bit ( single precision ) floating point . Gupta et al . ( 2015 ) have shown that quantizing the pre-trained weights to 16-bit fixed point have almost no effect on the accuracy of the networks . Moreover , minor modifications allow performing an integer-only 8-bit inference with reasonable performance degradation ( Jacob et al. , 2018 ) , which is utilized in DL frameworks , such as TensorFlow . One of the current challenges in network quantization is reducing the precision even further , up to 1-5 bits per value . In this case , straightforward techniques result in unacceptable quality degradation . Contribution . This paper introduces a novel simple approach denoted NICE ( noise injection and clamping estimation ) for neural network quantization that relies on the following two easy to implement components : ( i ) Noise injection during training that emulates the quantization noise introduced at inference time ; and ( ii ) Statistics-based initialization of parameter and activation clamping , for faster model convergence . In addition , activation clamp is learned during train time . We also propose integer-only scheme for an FPGA on regression task ( Schwartz et al. , 2018 ) . Our proposed strategy for network training lead to an improvement over the state-of-the-art quantization techniques in the performance vs. complexity tradeoff . Unlike several leading methods , our approach can be applied directly to existing architectures without the need to modify them at training ( as opposed , for example , to the teacher-student approaches ( Polino et al. , 2018 ) that require to train a bigger network , or the XNOR networks ( Rastegari et al. , 2016 ) that typically increase the number of parameters by a significant factor in order to meet accuracy goals ) . Moreover , our new technique allows quantizing all the parameters in the network to fixed point ( integer ) values . This include the batch-norm component that is usually not quantized in other works . Thus , our proposed solution makes the integration of neural networks in dedicated hardware devices such as FPGA and ASIC easier . As a proof-of-concept , we present also a case study of such an implementation on hardware . The quantization code will become publicly available upon acceptance . 2 R E L AT E D W O R K Expressiveness based methods . The quantization of neural network to extremely low-precision representations ( up to 2 or 3 possible values ) was actively studied in recent years ( Rastegari et al. , 2016 ; Hubara et al. , 2018 ; Mishra et al. , 2018 ; Zhang et al. , 2018 ) . To overcome the accuracy reduction , some works proposed to use a wider network ( Zhu et al. , 2016 ; Polino et al. , 2018 ; Banner et al. , 2018 ) , which compensates the expressiveness reduction of the quantized networks network . For example , 32-bit feature maps were regarded as 32 binary ones . Another way to improve expressiveness , adopted by Zhu et al . ( 2016 ) and Zhou et al . ( 2017 ) is to add a linear scaling layer after each of the quantized layers . Keeping full-precision copy of quantized weights . Lately , the most common approach to training a quantized neural network ( Hubara et al. , 2016 ; 2018 ; Zhou et al. , 2016 ; Rastegari et al. , 2016 ; Cai et al. , 2017 ) is keep two sets of weights — forward pass is performed with quantized weights , and updates are performed on full precision ones , i.e. , approximating gradients with straight-through estimator ( STE ) ( Bengio et al. , 2013 ) . For quantizing the parameters , either stochastic or deterministic function can be used . Distillation . One of the leading approaches used today for quantization relies on the idea of distillation ( Hinton et al. , 2015 ) . In distillation a teacher-student setup is used , where the teacher is either the same or a larger full precision neural network and the student is the quantized one . The student network is trained to imitate the output of the teacher network . This strategy is successfully used to boost the performance of existing quantization methods ( Mishra & Marr , 2018 ; Polino et al. , 2018 ; Jung et al. , 2018 ) . Model parametrization . Zhang et al . ( 2018 ) proposed to represent the parameters with learned basis vectors that allow acquiring an optimized non-uniform representation . In this case MAC operations can be computed with bitwise operations . Choi et al . ( 2018 ) proposed to learn the clamping value of the activations to find the balance between clamping and quantization errors . In this work we also learn this value but with the difference that we are learning the clamps value directly using STE back-propagation method without any regulations on the loss Jung et al . ( 2018 ) created a more complex parametrization of both weights and activations , and approximated them with symmetric piecewise linear function , learning both the domains and the parameters directly from the loss function of the network . Optimization techniques . Zhou et al . ( 2017 ) and Dong et al . ( 2017 ) used the idea of not quantizing all the weights simultaneously but rather gradually increasing the number of quantized weights to improve the convergence . McKinstry et al . ( 2018 ) demonstrated that 4-bit fully integer neural networks can achieve full-precision performance by applying simple techniques to combat varience of gradients : larger batches and proper learning rate annealing with longer training time . However , 8-bit and 32-bit integer representations were used for the multiplicative ( i.e. , batch normalization ) and additive constants ( biases ) , respectively . Generalization bounds . Interestingly , quantization of neural networks have been used recently as a theoretical tool to understand better the generalization of neural networks . It has been shown that while the generalization error does not scale with the number of parameters in over-parameterized networks , it does so when these networks are being quantized ( Arora et al. , 2018 ) . 3 M E T H O D In this work we propose a training scheme for quantized neural networks designed for fast inference on hardware with integer-only arithmetic . To achieve maximum performance , we apply a combination of several well-known as well as novel techniques . Firstly , in order to emulate the effect of quantization , we inject additive random noise into the network weights . Uniform noise distribution is known to approximate well the quantization error for fine quantizers ; however , our experiments detailed in the sequel show that it is also suitable for relatively coarse quantization ( Appendix A ) . Furthermore , some amount of random weight perturbation seems to have a regularization effect beneficial for the overall convergence of the training algorithm . Secondly , we use a gradual training scheme to minimize the perturbation of network parameters performed simultaneously . In order to give the quantized layers as much gradient updates as possible , we used the STE approach to pass the gradients to the quantized layers . After the gradual phase , the whole network is quantized and trained for a number of fine-tuning epochs . Thirdly , we propose to clamp both the activations and the weights in order to reduce the quantization bin size ( and , thus , the quantization error ) at the expense of some sacrifice of the dynamic range . The clamping values are initialized using the statistics of each layer . In order to truly optimize the tradeoff between the reduction of the quantization error vs that of the dynamic range , we learn optimal clamping values by defining a loss on the quantization error . Lastly , following common we don ’ t quantize first and last layers of the networks , The remainder of the section details these main ingredients of our method . We propose to inject uniform additive noise to weights and biases during model training to emulate the effect of quantization incurred at inference . Prior works have investigated the behavior of quantization error ( Sripad & Snyder , 1977 ; Gray , 1990 ) and concluded that in sufficiently fine-grain quantizers it can be approximated as a uniform random variale . We have observed the same phenomena and empirically verified it for weight quantization as coarse as 5 bits . The advantage of the proposed method is that the updates performed during the backward pass immediately influence the forward pass , in contrast to strategies that directly quantize the weights , where small updates often leave them in the same bin , thus , effectively unchanged . In order to achieve a dropout-like effect in the noise injection , we use a Bernoulli distributed mask M , quantizing part of the weights and adding noise to the others . From empirical evidence , we chose M ∼ Ber ( 0.05 ) as it gave the best results for the range of bitwidths in our experiments . Instead of using the quantized value ŵ = Q∆ ( w ) of a weight w in the forward pass , ŵ = ( 1−M ) Q∆ ( w ) +M ( w − e ) is used with e ∼ Uni ( −∆/2 , ∆/2 ) , where ∆ denotes size of the quantization bin . 3 . 1 G R A D U A L Q U A N T I Z AT I O N In order to improve the scalability of the method for deeper networks , it is desirale to avoid the significant change of the network behavior due to quantization . Thus , we start from gradually adding a subset of weights to the set of quantized parameters , allowing the rest of the network to adapt to the changes . The gradual quantization is performed in the following way : the network is split into N equally-sized blocks of layers { B1 , ... , BN } . At the i-th stage , we inject the noise into the weights of the layers from the block Bi . The previous blocks { B1 , ... , Bi−1 } are quantized , while the following blocks { Bi+1 , ... , BN } remain at full precision . We apply the gradual process only once , i.e. , when the N -th stage finishes , in the remaining training epochs we quantize and train all the layers using the STE approach . This gradual increasing of the number of quantized layers is similar to the one proposed by Xu et al . ( 2018 ) . This gradual process reduces , via the number of parameters , the amount of simultaneously injected noise and improves convergence . Since we start from the earlier blocks , the later ones have an opportunity adapt to the quantization error affecting their inputs and thus the network does not change drastically during any phase of quantization . After finishing the training with the noise injection into the block of layers BN , we continue the training of the fully quantized network for several epochs until convergence . In the case of a pre-trained network destined for quantization , we have found that the optimal block size is a single layer with the corresponding activation , while using more than one epoch of training with the noise injection per block does not improve performance . 3 . 2 C L A M P I N G A N D Q U A N T I Z AT I O N In order to quantize the network weights , we clamp their values in the range [ −cw , cw ] : wc = Clamp ( w , −cw , cw ) = max ( −cw , min ( x , cw ) ) . ( 1 ) The parameter cw is defined per layer and is initialized with cw = mean ( w ) + β × std ( w ) , where w are the weighs of the layer and β is a hyper-parameter . Given cw , we uniformly quantize the clamped weight into Bw bits according to ŵ = [ wc 2Bw−1 − 1 cw ] cw 2Bw−1 − 1 , where [ · ] denotes the rounding operation . The quantization of the network activations is performed in a similar manner . The conventional ReLU activation function in CNNs is replaced by the clamped ReLU , ac = Clamp ( a , 0 , ca ) , ( 2 ) where a denotes the output of the linear part of the layer , ac is nonnegative value of the clamped activation prior to quantization , and ca is the clamping range . The constant ca is set as a local parameter of each layer and is learned with the other parameters of the network via backpropagation . We used the initialization ca = mean ( a ) +α× std ( a ) with the statistics computed on the training dataset and α set as a hyper-parameter . A quantized version of the truncated activation is obtained by quantizing ac uniformly to Ba bits , â = [ ac 2Ba − 1 ca ] · ca 2Ba − 1 . ( 3 ) Since the Round function is non-differentiable , we use the STE approach to propagate the gradients through it to the next layer . For the update of ca , we calculate the derivative of â with respect to ca as ∂â ∂ac = { 1 , ac ∈ [ 0 , ca ] 0 , otherwise . ( 4 ) Additional analysis of the clamping parameter convergence is presented in Appendix B . The quantization of the layer biases is more complex , since their scale depends on the scales of both the activations and the weights . For each layer , we initialize the bias clamping value as cb = ca2Ba − 1︸ ︷︷ ︸ Activation scale · cw 2Bw−1 − 1︸ ︷︷ ︸ Weight scale · 2Bb−1 − 1︸ ︷︷ ︸ Maximal bias value , ( 5 ) where Bb denotes the bias bitwidth . The biases are clamped and quantized in the same manner as the weights . 4 E X P E R I M E N TA L R E S U LT S To demonstrate the effectiveness of our method , we implemented it in PyTorch and evaluated on image classification datasets ( ImageNet and CIFAR-10 ) and a regression scenario ( the MSR joint denoising and demosaicing dataset ( Khashabi et al. , 2014 ) ) . The CIFAR-10 results are presented in Appendix C. In all the experiments , we use a pre-trained FP32 model , which is then quantized using NICE . 4 . 1 I M A G E N E T For quantizing the ResNet-18/34/50 networks for ImageNet , we fine-tune a given pre-trained network using NICE . We train a network for a total of 120 epochs , following the gradual process described in Section 3.1 with the number of stages N set to the number of trainable layers . We use an SGD optimizer with learning rate is 10−4 , momentum 0.9 and weight decay 4× 10−5 . Table 2 compares NICE with other leading approaches to low-precision quantization ( Jung et al. , 2018 ; Choi et al. , 2018 ; Zhang et al. , 2018 ; McKinstry et al. , 2018 ) . Various quantization levels of the weights and activations are presented . As a baseline , we use a pre-trained full-precision model . Our approach achieves state-of-the-art results for 4 and 5 bits quantization and comparable results for 3 bits quantization , on the different network architectures . Moreover , notice that our results for the 5,5 setup , on all the tested architectures , have slightly outperformed the FAQ 8,8 results . 4 . 2 R E G R E S S I O N - J O I N T D E N O I S I N G A N D D E M O S A I C I N G In addition to the classification tasks , we apply NICE on a regression task , namely joint image denoising and demosaicing . The network we use is the one proposed in ( Schwartz et al. , 2018 ) . We slightly modify it by adding to it Dropout with p = 0.05 , removing the tanh activations and adding skip connections between the input and the output images . These skip connections improve the quantization results as in this case the network only needs to learn the necessary modifications to the input image . Figure 1 shows the whole network , where the modifications are marked in red . The three channels of the input image are quantized to 16 bit , while the output of each convolution , when followed by an activation , are quantized to 8 bits ( marked in Fig . 1 ) . The first and last layers are also quantized . We apply NICE on a full precision pretrained network for 500 epochs with Adam optimizer with learning rate of 3 · 10−5 . The data is augmented with random horizontal and vertical flipping . Since we are not aware of any other work of quantization for this task , we implemented WRPN ( Mishra et al. , 2018 ) as a baseline for comparison . Table 1 reports the test set PSNR for the MSR dataset ( Khashabi et al. , 2014 ) . It can be clearly seen that NICE achieves significantly better results than WRPN , especially for low weight bitwidths . 4 . 3 A B L AT I O N S T U D Y In order to show the importance of each part of our NICE method , we use ResNet18 on ImageNet . Table 3 reports the accuracy for various combinations of the NICE components . Notice that for high bitwidths , i.e. , 5,5 the noise addition and gradual training contribute to the accuracy more than the clamp learning . This happens since ( i ) the noise distribution is indeed uniform in this case as we show in Appendix A ; and ( ii ) the relatively high number of activation quantization levels almost negates the effect of clamping . For low bitwidths , i.e 3,3 , we observe the opposite . The uniform noise assumption is no longer accurate . Moreover , due to the small number of bits , clamping the range of values becomes more significant .

Summary: The article presents a method for quantization of deep neural networks for classification and regression, using three key parts: (i) noise injection to model the effect of quantization during forward inference, (ii) clamping with learned maximum activations to reduce the quantization bin size, and (iii) gradual quantization of blocks of the network, while previously quantized blocks remain unchanged. The method is evaluated on ImageNet, CIFAR-10, and a regression task, showing performance on-par or better than state-of-the-art methods for particular quantization bit size. Finally, the method is used for porting network onto a FPGA.