Gradient ascent algorithm

sim_gd is an attempt at a gradient ascent approach based on clustering
the data to approximate the gradient. Naive version that does not
remember past data points