
Nicolas just sent me the following:
Dear Igor,
Bamdev (cc) and I just released Manopt 3.0, our Matlab toolbox for optimization on manifolds:
We would be delighted if you could announce this major release on your blog once again.
Manopt
is a toolbox for optimization on manifolds, with major applications in
machine learning and computer vision (low rank constraints, orthogonal
matrices, ...). Of course, Manopt can also optimize over linear spaces
(and it's quite good at it).
This is non-convex
optimization. Yet, more and more papers show that certain classes of
non-convex problems on manifolds can be solved to global optimality with
local algorithms such as the ones implemented in Manopt. These tools
are also routinely used to refine solutions obtained by convex or
spectral relaxations, with excellent results.
The
toolbox is user friendly, requiring little knowledge about manifolds to
get started. See our tutorial and the many examples in the release:
Best,
Nicolas
Sure Nicolas ! As a side note, Manopt even has a tag on
Nuit Blanche and it is manopt.
Here are the changes from Manopt 2.0
- Manopt 3.0, packaged November 12,
2016.
- Code moved to GitHub!
Now accepting pull requests, and accelerating distribution of
patches.
- Bugs caught
- Logic bug in linesearch: lsmem handling corrected thanks
to Wen Huang. The default line-search algorithm for steepest
descent should now be much faster.
- Logic bug in getGradient when using problem.grad with a
different number of inputs compared to problem.cost.
- Corrected logic in plotting step of example
low_rank_dist_completion
- obliquefactory, in transposed mode, had an incorrect M.log
- Modifications to core engine
- Added capability to obtain a partial gradient (Euclidean
or Riemannian) of a cost function by specifying
problem.partialgrad or problem.partialegrad coupled with
problem.ncostterms. This is an important step to simplify
the future addition of stochastic gradient methods. Use
cases are: if problem.cost is expressed as a sum of
problem.ncostterms terms, then problem.partialgrad accepts a
point x and an index set I so that only the gradient with
respect to terms indexed in I is computed and returned.
- Added possibility to define problem.approxgrad, to provide
an approximation of the gradient. This can be populated with
a generic gradient approximation based on finite differences
via approxgradientFD. Solvers do this by default if they
need a gradient and none is given. This feature is slow, but
may be useful for prototyping. It is slow because Manopt
generates an orthonormal basis of the tangent space, and
compute a finite difference approximation of the directional
derivative along each basis vector to get an approximate
gradient (see also next item and new example
thomson_problem.)
- getGradient now knows how to compute the gradient if the
directional derivatives are accessible. This involves
generating an orthonormal basis of the tangent space at the
current point, then evaluating the directional derivative
along each basis vector and taking the appropriate linear
combination. This is very slow, especially for high
dimensional manifolds.
- New tools
- lincomb for a generic way of computing a long linear
combination of tangent vectors.
- grammatrix to compute the Gram matrix of a collection of
tangent vectors.
- orthogonalize to orthogonalize a basis of tangent vectors.
- tangentorthobasis to obtain a random orthonormal basis of
a tangent space, generically.
- smallestinconvexhull to compute the smallest tangent
vector in the convex hull of a given collection of tangent
vectors.
- hessianmatrix to get a matrix representing the Hessian at
a point in an orthonormal tangent basis.
- checkretraction allows, for manifolds which have a correct
exponential implemented, to verify the order of agreement
between the retraction and the exponential, in order to
determine numerically if the retraction is first- or
second-order.
- New examples
- elliptope_SDP solves SDP's over positive semidefinite
matrices with diagonal of 1's. This should run faster than
the Max-Cut example for quite a few things.
- elliptope_SDP_complex, same as above for complex matrices.
This solves the SDP which appears in PhaseCut and phase
synchronization, for example.
- thomson_problem to illustrate the new features that allow
to not specify the gradient of the cost (slow, but good for
prototyping.)
- New geometries
- skewsymmetricfactory for skew-symmetric matrices
(Euclidean geometry
- obliquecomplexfactory, to work with complex matrices whose
columns (or rows) all have unit norm
- Modifications to previous behavior
- symfixedrankYYcomplexfactory now has a Riemannian metric
matching that of euclideanfactory (it was scaled down by 2
as compared to previous Manopt versions.) This makes it
easier to switch between those two geometries. Relevant
changes propagated to radio_interferometric_calibration.
- hessianextreme now returns the info structure returned by
the internal solver call. The helper tool
tangentspherefactory now incorporates extra projections to
ensure the vector returned by hessianextreme is indeed a
tangent vector (former version could suffer from numerical
drift.)
- At the end of generalized_eigenvalue_computation, added a
rotation of Xsol to match the definition of generalized
eigenvectors (the eigenvalues were fine.)
- Numerous minor improvements; highlights:
- rotationsfactory now has a function M.retr2 which is a
second-order retraction.
- spherefactory and related sphere geometries now have a
distance function M.dist which is orders of magnitude more
accurate for close-by points.
- neldermead now respects options.verbosity less than 2.
- plotprofile / surfprofile have now mostly optional inputs,
making them easier to call for a quick glimpse at the cost
function.
Join the CompressiveSensing subreddit or the Google+ Community or the Facebook page and post there !
Liked this entry ? subscribe to Nuit Blanche's feed, there's more where that came from. You can also subscribe to Nuit Blanche by Email, explore the Big Picture in Compressive Sensing or the Matrix Factorization Jungle and join the conversations on compressive sensing, advanced matrix factorization and calibration issues on Linkedin.