implement sgd, adagrad, adadelta, momentum, rmsprop