https://milav.in/blog/deep-learning-optimization-comparison/