One of the key mathematical foundations of machine learning is using gradient descent to find maxima and minima in a multi-dimensional data set Gradient descent is good  but getting the most out of it can sometimes leave you wringing your hands or doing a lot of painful mathematical investigation and analysis