Deep neural networks are widely used for nonlinear function approximation, with applications ranging from computer vision to control. Although these networks involve the composition of simple arithmetic operations, it can be very challenging to verify whether a particular network satisfies certain input-output properties. This article surveys methods that have emerged recently for soundly verifying such properties. These methods borrow insights from reachability analysis, optimization, and search. We discuss fundamental differences and connections between existing algorithms. In addition, we provide pedagogical implementations of existing methods and compare them on a set of benchmark problems.
Neural networks have been widely used in many applications, such as image classification and understanding, language processing, and control of autonomous systems. These networks work by mapping inputs to outputs through a sequence of layers. At each layer, the input to that layer undergoes an affine transformation followed by a simple nonlinear transformation before being passed to the next layer.
Neural networks are being used for increasingly important tasks, and in some cases, incorrect outputs can lead to costly consequences, hence validation of correctness at each layer is vital. The sheer size of the networks makes this not feasible using traditional methods.
In this monograph, the authors survey a class of methods that are capable of formally verifying properties of deep neural networks. In doing so, they introduce a unified mathematical framework for verifying neural networks, classify existing methods under this framework, provide pedagogical implementations of existing methods, and compare those methods on a set of benchmark problems.
Algorithms for Verifying Deep Neural Networks serves as a tutorial for students and professionals interested in this emerging field as well as a benchmark to facilitate the design of new verification algorithms.