[Insight-developers] problm with vnl optimizers and scales
Julien Jomier
jjomier at cs.unc.edu
Thu Mar 3 19:36:05 EST 2005
Hi Zach,
> Do people agree that this is a problem? If so, I'll fix the vnl
> optimizer wrappers to deal with it.
You are right. Can you put a bug report as well? (better to keep track
of these modifications). Thanks a lot for finding the bug and fixing it!
Let me know if you need help,
Julien
Zachary Pincus wrote:
> Hello all,
>
> I think I've found a minor problem with how the VNL optimizer wrappers
> deal with user-provided scales. Specifically, they do not adjust the
> starting parameter values to take account of the scale factors, but they
> adjust everything else. This causes the starting parameter values to
> become distorted, which poses problems in cases where the starting
> values are important. (Say, when using large scales to hold a parameter
> near it's starting value, or when using hill-climbing.)
>
> Here's how things work, and what's wrong (as far as I can tell):
>
> (1) VNL wrapper optimizers use a "cost function adapter" which scales
> parameters by dividing them by the scale. So if the vnl optimizer asks
> for the value at (10, 10), and the scales are (10, 2), then the cost
> function adapter returns the value at (1, 5). So if the initial position
> is at (0, 0), the real optimum is at (2, 1), and the scales are set to
> (1000, 1000), the vnl optimizer would have to move from (0,0) to (2000,
> 1000) to find that optimum. This is how setting a large scale in one
> axis can slow the optimizer's progress in that axis.
>
> (2) The VNL wrapper optimizers divide the final parameter values they
> get from the optimizer by the scales before returning them to the user.
> This takes the (2000, 1000) from the previous example and sets it back
> to the expected (2, 1).
>
> (3) Here is the problem: The VNL wrapper optimizers DO NOT scale up the
> initial parameters. Suppose that in the previous example, the initial
> position is set precisely to the maximum (2, 1). So the optimizer
> shouldn't have to move at all! However, currently, the initial position
> is passed un-scaled to the vnl optimizer. So the VNL optimizer starts at
> (2, 1) and has to traverse to (2000, 1000). The right thing to do is
> quite clearly to multiply the initial parameters by the scale.
>
> Do people agree that this is a problem? If so, I'll fix the vnl
> optimizer wrappers to deal with it.
>
> Zach
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
>
>
>
More information about the Insight-developers
mailing list