SDPRLayers: Certifiable Backpropagation Through Polynomial Optimization Problems in Robotics
<|reference_start|>SDPRLayers: Certifiable Backpropagation Through Polynomial Optimization Problems in Robotics: Differentiable optimization is a powerful new paradigm capable of reconciling model-based and learning-based approaches in robotics. However, the majority of robotics optimization problems are non-convex and current differentiable optimization techniques are therefore prone to convergence to local minima. When this occurs, the gradients provided by these existing solvers can be wildly inaccurate and will ultimately corrupt the training process. On the other hand, many non-convex robotics problems can be framed as polynomial optimization problems and, in turn, admit convex relaxations that can be used to recover a global solution via so-called certifiably correct methods. We present SDPRLayers, an approach that leverages these methods as well as state-of-the-art convex implicit differentiation techniques to provide certifiably correct gradients throughout the training process. We introduce this approach and showcase theoretical results that provide conditions under which correctness of the gradients is guaranteed. We first demonstrate our approach on two simple-but-demonstrative simulated examples, which expose the potential pitfalls of existing, state-of-the-art, differentiable optimization methods. We then apply our method in a real-world application: we train a deep neural network to detect image keypoints for robot localization in challenging lighting conditions. We provide our open-source, PyTorch implementation of SDPRLayers and our differentiable localization pipeline.<|reference_end|>
@article{holmes2024sdprlayers:,
    title={SDPRLayers: Certifiable Backpropagation Through Polynomial Optimization
  Problems in Robotics},
    author={Connor Holmes, Frederike D"umbgen and Timothy D. Barfoot},
    journal={arXiv preprint arXiv:2405.19309},
    year={2024},
    archivePrefix={arXiv},
    eprint={2405.19309},
    primaryClass={cs.RO}
}