Home > manopt > manifolds > symfixedrank > symfixedrankYYfactory.m

symfixedrankYYfactory

PURPOSE ^

Manifold of n-by-n symmetric positive semidefinite matrices of rank k.

SYNOPSIS ^

function M = symfixedrankYYfactory(n, k)

DESCRIPTION ^

 Manifold of n-by-n symmetric positive semidefinite matrices of rank k.

 function M = symfixedrankYYfactory(n, k)

 A point X on the manifold is parameterized as YY^T where Y is a matrix of
 size nxk. As such, X is symmetric, positive semidefinite. We restrict to
 full-rank Y's, such that X has rank exactly k. The point X is numerically
 represented by Y (this is more efficient than working with X, which may
 be big). Tangent vectors are represented as matrices of the same size as
 Y, call them Ydot, so that Xdot = Y Ydot' + Ydot Y. The metric is the
 canonical Euclidean metric on Y.
 
 Since for any orthogonal Q of size k, it holds that (YQ)(YQ)' = YY',
 we "group" all matrices of the form YQ in an equivalence class. The set
 of equivalence classes is a Riemannian quotient manifold, implemented
 here.

 Notice that this manifold is not complete: if optimization leads Y to be
 rank-deficient, the geometry will break down. Hence, this geometry should
 only be used if it is expected that the points of interest will have rank
 exactly k. Reduce k if that is not the case.
 
 An alternative, complete, geometry for positive semidefinite matrices of
 rank k is described in Bonnabel and Sepulchre 2009, "Riemannian Metric
 and Geometric Mean for Positive Semidefinite Matrices of Fixed Rank",
 SIAM Journal on Matrix Analysis and Applications.


 The geometry here implemented is the simplest case of the 2010 paper:
 M. Journee, P.-A. Absil, F. Bach and R. Sepulchre,
 "Low-Rank Optimization on the Cone of Positive Semidefinite Matrices".
 Paper link: http://www.di.ens.fr/~fbach/journee2010_sdp.pdf
 
 
 Please cite the Manopt paper as well as the research paper:
     @Article{journee2010low,
       Title   = {Low-rank optimization on the cone of positive semidefinite matrices},
       Author  = {Journ{\'e}e, M. and Bach, F. and Absil, P.-A. and Sepulchre, R.},
       Journal = {SIAM Journal on Optimization},
       Year    = {2010},
       Number  = {5},
       Pages   = {2327--2351},
       Volume  = {20},
       Doi     = {10.1137/080731359}
     }

 See also: elliptopefactory spectrahedronfactory

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function M = symfixedrankYYfactory(n, k)
0002 % Manifold of n-by-n symmetric positive semidefinite matrices of rank k.
0003 %
0004 % function M = symfixedrankYYfactory(n, k)
0005 %
0006 % A point X on the manifold is parameterized as YY^T where Y is a matrix of
0007 % size nxk. As such, X is symmetric, positive semidefinite. We restrict to
0008 % full-rank Y's, such that X has rank exactly k. The point X is numerically
0009 % represented by Y (this is more efficient than working with X, which may
0010 % be big). Tangent vectors are represented as matrices of the same size as
0011 % Y, call them Ydot, so that Xdot = Y Ydot' + Ydot Y. The metric is the
0012 % canonical Euclidean metric on Y.
0013 %
0014 % Since for any orthogonal Q of size k, it holds that (YQ)(YQ)' = YY',
0015 % we "group" all matrices of the form YQ in an equivalence class. The set
0016 % of equivalence classes is a Riemannian quotient manifold, implemented
0017 % here.
0018 %
0019 % Notice that this manifold is not complete: if optimization leads Y to be
0020 % rank-deficient, the geometry will break down. Hence, this geometry should
0021 % only be used if it is expected that the points of interest will have rank
0022 % exactly k. Reduce k if that is not the case.
0023 %
0024 % An alternative, complete, geometry for positive semidefinite matrices of
0025 % rank k is described in Bonnabel and Sepulchre 2009, "Riemannian Metric
0026 % and Geometric Mean for Positive Semidefinite Matrices of Fixed Rank",
0027 % SIAM Journal on Matrix Analysis and Applications.
0028 %
0029 %
0030 % The geometry here implemented is the simplest case of the 2010 paper:
0031 % M. Journee, P.-A. Absil, F. Bach and R. Sepulchre,
0032 % "Low-Rank Optimization on the Cone of Positive Semidefinite Matrices".
0033 % Paper link: http://www.di.ens.fr/~fbach/journee2010_sdp.pdf
0034 %
0035 %
0036 % Please cite the Manopt paper as well as the research paper:
0037 %     @Article{journee2010low,
0038 %       Title   = {Low-rank optimization on the cone of positive semidefinite matrices},
0039 %       Author  = {Journ{\'e}e, M. and Bach, F. and Absil, P.-A. and Sepulchre, R.},
0040 %       Journal = {SIAM Journal on Optimization},
0041 %       Year    = {2010},
0042 %       Number  = {5},
0043 %       Pages   = {2327--2351},
0044 %       Volume  = {20},
0045 %       Doi     = {10.1137/080731359}
0046 %     }
0047 %
0048 % See also: elliptopefactory spectrahedronfactory
0049 
0050 % This file is part of Manopt: www.manopt.org.
0051 % Original author: Bamdev Mishra, Dec. 30, 2012.
0052 % Contributors:
0053 % Change log:
0054 %
0055 %  July 10, 2013 (NB):
0056 %       Added vec, mat, tangent, tangent2ambient ;
0057 %       Correction for the dimension of the manifold.
0058 %
0059 %   April 2, 2015 (NB):
0060 %       Replaced trace(A'*B) by A(:)'*B(:) (equivalent but faster).
0061 
0062 
0063     M.name = @() sprintf('YY'' quotient manifold of %dx%d psd matrices of rank %d', n, k);
0064 
0065     M.dim = @() k*n - k*(k-1)/2;
0066 
0067     % Euclidean metric on the total space
0068     M.inner = @(Y, eta, zeta) eta(:)'*zeta(:);
0069 
0070     M.norm = @(Y, eta) sqrt(M.inner(Y, eta, eta));
0071 
0072     M.dist = @(Y, Z) error('symfixedrankYYfactory.dist not implemented yet.');
0073 
0074     M.typicaldist = @() 10*k;
0075 
0076     M.proj = @projection;
0077     function etaproj = projection(Y, eta)
0078         % Projection onto the horizontal space
0079         YtY = Y'*Y;
0080         SS = YtY;
0081         AS = Y'*eta - eta'*Y;
0082         Omega = lyap(SS, -AS);
0083         etaproj = eta - Y*Omega;
0084     end
0085 
0086     M.tangent = M.proj;
0087     M.tangent2ambient = @(Y, eta) eta;
0088 
0089     M.retr = @retraction;
0090     function Ynew = retraction(Y, eta, t)
0091         if nargin < 3
0092             t = 1.0;
0093         end
0094         Ynew = Y + t*eta;
0095     end
0096 
0097 
0098     M.egrad2rgrad = @(Y, eta) eta;
0099     M.ehess2rhess = @(Y, egrad, ehess, U) M.proj(Y, ehess);
0100 
0101     M.exp = @exponential;
0102     function Ynew = exponential(Y, eta, t)
0103         if nargin < 3
0104             t = 1.0;
0105         end
0106         
0107         Ynew = retraction(Y, eta, t);
0108         warning('manopt:symfixedrankYYfactory:exp', ...
0109             ['Exponential for symmetric, fixed-rank ' ...
0110             'manifold not implemented yet. Used retraction instead.']);
0111     end
0112 
0113     % Notice that the hash of two equivalent points will be different...
0114     M.hash = @(Y) ['z' hashmd5(Y(:))];
0115 
0116     M.rand = @random;
0117     function Y = random()
0118         Y = randn(n, k);
0119     end
0120 
0121     M.randvec = @randomvec;
0122     function eta = randomvec(Y)
0123         eta = randn(n, k);
0124         eta = projection(Y, eta);
0125         nrm = M.norm(Y, eta);
0126         eta = eta / nrm;
0127     end
0128 
0129     M.lincomb = @matrixlincomb;
0130 
0131     M.zerovec = @(Y) zeros(n, k);
0132 
0133     M.transp = @(Y1, Y2, d) projection(Y2, d);
0134         
0135     M.vec = @(Y, u_mat) u_mat(:);
0136     M.mat = @(Y, u_vec) reshape(u_vec, [n, k]);
0137     M.vecmatareisometries = @() true;
0138 
0139 end

Generated on Sat 12-Nov-2016 14:11:22 by m2html © 2005