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