adding stochastic gradient descent