https://medium.com/@monocosmo77/understanding-gradient-descent-ascent-with-examples-part10-machine-learning-optimization-ba14c4828178