Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,1 \) (the first hidden layer) and update the weights and biases according to the rules
$$ w_{ij}^l\leftarrow = w_{ij}^l- \eta \delta_j^la_i^{l-1}, $$ $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$with \( \eta \) being the learning rate.