Currently this crate only uses a feed-forward based approach and blocks all cycles from forming, but the original paper allows cycles and even self-referential neurons. This allows the neural network to form its own sense of "memory" without relying on manual input-based implementations, but greatly complexifies the algorithm in doing so.
This feature would likely result in a great increase in agent performance for complex tasks, but will require major refactors. I believe that for this feature, it would be beneficial to split NeuralNetwork into separate structs/modules offering their own implementations in order to reduce bugs/complexity in the refactor and keep one from interfering with optimization attempts in the other. These algorithms are too vastly different to unify into a single definition without introducing significant downsides.
Currently this crate only uses a feed-forward based approach and blocks all cycles from forming, but the original paper allows cycles and even self-referential neurons. This allows the neural network to form its own sense of "memory" without relying on manual input-based implementations, but greatly complexifies the algorithm in doing so.
This feature would likely result in a great increase in agent performance for complex tasks, but will require major refactors. I believe that for this feature, it would be beneficial to split
NeuralNetworkinto separate structs/modules offering their own implementations in order to reduce bugs/complexity in the refactor and keep one from interfering with optimization attempts in the other. These algorithms are too vastly different to unify into a single definition without introducing significant downsides.