Hello,I am using ceres solver and trying to make the most use of the inner iteration feature. FIrst of all, some statements I believe are true (correct me if I'm wrong)1. The solver runs faster the better its information about jacobian sparsity
2. Information about jacobian sparsity is only passed to ceres by dividing the parameters into blocks. (For parameters in a block, ceres must assume dense jacobians)
3. Inner iterations are another way of exploiting the structure of the problem (In particular, if parameters can be divided into groups over which the residuals are linear, or more generally where the hessian entries are zero pairwise within a group).
4. Inner iteration groups are more effective the larger they are (subject to the property above).
5. Inner iteration groups are passed to ceres using 'parameter block orderings,' which is an ordered partition of the parameter blocks.
6. A restriction on a legal inner iteration group is that the parameter blocks of a group cannot co-occur in a partcular residual.
My question then is on the tension between the last point and the previous points.
Suppose there is a set of parameters for some problem for which all the residuals are linear. However a particular residual only depends on a small subset of these parameters, so theres a lot of jacobian sparsity also. (I am trying to solve such a problem) Trying to exploit the jacobian sparsity requires splitting this parameter set into different blocks. The last point then prevents using an inner iteration to optimize these parameters simultaneously, because then the small individual blocks co-occur in some of the residuals. Alternatively, I could have made this parameter set into a large parameter block to use inner iterations, but then I'm not exploiting the jacobian sparsity.My question is basically why the restriction on parameter block orderings?
If its because ceres has no other way to know the hessian has the claimed property, is there a way to assure ceres of this fact? Is it possible to change a line of code in the ceres source to remove this restriction forever?Thanks,Austin
--
You received this message because you are subscribed to the Google Groups "Ceres Solver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ceres-solver...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/f2b6b1a3-a367-4e2d-8609-8cdebe9a3711%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Thanks for the reply Sameer. I'm trying to use Ceres to solve systems of polynomial equations, the most recent of which in my study has 812 equations to 130 complex variables. My strategy so far has been to make a fine grained blocking of the variables, only grouping the real and imaginary parts of a particular variable into a parameter block. Same with residuals, a residual block is simply the real and imaginary part of an equation. This arrangement is useful not only for the typical sparsity of the jacobian, but for later steps when I try to 'sparsify' the solution by fixing some variables and optimizing over the remaining (great ceres feature).
For my particular problem, some of my colleagues try the so-called "alternating least squares" method, which apply's to what I believe you call a separable non linear least squares problem. The method is simply to optimize using exact linear methods alternately the groups of linear variables keeping the others constant. I had mistaken the inner iteration feature as a generalization of this method (in the documentation reference is made there to separable problems). Hence my belief in point 4.
Let me ask this then. Suppose I do want to do something similar to ALS where, after each trust region iteration, I wanted to further descend on 1 or more subgroups of variables (and I don't insist on doing this in parallel).1. Can this be achieved by a Solve call in an IterationCallback?
2. To what extent will the trust region or line search solvers solve linear least squares problem efficiently if the problem has this structure? Should I instead detect this case and apply a specialized solver?
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/1694ece0-0078-435c-a6fe-8b1ada9c1fed%40googlegroups.com.
Hi Sameer,I have a small doubt about the point 6 of the best practices of inner iteration groups. Just for getting more clarity on this topic.6. A restriction on a legal inner iteration group is that the parameter blocks of a group cannot co-occur in a particular residual.
- Does it restrict us to a whole residual block or just a particular residual in a vector of residuals.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/997b7e18-7fcc-427f-8e6e-0eb84b3405a5n%40googlegroups.com.