Bidirectional Reactive Programming for Machine Learning
This work provides a novel programming paradigm for machine learning practitioners, though it appears incremental as it extends existing reactive languages rather than introducing a fundamentally new method.
The authors tackled the problem of modeling machine learning algorithms as reactive programs by introducing a symmetric reactive construct for backward recurrences, demonstrating that key ML techniques like backpropagation and bidirectional RNNs can be naturally captured within this framework.
Reactive languages are dedicated to the programming of systems which interact continuously and concurrently with their environment. Values take the form of unbounded streams modeling the (discrete) passing of time or the sequence of concurrent interactions. While conventional reactivity models recurrences forward in time, we introduce a symmetric reactive construct enabling backward recurrences. Constraints on the latter allow to make the implementation practical. Machine Learning (ML) systems provide numerous motivations for all of this: we demonstrate that reverse-mode automatic differentiation, backpropagation, batch normalization, bidirectional recurrent neural networks, training and reinforcement learning algorithms, are all naturally captured as bidirectional reactive programs.