Hi,
We have developed a Matlab toolbox for mixture models, and we use Manopt to employ gradient-based optimization methods on manifolds to do parameter estimation for the models. Basically we define product manifolds for the parameters of the models and then optimize the log-likelihood. Various design aspects of our code have been inspired from your excellent toolbox. We also include some manifolds and an LBFGS solver for Manopt. Unfortunately we still haven't had time to make them compatible with Manopt 2. You can find the toolbox here: http://visionlab.ut.ac.ir/mixest. We will be happy to learn of your thoughts on our library.
Here is some suggestions about your awesome toolbox that came to my mind while developing MixEst (sorry if I'm being concise too much):
1. Support for mini-batch optimization
2. Support for discarding the optimization history after each mini-batch (as in Ngiam, J., Coates, A., Lahiri, A., Prochnow, B., Le, Q. V., & Ng, A. Y. (2011). On optimization methods for deep learning. In Proceedings of the 28th International Conference on Machine Learning (ICML-11) (pp. 265-272).)
3. Letting custom stop messages in user's stopfun (adding a reason output for stopfun prototype)
4. Adding a stopping criterion that checks for a tolerance on cost difference, not the value of the cost.
Thank you
The return value is a Boolean. If
stopnow
is returned as true, the solver will terminate.Example:
- options.stopfun = @mystopfun;
- function stopnow = mystopfun(problem, x, info, last)
- stopnow = (last >= 3 && info(last-2).cost - info(last).cost < 1e-3);
- end
This will tell the solver to exit as soon as two successive iterations combined have decreased the cost by less than 10-3.
The stopping criterion is not so important, but I thought setting an options.tolcostdiff would be easier than using stopfun, and when we have no idea of the range of values that the cost can take, it is a common practice to stop optimization when the cost improvement becomes too small (beside checking the norm of the gradient). Local minima can be avoided by some higher-level method.
Thanks for your consideration
All Best