Pyconstruct: Constraint Programming Meets Structured Prediction

Pyconstruct: Constraint Programming Meets Structured Prediction

Paolo Dragone, Stefano Teso, Andrea Passerini

Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence

Constructive learning is the task of learning to synthesize structured objects from data. Examples range from classical sequence labeling to layout synthesis and drug design. Learning in these scenarios involves repeatedly synthesizing candidates subject to feasibility constraints and adapting the model based on the observed loss. Many synthesis problems of interest are non-standard: they involve discrete and continuous variables as well as arbitrary constraints among them. In these cases, widespread formalisms (like linear programming) can not be applied, and the developer is left with writing her own ad-hoc solver. This can be very time consuming and error prone. We introduce Pyconstruct, a Python library tailored for solving real-world constructive problems with minimal effort. The library leverages max-margin approaches to decouple learning from synthesis and constraint programming as a generic framework for synthesis. Pyconstruct enables easy prototyping of working solutions, allowing developers to write complex synthesis problems in a declarative fashion in few lines of code. The library is available at: http://bit.ly/2st8nt3
Keywords:
Machine Learning: Machine Learning
Constraints and Satisfiability: Solvers and Tools
Machine Learning: Structured Learning