Block-Simultaneous Direction Method of Multipliers: A proximal primal-dual splitting algorithm for nonconvex problems with multiple constraints

Fred Moolekamp, Peter Melchior
8/30/2017
math.OCcs.CVcs.LG

Official code: pmelchior/proxmin (120 stars, MIT, last commit 2022-06-13).

Abstract

We introduce a generalization of the linearized Alternating Direction Method of Multipliers to optimize a real-valued function $f$ of multiple arguments with potentially multiple constraints $g_\circ$ on each of them. The function $f$ may be nonconvex as long as it is convex in every argument, while the constraints $g_\circ$ need to be convex but not smooth. If $f$ is smooth, the proposed Block-Simultaneous Direction Method of Multipliers (bSDMM) can be interpreted as a proximal analog to inexact coordinate descent methods under constraints. Unlike alternative approaches for joint solvers of multiple-constraint problems, we do not require linear operators $L$ of a constraint function $g(L\ \cdot)$ to be invertible or linked between each other. bSDMM is well-suited for a range of optimization problems, in particular for data analysis, where $f$ is the likelihood function of a model and $L$ could be a transformation matrix describing e.g. finite differences or basis transforms. We apply bSDMM to the Non-negative Matrix Factorization task of a hyperspectral unmixing problem and demonstrate convergence and effectiveness of multiple constraints on both matrix factors. The algorithms are implemented in python and released as an open-source package.

View on arXivView PDF

Code Implementations(1)

pmelchior/proxminOfficial100%
MIT

Proximal optimization in pure python

12025PythonMay 5, 20174 years agoMIT
nonnegative-matrix-factorizationoptimization-algorithmsproximal-algorithms

Similar Papers

Cite this paper

@article{moolekamp2017blocksimultaneous,
  title  = {Block-Simultaneous Direction Method of Multipliers: A proximal primal-dual splitting algorithm for nonconvex problems with multiple constraints},
  author = {Fred Moolekamp and Peter Melchior},
  year   = {2017},
  eprint = {1708.09066},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1708.09066}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1708.09066.svg)](https://codeofpaper.com/paper/1708.09066)

Discussion