Improving Deep Neural Networks: Optimization, Regularization, and Generative Modeling