Deep neural networks (DNNs) and, in particular, convolutional neural networks (CNNs) have been very successful in large scale object recognition (Krizhevsky et al., 2012). This success has motivated ongoing exploration of alternative architectures, optimization and regularization techniques that enable better accuracy and/or reduce computational footprint. The pattern most commonly used by CNNs for object recognition is alternating convolution, max-pooling layers followed by non-linearity and a small number of fully connected layers. Deep networks are very often over-specified (the number of parameters exceed the number required), and regularized during training using dropout (Hinton, 2014) and or
norms of the weights. More current research has focused on improving the convergence speed and on reducing the computational complexity.
Training or even just using neural networks (NNs) algorithms on conventional general-purpose digital hardware, namely, Von Neumann architecture, has been found highly inefficient due to the massive amount of multiply-accumulate operations (MACs) required to compute the weighted sums of the neurons’ inputs. Currently, the number of neurons employed in typical CNNs for solving common tasks is . By reducing many of these MAC operations, for example, by binarizing the floating point numbers involved, one can improve computational complexity by orders of magnitude.
Recent works have shown that more computationally efficient DNNs can be constructed by quantizing some of the parameters involved. So far, however, efficiency has only been partially achieved. In one study weights and neurons were binarized only during the inference stage (test phase) (Soudry et al., 2014), and in another only the weights were binarized during the training propagation and inference stages (Courbariaux et al., 2015a). This study proposes a more advanced technique, referred to as binarized back propagation (BBP), for the complete binarization of neurons and weights during inference and training. The proposed solution allows for completely binarized deep neural networks (BDNNs) in which all MAC operations are replaced with XNOR and population count (i.e., counting the number of ones in the binary number) operations. The proposed method is particularly beneficial for implementing large convolutional networks whose neuron-to-weight ratio is very large.
We argue that the proposed BBP algorithm can be implemented in hardware and is expected to be much more efficient in terms of area, speed, and energy consumption than full precision DNNs, which used floating-point multiply-accumulators. This was recently demonstrated (Esser & Arthur, 2015) in hardware that implemented binary neural networks at the inference phase, with significant improvements in energy efficiency.
Until recently, the use of extremely low-precision networks (binary in the extreme case) was believed to be highly destructive to the network performance (Courbariaux et al., 2015b). Soudry et al. (2014) proved the contrary by using a variational Bayesian approach, that infers networks with binary weights and neurons by updating the posterior distributions over the weights. These distributions are updated by differentiating their parameters (e.g., mean values) via the back propagation (BP) algorithm. The drawback of this procedure, termed Expectation BackPropagation (EBP), is that the binarized parameters were only used during inference.
The probabilistic idea behind EBP was extended in the BinaryConnect algorithm of Courbariaux et al. (2015a). In BinaryConnect, the real-valued version of the weights is saved and used as a key reference for the binarization process. The binarization noise is independent between different weights, either by construction (by using stochastic quantization) or by assumption (a common simplification; see Spang (1962)). The noise would have little effect on the next neuron’s input because the input is a summation over many weighted neurons. Thus, the real-valued version could be updated by the back propagated error by simply ignoring the binarization noise in the update. Using this method, Courbariaux et al. (2015a) were the first to binarize weights in CNNs and achieved near state-of-the-art performance on several datasets. They also argued that noisy weights provide a form of regularization, which could help to improve generalization, as previously shown in Wan et al. (2013) study. This method binarized
weights while still maintaining full precision neurons.
Lin et al. (2015) carried over the work of Courbariaux et al. (2015) to the backpropagation process by quantizing the representations at each layer of the network, to convert some of the remaining multiplications into binary shifts by restricting the neurons values of power-of-two integers. Lin et al.’s work and ours seem to share similar characteristics . However, their approach continues to use full precision weights during the test phase. Moreover, Lin et al. (2015) quantize the neurons only during the back propagation process, and not during forward propagation. Other research (Judd et al., 2015; Gong et al., 2014) aimed to compress a fully trained high precision network by using a quantization or matrix factorization methods. These methods required training the network with full precision weights and neurons, thus requiring numerous MAC operations avoided by the proposed BBP algorithm. Hwang & Sung (2014) focused on fixed-point neural network design and achieved performance almost identical to that of the floating-point architecture . Hwang & Sung (2014) provided evidence that DNNs with ternary weights, used on a dedicated circuit, consume very low power and can be operated with only on-chip memory, at test phase. Sung et al. (2015) study also indicated satisfactory empirical performance of neural networks with 8-bit precision. So far, to the best of our knowledge, no work has succeeded in binarizing weights and neurons at the inference and training phases.
In this work we rely on the idea that binarization can be treated as random noise. Following this idea, we introduce a new technique for injecting noise to hidden neurons by stochastically binarizing them during forward and backward propagation. The idea that noisy hidden neurons also add form of regularization was derived from the successful dropout procedure of Hinton (2014), which randomly substitutes a portion of the hidden units with zeros. The procedure proposed in the present study extends the practical applications of Courbariaux et al. (2015a) and creates a fully binarized network with no multiplications. This study shows that even if we do not increase the number of parameters in comparison to Courbariaux et al. (2015a) ,the BBP algorithm can still provide near state-of-the-art results on three very popular datasets preserving binary representations and weights.
2.1 Binary Connect
Our work expands the BinaryConnect approach of Courbariaux et al. (2015a). We now summarize their ideas, and introduce our extension in the next section. BinaryConnect (Courbariaux et al., 2015a), and DropConnect (Wan et al., 2013) share the same idea. During the training phase these methods add a form of noise to the model parameters while keeping the clean model parameters as a reference point. Whereas DropConnect zeroes out a portion of the weights, BinaryConnect binarizes them. Courbariaux et al. (2015a) introduced and described two procedures:
• Deterministic
• Stochastic
where is the hard sigmoid function, i.e.
with w being the full precision weight, and is the binarized weight. In both procedures, the binarized weight
is used during the forward and backward propagation phase, while the full precision weight w is updated after the propagation.
Both procedures help regularize the model and achieved state-of-the-art results on several classic benchmarks (Courbariaux et al., 2015a). Courbariaux et al. (2015a) also observred the need to add certain edge constraints to w. Therefore, after each update, they used clipping, to force w values to be in the interval.
In this section the BBP algorithm is presenteds, along with the procedures that we used, including: neurons binarization the neurons (deterministic vs. stochastic implementation); reduction of the impact of the weights and hidden neurons binarization without batch normalization; and finally, training and execution of the inferene phase.
3.1 Stochastic and Deterministic Binarization
The binarization operation used in the present work transforms real-valued weights into two possible values. At training time a stochastic binarization is applied to facilitate a finer, more informative binarization noise in comparison to the standard sign function.
where and HT(x) is the well-known “hard tanh”,
Note that this clipping operation can be implemented with a simple comparison operator. Similarly to the relation between BinaryConnect and DropConnect, these neuron masks are related to dropout Hinton (2014): adding quantization noise to the hidden neurons creates a regularization mechanism that nonetheless not prevent the model from converting; It thus might help to avoid overfitting. At test phase deterministic binarization is carried out using the sign function:
3.2 Forward and Backward Propagation
During forward propagation we clip the input via HT(x), defined in Eq. (4), and then binarize it using Eq. (3) (or Eq. (5) for inference). However, in order to implement the backward propagation phase, we first need to differentiate through these binary, non-differentiable hidden neurons. To do so, we use the stochastic binarization scheme in Eq. (3), and examine the input to the next layer,
We use the fact that HT (x) is the expectation over (from Eqs. (3) and (4)), and define n (x) as binarization noise with mean equal to zero. When the layer is wide, we expect the deterministic mean term HT (x) to dominate, as the noise term n (x) is a sum of many independent binarizations from all the neurons in the previous layer. Thus, we reason that the binarization noise n (x) can be ignored when performing differentiation in the backward propagation stage. Therefore, we replace
(which cannot be computed) with:
Note that (6) is the derivative of HT(x) (Eq. 4). Therefore, in the process of backward propagation through the neurons, all we have to do is mask out the gradients when the neuron is saturated (x > 1 or x < 1), while passing the rest of the gradients (if ). This masking is computationally cheap. However, to make this method work properly, batch-normalization (BN) is required, since we would like the mean value of the activation to be near zero and most of the valuable information to reside in
.
3.3 Batch Normalization and Clipping
As shown by Ioffe & Szegedy (2015), the constant change in the distribution of each layer’s input can render neural network training a very noisy procedure, strongly dependent on the weight initialization and the learning rate, and requiring long convergence time. Batch normalization (BN) aims to solve all of these problems by performing a simple normalization for each mini-batch. BN usually allows high learning rates, and makes the model less sensitive to initialization. Additionally, it acts as a regularizer, in
some cases eliminating the need for dropout. Moreover, according to Courbariaux et al. (2015a), batch normalization is necessary to reduce the overall impact of the weights’ binarization. However, BN does suffer from drawbacks: it requires many multiplications both during training (calculating the standard deviation and dividing by it) and testing, namely, dividing by the running variance (the weighted mean of the training set activation variance). Although the number of scaling calculations is the same as the number of neurons, in the case of CNNs this number is quite large. For example, in the CIFAR-10 dataset (using our architecture), the first convolution layer, consisting of only kernel masks, converts an image of size
to size
, which is two orders of magnitude larger than the number of weights. To achieve the results that BN would obtain, we use a shift-based batch normalization technique that approximates BN almost without multiplications.
Standard BN performs the following normalization:
where x is the input to a layer, on a minibatch of size is an average over the minibatch samples, and
and
are learnable parameters that perform an affine transformation.
To reduce the computational complexity, we suggest an alternative procedure. We define AP2(z) as the approximate power-of-2 proxy of z (i.e., the index of the most significant bit (MSB)), and stands for both left and right binary shift. Then, at
each minibatch, we approximate the inverse standard deviation (Eq. 7)
and the normalization
To obtain (9) we replace in (7) the squaring operation of C (x) with a binary shifting of C (x) according to its own power-of-2 proxy. This saves many MAC operations. To obtain (10) we again replaced multiplication by a shift operation with power-of-2 proxies.
The only operation which is not a binary shift or an add is the inverse square root in Eq. (9). From the early work of Lomont (2003) we know that the inverse-square operation could be applied with approximately the same complexity as multiplication. There are also faster methods, which involve lookup table tricks that typically obtain lower accuracy (this may not be an issue, since our procedure already adds a lot of noise). However, the number of values on which we apply the inverse-square operation is rather small, since it is done after calculating the variance i.e., after averaging (for a more precise calculation, see the BN analysis in Lin et al. (2015). Furthermore, the size of the standard deviation vectors is relatively small. For example, these values number only 0.3% of the network size (i.e., the number of learnable parameters), in the Cifar-10 network we used in our experiments.
3.4 Additional Implementation Details
Throughout our work we restrict ourselves to use only adders, bitwise and shift operations. The comparison operation is also cheap, since adding and comparing two variables require the same energy. The two values are most commonly compared by subtracting them and looking at the sign bit. Hence, even if we use the simplest approach, the complexity is approximately the same as that of adding. As an optimization technique we used a variant of the AdaMax algorithm (Kingma & Ba, 2014), which we called shift based-AdaMax (S-AdaMax). This variant implements AdaMax only with learning rate and deviations that are power-of-2 integers, and hence equal to shift. No momentum or weight decay are used.
Improving computing performance has always been and remains a challenge. Over the last decade, power has been the main constraint on performance (Horowitz, 2014). This is why much research effort has been devoted to reducing the energy consumption of neural networks. In this section we try to quantify the energy and complexity gain of using the BBP algorithm. Throughout this section we assume that the energy required to add two 8-bit integers is 0.03 picojoules (pJ) (see Table 1); this will serve as our basic energy unit. We furthermore assume that the addition of integers is linear in complexity
(i.e., the addition of 2-bit integers will require one-quarter of this basic energy unit and so on).
4.1 Energy Efficiency Estimates
Horowitz (2014) provides rough numbers for the energy consumption1 as summarized in Table 1 and 2. As can be seen in Table 1, while floating-point multipicators demand 1.1pJ-3.7pJ, floating point adders require only 0.4pJ-0.9pJ. Courbariaux et al. (2015b) replaced approximately two-thirds of the multiplication operations with addition, thus reducing the energy demand by roughly a factor of 2. BBP also replaces two-thirds of the multiplications, by using 2-bit integer adders (-1,+1 are typically represented by two bits although they actually require only one), which require only 0.03pJ — an order of magnitude smaller. Therefore, even if we assume that most of the neural networks require their parameters to be at least 16-bit floating point numbers, by replacing the multiplication with integer adders, energy is reduced by approximately two orders of magnitude. Moreover, similarly to Lin et al. (2015) we eliminate the multiplication in the back propagation process, thus reducing the energy consumption even further.
Table 2 shows that the memory requires a great amount of energy (due to hardware leakage problems (Horowitz, 2014). This is a major problem because CNNs use a massive number of neurons (many more than weight parameters). Consequently by binarizing the neurons, we reduce memory complexity, which in turn results in a huge energy reduction.
4.2 Exploiting Kernel Repetitions
When using a CNN architecture with binary weights, the number of unique kernels is bounded by the kernel size. For example, in our implementation we use kernels of size , so the maximum number of unique 2D kernels is
. However, this should not prevent expanding the number of feature maps beyond this number, since the actual kernel is a 3D matrix. Assuming we have
kernels in the
convolutional layer, we have to store a 4D weight matrix of size
. Consequently, the number of unique kernels is
. When necessary, we apply each kernel on the map and perform the required MAC operations (in our case, using XNOR and popcount operations). Since we now have binary kernels, many 2D kernels of size
repeat themselves. By using dedicated hardware/software, we can apply only the unique 2D kernels on each feature map and sum the result wisely to receive each 3D kernel convolutional result. Note that an inverse kernel (i.e., [-1,1,-1] is the inverse of [1,-1,1]) can also be treated as a repetition, it is merely a multiplication of the original kernel by -1. For example, in our CNN architecture trained on the CIFAR-10 benchmark, there are only 37% unique kernels per layer on average. Hence we can reduce the number of the XNOR-popcount operations by 3.
In this section we report empirical results showing that BBP obtains near state-of-the-art performance with fully binary networks on the permutation-invariant MNIST, CIFAR-10 and SVHN datasets. In all of our experiments we used an architecture identical to that of BinarryConnect. We used the L2-SVM output layer and opted square hinge loss and Shift based-AdaMax (Section 3.4). We initialized the weight and bias using a distribution. The learning rate was initialized using the technique of Glorot et al. (2011) (and again rounded to be an integer of power 2). Since we could not use a standard decaying learning rate, we shifted the learning rate to the right (multiplied by 0.5) every 50 iterations.
Our networks were implemented in Torch, a widely used environment for neural network algorithms.
5.1 Datasets
5.1.1 CIFAR-10
The well known CIFAR-10 is an image classification benchmark dataset containing 50,000 training images and 10,000 test images of 32 × 32 color images in 10 classes (airplanes, automobiles, birds, cats, deer, dogs, frogs, horses, ships and trucks). For this dataset, we applied the same global contrast normalization and ZCA whitening as used by Goodfellow et al. (2013) and Lin et al. (2013). No data augmentation was applied (using augmentation data was shown to be very helpful for this data set Graham (2014).
The architecture of our CNN was inspired by BinaryConnect and contains three alternating stages of two 3x3 convolution filters followed by 2x2 max pooling with a stride of 2 with increasing numbers of maps; 128, 256, and 512 respectively. The output was then concatenated into one vector of size 8192, which served as the input to a two-stage fully connected layer with 1024 hidden units in each layer. For the final classification we used a L2-SVM output layer. A binary shift based batch-normalization (Section 3.3) with a mini-batch of size 100 was used to speed up the training. In Table 3 we
report results after 500 iterations.
5.1.2 Permutation Invariant MNIST
The MNIST database of handwritten digits is one of the most studied dataset benchmark for image classification. The dataset contains 60,000 examples of digits from 0 to 9 for training and 10,000 examples for testing. Each sample is a 28 x 28 pixel gray level image. For the basic version of the MNIST learning task, no knowledge of geometry is provided and there is no special preprocessing or enhancement of the training set, so an unknown but fixed random permutation of the pixels would not affect the learning algorithm. The MLP we trained on MNIST has architecture similar to that of BinaryConnect and consists of 3 hidden binary layers of 1024 and a L2-SVM output layer. We used a mini-batch with a size of 200 to speed up the training and avoid batch normalization. In Table 3 we report results after 1000 iterations.
5.1.3 SVHN
SVHN is an image classification dataset benchmark obtained from house numbers in Google Street View images. Similarly to MNIST, it contains images representing digits ranging from 0 to 9 but incorporates one order of magnitude more labeled data and is considered significantly more difficult. It consists of a training set of 604K instances and a test set of 26K instances, where each instance is a 32 × 32 color image. We applied the same procedure we used for CIFAR-10, with an architecture similar to that of BinaryConnect. In Table 3 we report results after 500 iterations.
5.2 Results
As can be seen in Table 3, the BBP algorithm using the aforementioned architecture obtained a 10.15% error rate on CIFAR10, 2.53% on SVHN and 1.4% on permutation invariant MNIST. It is somehow surprising that despite the binarization noise and the rough power-of-2 estimation (shift base BN and S-AdaMax; see Section 3.3 and 3.4 respectively), BDNN still achieves near state-of-the-art results. Note that we did not exhaustively search for different architecture or enlarge the number of parameters in comparison to Courbariaux et al. (2015a); Lin et al. (2015). Moreover, as can be seen in Figure 5.2, the training set did not overfit the data; hence, perhaps some improvement might be achieved by increasing the network size.
Figure 1: CIFAR-10 convergence graph. Note that every 50 epochs the graph has a small drop due to the binary shift of the learning rate. The network did not reach overfitting on the training data.
Figure 4: The distribution of the full precision weights at the first convolutional layer in CIFAR-10 (upper histogram) and the last fully connected layer (lower histogram). The binarization regularization pushes the values of the weights toward the clipping edges (i.e., -1, +1). 11
Figure 2: Binary weight kernels, sampled from of the first convolution layer. Since we have only unique 2D kernels (where k is the kernel size) it is very common to have kernels replication. We investigate this property and received on CIFAR-10 architecture for example that only 37% of the kernels are unique.
Figure 3: Binary feature maps sampled from the first convolution layer of our CIFAR-10 architecture.
Table 3: Classification test error rates of DNNs trained on MNIST (MLP architecture without unsupervised pretraining), CIFAR-10 (without data augmentation) and SVHN. We see that, despite using only a single bit per weight and neuron during forward and backward propagation, performance is not worse than other state-of-the art floating point architectures.
In this work we introduced binary back propagation (BBP), a novel binarization scheme for weights and neurons during forward and backward propagation. We have shown that it is possible to train BDNNs on the permutation invariant MNIST, CIFAR-10 and SVHN datasets and achieve nearly state-of-the-art results. These findings have wideranging implications for specialized hardware implementations of deep networks; they obviate the need for almost all multiplications, allowing for a possible speedup of two orders of magnitude. The impact at test phase could be even greater, getting rid of the multiplications altogether, reducing the memory requirements of deep networks by a factor of at least 16 (from 16-bits single-float precision to single-bit precision) and reducing the energy consumption by two orders of magnitude. This has a major effect on the memory and computation bandwidth, and thus on the size of the models that can be deployed. As a by-product, we introduced an approximate, computationally cheap, batch normalization method with no multiplication.
We believe that with the proper hardware, capable of processing fast binary convolution, BBP would make it possible for a wide variety of DNNs to run on mobile devices. Such BDNNs may also open the door to interpretable binary representations (Wu et al., 2015) and efficient hashing (Ginkel & Connor, 2015). Another potential benefit is scalable training of spiking neural networks (which are recurrent neural nets with binary neurons) for computational neuroscience research purposes, so far a nontrivial task ((DePasquale et al., 2016), and references therein). We are currently working on extending this work to other models and bigger, more complex data sets such as ImageNet sets (?). Moreover, in keeping the work of other researchers (e.g. Soudry et al. 2014; Hwang & Sung 2014; Courbariaux et al. 2015a; Lin et al. 2015), at training phase the value of the full precision weights was kept (Note that is not the case for the hidden neurons, which can be stored in their binary format). We encourage the search for an ideal algorithm that does not need to store those values.
Currently, saving the full precision requires relatively high energy resources (although, novel memory devices might be used to alleviate this issue in the future; see Soudry et al. (2015)). Furthermore approximately 63% of the and and popcount operations can be saved (at inference time) due to the vast number of binary kernel repetitions, although doing so requires dedicated hardware/software implementation. We hope that this work would encourage the development of dedicated binary convolution hardware that would lead to very fast training and testing of neural networks.
Cheng, Zhiyong, Soudry, Daniel, Mao, Zexi, and Lan, Zhenzhong. Training Binary Multilayer Neural Networks for Image Classification using Expectation Backpropgation. arXiv:1503.03562, (2012):8, 2015. 3
Courbariaux, Matthieu, Bengio, Yoshua, and David, Jean-Pierre. BinaryConnect: Training Deep Neural Networks with binary weights during propagations. Nips, pp. 1–9, 2015a. 1, 2, 2.1, 2.1, 3.3, 5.2, 3, 6
Courbariaux, Matthieu, Bengio, Yoshua, and David, Jean-Pierre. Training deep neural networks with low precision multiplications. Iclr, (Section 5):10, 2015b. 2, 4.1
DePasquale, Brian, Churchland, Mark M., and Abbott, L. F. Using Firing-Rate Dynamics to Train Recurrent Networks of Spiking Model Neurons. pp. 1–17, 2016. 6
Esser, Steve K and Arthur, John V. Backpropagation for Energy-Efficient Neuromorphic Computing. Advances in Neural Information Processing Systems 28 (NIPS 2015), pp. 1–9, 2015. 1
Ginkel, Robbert Van and Connor, Peter O. Discrete Parameter Autoencoders for Semantic Hashing. pp. 1–22, 2015. 6
Glorot, Xavier, Bordes, Antoine, and Bengio, Yoshua. Deep Sparse Rectifier Neural Networks. Aistats, 15:315–323, 2011. ISSN 15324435. doi: 10.1.1.208.6449. 5
Gong, Yunchao, Liu, Liu, Yang, Ming, and Bourdev, Lubomir. Compressing Deep Convolutional Networks using Vector Quantization. pp. 1–10, 2014. 2
Goodfellow, Ian J., Warde-Farley, David, Mirza, Mehdi, Courville, Aaron, and Bengio, Yoshua. Maxout Networks. arXiv preprint, pp. 1319–1327, 2013. 5.1.1, 3
Graham, Benjamin. Spatially-sparse convolutional neural networks. pp. 1–13, 2014. 5.1.1
Hinton. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. Journal of Machine Learning Research, 15:1929–1958, 2014. ISSN 00905364. doi: 10. 1214/12-AOS1000. 1, 2, 3.1
Horowitz, Mark. Computing’s Energy Problem (and what we can do about it). IEEE Interational Solid State Circuits Conference, pp. 10–14, 2014. ISSN 0018-9200. doi: 10.1109/JSSC.2014.2361354. 4, 1, 2, 4.1
Hwang, Kyuyeon and Sung, Wonyong. Fixed-point feedforward deep neural network design using weights +1, 0, and -1. 2014 IEEE Workshop on Signal Processing Systems (SiPS), pp. 1–6, 2014. doi: 10.1109/SiPS.2014.6986082. 2, 3, 6
Ioffe, Sergey and Szegedy, Christian. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. arXiv, 2015. 3.3
Judd, Patrick, Albericio, Jorge, Hetherington, Tayler, Aamodt, Tor, Jerger, Natalie Enright, Urtasun, Raquel, and Moshovos, Andreas. Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets. pp. 12, 2015. 2
Kim, Minje and Paris, Smaragdis. Bitwise Neural Networks. ICML Workshop on Resource-Efficient Machine Learning, 37, 2015. 3
Kingma, Diederik and Ba, Jimmy. Adam: A Method for Stochastic Optimization. arXiv:1412.6980 [cs], pp. 1–13, 2014. 3.4
Krizhevsky, Alex, Sulskever, IIya, and Hinton, Geoffret E. ImageNet Classification with Deep Convolutional Neural Networks. Advances in Neural Information and Processing Systems (NIPS), pp. 1–9, 2012. 1
Lin, Min, Chen, Qiang, and Yan, Shuicheng. Network In Network. arXiv preprint, pp. 10, 2013. 5.1.1, 3
Lin, Zhouhan, Courbariaux, Matthieu, Memisevic, Roland, and Bengio, Yoshua. Neural Networks with Few Multiplications. Iclr, pp. 1–8, 2015. 2, 3.3, 4.1, 5.2, 6
Lomont, Chris. Fast Inverse Square Root. Indiana: Purdue University, 2003-02 [2006-06-24]. http, pp. 12, 2003. 3.3
Soudry, D, Hubara, I, and Meir, R. Expectation Backpropagation: parameter-free training of multilayer neural networks with real and discrete weights. Neural Information Processing Systems 2014, 2(1):1–9, 2014. 1, 2, 6
Soudry, Daniel, Di Castro, Dotan, Gal, Asaf, Kolodny, Avinoam, and Kvatinsky, Shahar. Memristor-Based Multilayer Neural Networks With Online Gradient Descent Training. IEEE Transactions on Neural Networks and Learning Systems, 26(10): 2408–2421, 2015. ISSN 21622388. doi: 10.1109/TNNLS.2014.2383395. 6
Spang, H.A. Reduction by Feedback*. IRE Transactions on Communications Systems, pp. 373–380, 1962. 2
Sung, Wonyong, Shin, Sungho, and Hwang, Kyuyeon. Resiliency of Deep Neural Networks under Quantization. (2014):1–9, 2015. 2
Wan, Li, Zeiler, Matthew, Zhang, Sixin, LeCun, Yann, and Fergus, Rob. Regularization of neural networks using dropconnect. Icml, (1):109–111, 2013. 2, 2.1, 3
Wu, Zhirong, Lin, Dahua, and Tang, Xiaoou. Adjustable Bounded Rectifiers: Towards Deep Binary Representations. arXiv preprint, pp. 1–11, 2015. 6