Skip to main content
QUICK REVIEW

[论文解读] Differentiable Convex Optimization Layers

Akshay Agrawal, Brandon Amos|arXiv (Cornell University)|Oct 28, 2019
Stochastic Gradient Optimization Techniques被引用 132
一句话总结

本论文介绍有纪律参数化编程(DPP)和仿射求解器仿射(ASA)形式,以实现通过有纪律的凸规划进行解析差分,并在 CVXPY 1.1 中实现,具备 PyTorch 和 TensorFlow 2.0 的可微分层,并展示在学习和控制中的应用。

ABSTRACT

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.

研究动机与目标

  • 提供一个框架,使得通过有纪律的凸规划(符合 DCP)进行微分的方式对凸优化领域的领域特定语言(DSLs)友好。
  • 引入有纪律的参数化编程(DPP)和 ASA 形式,确保参数到问题数据的映射是仿射的。
  • 在 CVXPY 1.1 中实现 DPP/ASA,并为 PyTorch 和 TensorFlow 2.0 创建可微分层。
  • 展示在线性模型的灵敏度分析以及随机控制中的学习控制-李雅普诺夫策略方面的应用。
  • 在二次规划的专用可微分求解器相比,展示出具竞争力的运行时。

提出的方法

  • 将有纪律的参数化编程(DPP)定义为具有参数仿射结构的参数化有纪律的凸规划的语法。
  • 将 DPP 规范化为仿射求解器仿射(ASA)形式,其中问题数据映射是仿射且可微分。
  • 通过 D^T S(θ) = D^T C(θ) D^T s(A,b,c) D^T R( x̃* ), 表达解映射的导数,使用对锥程序的圆锥求解器来求解 ASA 圈规划。
  • 将规范化器 C 表示为稀疏矩阵 Q 和稀疏张量 R,以实现高效的前向/反向传播。
  • 在 CVXPY 1.1 中实现该方法,并在 PyTorch 和 TensorFlow 2.0 中提供可微分的凸优化层,利用 diffcp 计算圆锥规划的导数。
  • 提供示例,并在密集和稀疏的二次规划上,与像 qpth 这样的专用求解器比较运行时间。

实验结果

研究问题

  • RQ1参数化时,如何实现对有纪律的凸规划的端到端微分?
  • RQ2DPP 和 ASA 形式是否允许在不对规范化进行反向传播的情况下,对凸优化层进行高效、自动微分?
  • RQ3在主流 ML 框架中,可微分凸优化层的实际性能与专用求解器相比如何?
  • RQ4这种方法能否在灵敏度分析和随机控制中实现新的端到端学习应用?

主要发现

  • 论文引入了 DPP 和 ASA 形式,使参数到问题数据的映射以及求解器输出到原始问题解的映射成为仿射的。
  • 提供在 CVXPY 1.1 中的实现,以及面向 PyTorch 和 TensorFlow 2.0 的可微分层,具备批处理支持。
  • 通过将规范化器表示为稀疏矩阵来加速规范化过程,从而实现高效的梯度计算。
  • 实验展示在数据污染灵敏度分析和随机控制中的凸近似动态规划应用。
  • 对于二次规划,所提层在密集场景下可与像 qpth 这样的专用求解器竞争,在稀疏场景下更快。
  • 该方法相比以往方法显著降低了规范化时间。
  • 该框架适用于 CVX、CVXPY、Convex.jl、CVXR 等标准 DSL 能求解的广泛凸问题。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。