Developing Bug-Free Machine Learning Systems With Formal Mathematics
arXiv:1706.08605
Abstract
Noisy data, non-convex objectives, model misspecification, and numerical instability can all cause undesired behaviors in machine learning systems. As a result, detecting actual implementation errors can be extremely difficult. We demonstrate a methodology in which developers use an interactive proof assistant to both implement their system and to state a formal theorem defining what it means for their system to be correct. The process of proving this theorem interactively in the proof assistant exposes all implementation errors since any error in the program would cause the proof to fail. As a case study, we implement a new system, Certigrad, for optimizing over stochastic computation graphs, and we generate a formal (i.e. machine-checkable) proof that the gradients sampled by the system are unbiased estimates of the true mathematical gradients. We train a variational autoencoder using Certigrad and find the performance comparable to training the same model in TensorFlow.
To appear at the Thirty-fourth International Conference on Machine Learning (ICML) 2017
References in corpus (2)
Cited by in corpus (10)
- Formal Specification and Verification of Autonomous Robotic Systems: A Survey
- Towards Verified Artificial Intelligence
- A Simple Differentiable Programming Language
- QED at Large: A Survey of Engineering of Formally Verified Software
- Proving Expected Sensitivity of Probabilistic Programs
- AI Research Considerations for Human Existential Safety (ARCHES)
- A Formal Proof of PAC Learnability for Decision Stumps
- ExAIS: Executable AI Semantics
- Outlining Traceability: A Principle for Operationalizing Accountability in Computing Systems
- Formal Methods for the Informal Engineer: Workshop Recommendations