Why Backprop Goes Backward (2018)
Posted by andsoitis 13 hours ago
Comments
Comment by akssri 9 hours ago
The statements however, if taken to mean optimality, are also incorrect. Reverse-mode AD (backprop) is generally quite efficient for scalar outputs (more generally, when n_inputs >> n_outputs), but it's not strictly optimal even for this particular scalar-output case.
Consider for eg. a MLP, with 4-layers with dims (1, N, 1, N, 1) - reverse-mode here does ~3N multiplies, but the optimal is ~2N. The optimal ordering for gradient accumulation is in fact NP-hard on general DAGs, but such 'cross-mode' AD is apparently quite hard to implement and not often seen given the marginal gains.
Griewank-Walther's excellent book is a excellent reference for this and much more,
https://epubs.siam.org/doi/book/10.1137/1.9780898717761
They also had a library called ADOL-C that had mixed-mode.
Comment by omnicognate 6 hours ago
Reverse mode is harder to implement as you need to retain state through the calculation, but it scales differently. Forward mode is O(number of inputs) while reverse is O(number of outputs). Seems obvious that reverse mode is what you want for training a neural network, where you have huge numbers of inputs and usually one output, the loss you're training on.
(And indeed that appears to be what the article is saying, in different language.)
Comment by _0ffh 2 hours ago
Comment by qwlk4 1 hour ago
Comment by dkrylov 10 hours ago
Comment by kazinator 10 hours ago
Comment by LoganDark 11 hours ago