Added a simple gradient descent implementation. Works in 2d, seems to be sensitive to parameters in higher dimensions