https://medium.com/@monocosmo77/new-insights-into-nonsmooth-optimization-part2-machine-learning-optimization-49b174b4d1fc