https://medium.com/@monocosmo77/understanding-gradient-descent-ascent-with-examples-part7-machine-learning-optimization-14ddbe5c0b5b