An efficient method for computing derivatives by propagating changes forward through a computation graph.