Our new X account is live! Follow @wizwand_team for updates
WorkDL logo mark

Differentiable Convex Optimization Layers

About

Recent work has shown how to embed differentiable optimization problems (that is, problems whose solutions can be backpropagated through) as layers within deep learning architectures. This method provides a useful inductive bias for certain problems, but existing software for differentiable optimization layers is rigid and difficult to apply to new settings. In this paper, we propose an approach to differentiating through disciplined convex programs, a subclass of convex optimization problems used by domain-specific languages (DSLs) for convex optimization. We introduce disciplined parametrized programming, a subset of disciplined convex programming, and we show that every disciplined parametrized program can be represented as the composition of an affine map from parameters to problem data, a solver, and an affine map from the solver's solution to a solution of the original problem (a new form we refer to as affine-solver-affine form). We then demonstrate how to efficiently differentiate through each of these components, allowing for end-to-end analytical differentiation through the entire convex program. We implement our methodology in version 1.1 of CVXPY, a popular Python-embedded DSL for convex optimization, and additionally implement differentiable layers for disciplined convex programs in PyTorch and TensorFlow 2.0. Our implementation significantly lowers the barrier to using convex optimization problems in differentiable programs. We present applications in linear machine learning models and in stochastic control, and we show that our layer is competitive (in execution time) compared to specialized differentiable solvers from past work.

Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven Diamond, Zico Kolter• 2019

Related benchmarks

TaskDatasetResultRank
Projection onto chainsProjection onto chains
Backward Latency (ms)41.01
29
Projection onto the probability simplexProbability Simplex
Backward Time (ms)1.23
26
Portfolio OptimizationMulti-period Portfolio Optimization
Backward Latency (ms)7.76
25
Second-order cone programmingSmall second-order cone programs (test)
Median Runtime (s)0.0086
8
Second-order cone programmingLarge second-order cone programs (test)
Median Runtime (s)2.3672
8
Constrained OptimizationSmall Non-Convex benchmark (test)
RS0.0036
3
Showing 6 of 6 rows

Other info

Follow for update