add naive stochastic gradient descent