An Annotation-based Approach for Finding Bugs in Neural Network Programs
Mohammad Rezaalipour, Carlo A. Furia

TL;DR
This paper introduces aNNoTest, an annotation-based testing approach for neural network programs that effectively generates valid test inputs, uncovering numerous bugs in real-world applications.
Contribution
It proposes a simple annotation language and property-based testing method to improve bug detection in neural network programs written in dynamically-typed languages.
Findings
Generated 94 bugs across 19 programs
Annotated programs with an average of 6 annotations per function
Successfully identified all previously reported bugs in the surveyed projects
Abstract
As neural networks are increasingly included as core components of safety-critical systems, developing effective testing techniques specialized for them becomes crucial. The bulk of the research has focused on testing neural-network models; but these models are defined by writing programs, and there is growing evidence that these neural-network programs often have bugs too. This paper presents aNNoTest: an approach to generating test inputs for neural-network programs. A fundamental challenge is that the dynamically-typed languages (e.g., Python) commonly used to program neural networks cannot express detailed constraints about valid function inputs (e.g., matrices with certain dimensions). Without knowing these constraints, automated test-case generation is prone to producing invalid inputs, which trigger spurious failures and are useless for identifying real bugs. To address this…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdversarial Robustness in Machine Learning · Software Testing and Debugging Techniques · Software Engineering Research
