[Insight-users] OnePlusOneEvolutionaryOptimizer

Luis Ibanez luis.ibanez at kitware.com
Sun, 02 May 2004 13:34:25 -0400


Hi Christos,

Here is a brief description of how the
OnePlusOneOptimizer works:


This is an iterative optimizer that explores the
parametric space by randomly generating sampling
points around the current position. Note that in the
image registration framework the parametric space is
defined by the array of Transform parameters.

The algorithm used for generating the points can indeed
be plugged in from a variety of generators. A typical
generator to use is the Multivariate generator, that simply
expects to receive the Covariance matrix of the statistical
distribution of the transform parameters array.

This Covariance matrix is estimated at each iteration of
the OnePlusOne algorithm. The variances in the matrix are
increased when the new point produces higher fitness values,
and are decreased when the new point produces lower fitness
values. The initial covariance matrix is computed using
the "InitialRadius" parameters (after correcting for the
optimizer scales).

The rationale behind this update process is that if
points around the current position produce better results,
then our current position is not the optimal value and we
should look in a larger region.  On the other hand, when
points around our current point produce lower fitness
values, that increases the confidence in the current value
being the optimal value, and therefore we could start
concentrating in a smaller region closer to the current
point.

The optimization converges when the Frobenius norm of
the covariance matrix falls below a minimum threshold.
This minimum threshold is the "Epsilon" value that you
set with SetEpsilon().  Note that the frobenius norm of
the Matrix A is  sqrt( sum(  (Aij)^2 ) ). You should then
anticipate a value of Epsilon that is meaninful with
respect to this metric.

The "MaximumIteration" is of course the number of time
the algorithm is going to generate a new individual and
test its fitness compared to its parent.

The Growth and Shrink factors define how much the
estimation of the covariance matrix should be increased
or decreased at every iteration. You could conceptually
associate these two factors to the learning rate in a
gradient descent optimizer, or to the cooling factor of
simulated annealing.  It comes down to ask: If you think
that you are not in the region of the optimal value,
how far from here do you want to start looking for new
values ? (that will be associated to the growth factor).
If you think that you are close the the optimal value,
how much do you want to reduce the region that you
have been exploring ? (that will be associated to the
shrink factor).

You may want to take a look at the code of the
OnePlusOneEvolutionaryAlgorithm in

     Insight/Code/Numerics

Also, a new registration example using this optimizer was
added to:


     Insight/Examples/Registration/
                  ImageRegistration11.cxx




Regards,


    Luis



----------------------------
Christos Panagiotou wrote:
> 
> Dear Luis
> 
> I am trying to use the OnePlusOneEvolutionaryOptimizer to register an 
> MRI volue (256x256x55) against a PET volume (128x128x31) later on i ll 
> try MRI - Optical data registration tests.
> 
> I just wanted some initial values about:
> 
> MaximumIterations
> InitialRadius
> RadiusShrinkFactor
> RadiusGrowthFactor
> and Epsilon
> 
> also i would like to ask where can i find more info about the algorithm 
> itself so i could understand also the way it works?
> 
> finaly, if i want to use this algorithm in a multiresolution (pyramid) 
> approach of registration, what changes should be applied on the 
> optimizer every time a level changes? for example in the gradient 
> descent we decrease the learning rate value for this level, in this one? 
> would you suggest making the radius larger or smaller? changing the 
> epsilon? sorry i am asking all these but i am not really sure how this 
> works!
> 
> thanks
> christos
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>