Low-rank spectral optimization via gauge duality

Friedlander and Macêdo. SIAM J. on Scientific Computing, 38(3):A1616-A1638, 2016 PDF


Various applications in signal processing and machine learning give rise to highly structured spectral optimization problems characterized by low-rank solutions. Two important examples that motivate this work are optimization problems from phase retrieval and from blind deconvolution, which are designed to yield rank-1 solutions. An algorithm is described that is based on solving a certain constrained eigenvalue optimization problem that corresponds to the gauge dual which, unlike the more typical Lagrange dual, has an especially simple constraint. The dominant cost at each iteration is the computation of rightmost eigenpairs of a Hermitian operator. A range of numerical examples illustrate the scalability of the approach.

Reproducible research

The experiments in the paper can all be reproduced with the commands below. The numerical formatting will differ from those used in the table; we use the excellent LaTeX package pgfplotstable to format the output.


Some of the tests can take significant amount of time because they run many thousands of examples. We suggest you download the solution cache file (see Step 2 below).

Execute these commands from the Matlab prompt:

# Step 1. Download the code:

# Step 2. Optionally download the solution cache (RECOMMENDED!).

# Step 3. Change directory and set the search paths.
cd low-rank-opt

The commands below can be used to generate the results used to populate the tables in the paper.

# Table 5.1: Phase retrieval, small random signals.

# Table 5.2: Low-rank semidefinite problems with noise.

# Table 5.3: Phase retrieval on a large image.

# Table 5.4: Blind deconvolution via nuclear norm minimization.

See the README.md file for more detail.


  author =       {Friedlander M. P. and Mac\^edo, I.},
  title =        {Low-rank spectral optimization via gauge duality},
  journal =      {SIAM J.\@ on Sci.\@ Comp.},
  year =         2016,
  volume =       28,
  number =       3,
  pages =        {A1616-A1638}