Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

100% Positive

Analyzed from 183 words in the discussion.

Trending Topics

#mode#matrix#scalar#optimal#multiplication#left#right#here#reverse#backprop

Discussion (4 Comments)Read Original on HackerNews

akssri36 minutes ago
The intuition here is okay - but the math is hand-wavy with imprecise terms like "blow-up" etc.

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.

dkrylovabout 1 hour ago
The real reason is that backprop is basically matrix multiplication and multiplying from left to right is way cheaper from right to left. Since on the left side you will have a scalar loss term and you keep vector - matrix multiplication through the network instead of doing matrix by matrix multiplication from the right side.
kazinator44 minutes ago
It's vaguely analogous to why ray tracing goes backwards.
LoganDarkabout 2 hours ago
So basically it's for the same reason that tup is fast: if the arrows go up, you need far less arrows!