function gradient_descent(inputs, answers, learning_rate):

   parameters = choose_starting_parameters()
   repeat until convergence:
      predictions = model(inputs, parameters)
      error = loss(predictions, answers)
      slope = gradient_of_loss(parameters)
      parameters = parameters - learning_rate * slope

   return parameters
