import __future__ update
GradientDescent: better convergence criteria, alpha guess, avoid division by 0