Enforcing And Discovering Structure In Machine Learning