[论文解读] Differentiating Through a Conic Program
本文提出了一种高效计算凸锥规划中解映射导数的方法,通过隐式微分其同质自对偶嵌入的残差映射,并利用迭代方法求解由此产生的线性系统。该方法实现了对包含数百万个系数的问题的导数算子及其伴随算子的可扩展计算,支持扰动分析和通过自动微分进行梯度计算。
We consider the problem of efficiently computing the derivative of the solution map of a convex cone program, when it exists. We do this by implicitly differentiating the residual map for its homogeneous self-dual embedding, and solving the linear systems of equations required using an iterative method. This allows us to efficiently compute the derivative operator, and its adjoint, evaluated at a vector. These correspond to computing an approximate new solution, given a perturbation to the cone program coefficients (i.e., perturbation analysis), and to computing the gradient of a function of the solution with respect to the coefficients. Our method scales to large problems, with numbers of coefficients in the millions. We present an open-source Python implementation of our method that solves a cone program and returns the derivative and its adjoint as abstract linear maps; our implementation can be easily integrated into software systems for automatic differentiation.
研究动机与目标
- 当解可微时,实现凸锥规划中解映射导数的高效计算。
- 通过计算问题系数的微小变化如何影响解,支持扰动分析。
- 计算依赖于锥规划解的目标函数相对于系数的梯度。
- 将导数计算扩展到包含数百万个系数的大规模问题。
- 提供一个开源实现,可与自动微分框架集成。
提出的方法
- 该方法对锥规划的同质自对偶嵌入的残差映射进行隐式微分。
- 将导数计算表述为由隐函数定理导出的线性方程组。
- 使用迭代求解器高效求解导数计算中产生的线性系统。
- 该方法同时计算导数算子及其伴随算子,作为抽象线性映射。
- 实现基于Python编写,将导数和伴随算子作为一等对象暴露,便于集成到自动微分流水线中。
- 该方法避免显式矩阵组装,从而实现大规模问题的可扩展性。
实验结果
研究问题
- RQ1如何高效计算凸锥规划解映射的导数?
- RQ2对大规模锥规划而言,计算导数及其伴随算子的最可扩展方式是什么?
- RQ3我们能否使用隐式微分和迭代求解器避免在导数计算中显式形成矩阵?
- RQ4该方法在包含数百万个系数的问题上扩展性如何?
- RQ5计算出的导数和伴随算子能否无缝集成到自动微分框架中?
主要发现
- 该方法通过隐式微分和迭代线性求解器,实现了对凸锥规划导数算子及其伴随算子的高效计算。
- 该方法可扩展至包含数百万个系数的问题,证明了其在大规模应用中的实际可行性。
- 导数计算支持对解的函数的扰动分析和梯度计算。
- 开源Python实现将导数和伴随算子作为抽象线性映射暴露,便于集成到自动微分系统中。
- 该方法避免显式矩阵组装,降低了内存开销并提高了计算效率。
- 通过在大规模锥规划上的数值实验验证,该技术具有鲁棒性和高精度。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。