What is ordinary gradient descent? it is a simple algorithm in which we repeatedly make small steps downward
on an error surface defined by a loss function of some parameters. For the purpose of ordinary gradient
descent we consider that the training data is rolled into the loss function. Then the pseudocode of this algorithm
can be described as :