Dunno if this is actually used, but I thought I'd document things I've noticed here.
I've changed the convergence criterion in my branch in em_cilk_train.mako to continue iterations while change > epsilon rather than fabs(change) > epsilon. For large datasets, the magnitude of change due to roundoff can sometimes oscillate above epsilon. Since EM updates are supposed to be monotonically increasing in the log likelihood, the first time the roundoff error cause the change to be negative, iterations should stop.
Dunno if this is actually used, but I thought I'd document things I've noticed here.
I've changed the convergence criterion in my branch in em_cilk_train.mako to continue iterations while change > epsilon rather than fabs(change) > epsilon. For large datasets, the magnitude of change due to roundoff can sometimes oscillate above epsilon. Since EM updates are supposed to be monotonically increasing in the log likelihood, the first time the roundoff error cause the change to be negative, iterations should stop.