add batch gradient descent