take input data run forward propagation compute prediction compare prediction with target compute loss run backpropagation update weights and biases repeat