Auto-Differentiation of Relational Computations for Very Large Scale Machine Learning