added the potential for N-dependence to all gradient descent parameters and allowed them to be specified in the constructor