What is backpropagation and how is it used in training deep learning models? How does backpropagation compute gradients and update weights in a neural network? What role does the chain rule play in the backpropagation process? How does backpropagation help minimize the loss function during training? What are the advantages and limitations of using backpropagation in deep learning?