December 07, 2013

running with 5mm in-plane variance. Dataset 4 and 5's issues seem to be resolved. Interesting, since we still have isotropoic offset veriance in-place, too.

Can we get old issue to return by setting in-plane variance to zero?

...

Yes. And setting in-plane to nonzero and isotropic to zero?

...

Yes. But shifting is very significant, and motion is large and random.

There's obviously some part of the model thats resulting in these offsets, its just a matter of zeroing out parameters until the phenomenon goes away.

Position perturbation variance is the root of the problem; both iso and nonisotropic version fail in this way.

Some modification I made is causing indices to collapse... probably insufficient flexibility since I disabled rate and smoothness perturbations.

weird, rate and position variance seem tied to disappearing curves (index collape?). Seems that increasing rate variance a lot is causing it.

Increasing rate variance seems to facilitate perturb_rate_variance having more influcence. Possibly because we're getting index shrinkage, so small fluctuations in rate result in large fluctuations in structure.

My current hypothesis is that index shrinkage is resulting in the highly non-intuitive results we're seeing. Intuition assumes index corresponds to distance, but when shrinkage occurs, this is no longer the case, so intuition becomes cloudy or fails entirely.

We really need to constrain indices somehow, without preventing corrections.

First attempt: force length to remain constant. added a squared penalty over total change in index length. It's tricky because of our view-grouped transformation; only one group contributes to the size of the maximum end-point, and only one index contributes to the minimum start-point. Implemented, but didn't get desired result. Instead, indices shifted wildly to comply with the length constraint. In some cases, overall shrinkage occurred, combined with occasional spikes to keep the length up.

...

Observation: plot of index vs. observation number is *smooth*. Add a GP prior over index using observation ordinal as index.

...

Implemented in `optimize_ml_wrt_indices_2.m`

. Initial tests seem promising, but need to train on parameters. Zeroth and first derivitives w.r.t. parameters:

\[
\begin{align}
g(x) = \log p(x | t) &= -0.5 x^\top \left( \sigma_1^2 K_1 + \sigma_2^2 K_2 + \sigma_3^2 K_3 \right)^{-1} x - 0.5 \log \left | \sigma_1^2 K_1 + \sigma_2^2 K_2 + \sigma_3^2 K_3 \right | - C \\
&= -0.5 x^\top U^{-1} x - 0.5 \log | U | - C \\
\frac{\partial g(x)}{\partial \sigma_i} &= \sigma_i \left(z' K_i z - \text{Tr}\left[U^{-1} K_i\right] \right)
\end{align}
\]

where \(U = \sigma_1 K_1 + ... \) and \(z = U^{-1} x \).

TODO:

- get curve indices from reconstruction
- group by view; get corresponding ordinal; add to set
- construct energy function over set of curves using functions above
- initial fit of rate and offset using direct means;
- refine all using Newton-Raphson

Hyperprior →
← Troubleshooting excessive index drift in endpoints; fixing Hessian under variable transformation.