Stochastic Optimization Methods For Modern Machine Learning Problems