https://aibsnews.com/prototyping-gradient-descent-in-machine-learning/