{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/developing-bug-free-machine-learning-systems","title":"Developing Bug-Free Machine Learning Systems With Formal Mathematics","arxiv_id":"1706.08605","date":"2017-06-26","proceeding":"ICML 2017 8","authors":["Daniel Selsam","Percy Liang","David L. Dill"],"abstract":"Noisy data, non-convex objectives, model misspecification, and numerical\ninstability can all cause undesired behaviors in machine learning systems. As a\nresult, detecting actual implementation errors can be extremely difficult. We\ndemonstrate a methodology in which developers use an interactive proof\nassistant to both implement their system and to state a formal theorem defining\nwhat it means for their system to be correct. The process of proving this\ntheorem interactively in the proof assistant exposes all implementation errors\nsince any error in the program would cause the proof to fail. As a case study,\nwe implement a new system, Certigrad, for optimizing over stochastic\ncomputation graphs, and we generate a formal (i.e. machine-checkable) proof\nthat the gradients sampled by the system are unbiased estimates of the true\nmathematical gradients. We train a variational autoencoder using Certigrad and\nfind the performance comparable to training the same model in TensorFlow.","url_abs":"http://arxiv.org/abs/1706.08605v1","url_pdf":"http://arxiv.org/pdf/1706.08605v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"developing-bug-free-machine-learning-systems","repo_url":"https://github.com/dselsam/certigrad","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null}],"tasks":[{"task_slug":"machine-learning","task_name":"BIG-bench Machine Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}