It is not trivial on how we should traverse a complicated network that connects the inputs (bottom) to the outputs (top). The network itself can have some recurrent effects, and also the output’s value may depend on many ticks of information traversal.
I’ve boiled it down to a few options for forward propping the network to the output nodes:
- Taint the initial input nodes. After every forward tick, taint untainted nodes if they have touched tainted nodes. Once all output nodes have been ‘touched’ or tainted, stop, and return output values. This has the advantage of speed, but disadvantage of possibly ignoring a large set of the network.
- Do the same as (1) but stop when each and every node of the network has been tainted. This may be a compromise, although it doesn’t guarantee that all of the network is used.
- Start from the output nodes, and work back until we hit all of the leafs (input nodes), and then stop. This is the most ideal way, although a very large tree may be built, and it is not trivial how backprop information is stored.
- Forward tick N times regardless of what happens, where N is a large integer.
Will have to play around with different methods to see which one works best.