Deep Learning Generalization (Theoretical Foundations and Practical Strategies)