Getting Started with STOP

Introduction

The STOP toolbox is designed for optimization problems on the Stiefel manifold, which could be expressed as

minXRn×p f(X)s. t.XX=Ip,

where Ip refers to the p-th order identity matrix, X is a matrix with n rows and p columns. The feasible set of this optimization problem

Sn,p:={XRn×p:XX=Ip},

can be regarded as a Riemannian manifold in Rn×p, and we also call it Stiefel manifold.

This toolbox is an integration of several state-of-the-art solvers for optimization problems on the Stiefel manifold. STOP is a prototyping toolbox, designed by capturing the special structures of problems on the Stiefel manifold. For basic use, one only needs to describe the cost function and its derivatives and call the build-in solvers. Basically, all the options in STOP toolbox have default values, and one can execute a solver without any specified option. This toolbox is under maintenance and working in progress. Any feedbacks and contributions are welcome!

 

Install STOP

Install

The STOP toolbox can be downloaded from Gitee. The current version of STOP is STOPv0.1 and was packaged on 2021/10/12. The STOP toolbox supports two different ways of installation. One could directly copy the solvers to the working folder for temporary execution. Besides, One can also install STOP to Matlab by the following steps.

  1. Extract the STOP.zip file to the installation folder, say /my_install_folder/.
  2. Go to/my_install_folder/ folder and execute /my_install_folder/STOP/install_stop.m in Matlab. If you wish to save the path for future usage, you can use the savepath function to save the path to STOP solvers.
  3. Enjoy!

 

Check

You can execute the script /my_install_folder/STOP/check_install/checkinstall.m to check whether STOP is properly installed. This script provides a overall check for all the solvers in STOP toolbox. If there are no errors, you are done! Otherwise, please feel free to contact us.

 

Example

Problem formulation

In this section, we consider the following nonlinear eigenvalue problem

minXSn,p 12tr(XLX)+α4ρLρ,

where ρ=Diag(XX), and L denotes the pseudo-inverse of the positive definite matrix L, i.e. LLL=L, LLL=L. Here we uses Diag(M) to denote the vector that is composed of diagonal entries of the square matrix M, while diag(v) refers to a diagonal matrix with v being its diagonal entries. Then the cost function and its Euclidean gradient can be expressed as

f(X)=12tr(XLX)+α4ρLρ,f(X)=LX+αdiag(Lρ)X.

In this example, we choose L as a tri-diagonal matrix generated by L = gallery('tridiag',n,-1,2,-1). Noting that L is full-rank, then we can conclude that L=L1 in this case. We solve this simple optimization problem using solvers in STOP to illustrate the most basic usage of the STOP toolbox.

An Example Code

Solving this optimization problem using solvers in STOP requires little Matlab codes:

Let us review the codes step by step. First, we generate the data (matrix L) for the optimization problem by the following codes.

Here instead of directly computing L1ρ in each step, we choose to factorize L=LlLu by LU factorization at the beginning stage of the codes. Therefore, in each step we could compute Lu\(Ll\rho) to compute L1ρ, which could be more efficient.

Then we specify the cost function and its gradient in the following function.

Currently, in STOP toolbox, we require the function return the function value and its gradient simultaneously. Usually, computing the function value and gradient simultaneously is much faster than compute them separately, even when cache techniques are involved. To achieve a better performance, we strongly suggest to compute the function value and gradient in a single function.

Now, with cost function and the data, we can set options for the solver. The initial point or dimensions should be specified in opts,

Then we call a solver, for instance, SLPG to solve the nonlinear eigenvalue problem.

Here the cost function and its derivatives are called by function handles.

Finally, we access the contents of the output structure Out and display the convergence plot of our solver.

Convergence plot

 

Solvers

Solvers, or optimization algorithms, are functions in STOP.

In principle, all solvers admit the basic call format as follows.

And we could only specify options.dim in options.

The output structure out contains the final solution to the optimization problem that can be accessed by out.X. Besides, the output structure out may contain the information to describe the optimality of the final solution (including the F-norm of Riemannian gradient, function value, and feasibility at the last iterate).

As Stiefel manifold is a nonconvex set in Rn×p, the optimization problems on Stiefel manifold is usually nonconvex and the final solution out.X is not guaranteed to be a global minimizer.

Furthermore, all solvers also admit a more complete call format.

Here the output structure out may contain information collected in the execution of the solver, including the time, feasibility, substationarity.

The input options options enables a customized parameters for the provided solver, including the parameters that affects the performance of the solver, the stopping criteria, and the information to be displayed in the execution of the solver.

NameCommentCall
FOForthMultiplier correction methods for a specific class of objectivesFOForth(...)
ProxOrthMultiplier correction methods for general smooth optimization problemsProxOrth(...)
PCALALM-based proximal gradient methods with column-wise normalizationPCAL(...)
PenCFFirst-order method based on exact penalty model (PenC)PenCF(...)
PenCPGFirst-order method based on exact penalty model for 2,1-norm regularized problemsPenCPG(...)
SLPGPenalty-free first-order method for nonsmooth problemsSLPG(...)
PenCSSecond-order method based on exact penalty model (PenC)PenCS(...)

 

Back to Homepage