A Python library to embed ML models in declarative optimization models
Apache License 2.0 (Apache-2.0)
The EMLlib allows one to embed a pre-trained Machine Learning model, by encoding its structure using variables and constraints. This is useful in a number of use cases, e.g.:
- Dealing with optimization problems over complex real world systems (e.g. in prescriptive analytics), decision subject to uncertainty, dynamic systems, or simulation
- ML model verification
- Generating counterexamples
The library is designed to read ML models from multiple format and to support different optimization back-ends, though at the moment the supported tools are limited.
Additional information can be found in the github repository linked in the top-right of this page.
Research areasIntegrative AI
Technical CategoriesConstraints and satisfiability Machine learning
04.12.2021 - 12:54
The library currently supports:
- Feed-forward, fully-connected Neural Networks (via Tensorflow/Keras) and Decision trees on the ML side
- The IBM Cplex Optimizer and the Goole Or-Tools Mixed Integer Linear solver wrapper on the optimization side.
Execution environment: interpreted
Version of the environment: Python 3.X
The EMLlib can be used as an exact approach for the verification of ML systems and for the generation of adversarial examples, with the corresponding advantages (completeness) and disadvantages (limited scalability). As such, the library could be used by malicious actor to fool an existing ML system (with known structure and weights), or by a lawful actor to certificate or improve the robustness of an ML system.
The tool is designed simply for model integration so that GDRP restrictions do not apply to the library itself. The models (ML & optimization) being integrated should however respect GDPR individually.