# Loss of precision when encoding DNN weights

This question is related to the usage of NN in critical systems (those where a failure can cause life threatening situations - autopilots for example) and the need for formal guarantees on their behavior. Here is, for example, a paper that verifies NN used in the controls of an unmanned air-vehicle.

There are numerous tools and techniques for the formal verification (not just testing and simulation, but actual mathematical proof) of, say, floating-point calculation (properties like: will not overflow, will not accumulate an error greater than x, etc).

Now take a DNN where the weights are real numbers. That is the DNN as a concept. But there is the implementation of the NN, where the weights must be encoded as floating-points (some even as low precision as 3-bits integers, apparently). And then, (faster) computation is done on these encodings. Someone might argue that you lose precision, but others might answer that it may be a good thing since one must prevent a NN for over-fitting anyway...

Questions:

• Is there a way to quantify the effect of this encoding on the robustness/precision/stability-of-classification, in a comparable way to what we have in (non learning) software verification?
• Are there NN architectures (like Sum-Product Networks(?)) that are more amendable to offer such guarantees?
• There is a lot of evidence that floating point precision is not a factor in neural networks, for example here arxiv.org/pdf/1412.7024.pdf – Maxim Sep 30 '17 at 19:28
• @Maxim ... that's correct. When the data is hygienic (set up well to support convergence in its statistical profile) and the accuracy required is typical neither the number of bits in the mantissa nor the exponent become an issue for 64 bit IEEE floats. Digital noise becomes an issue in convergence when the error surface curvature is low or 32 bit IEEE floats. The risk is highest in the case of both. Using learning rate tapering helps. – FelicityC Oct 22 '18 at 2:16