https://medium.com/@monocosmo77/how-projected-gradient-descent-works-in-machine-learning-pipelines-part3-2923540a39ba