Gradient Descent for Non-convex Problems in Modern Machine Learning