Skip to content

hennequin-lab/SOFO

Repository files navigation

SOFO:Second-order forward-mode optimization of recurrent neural networks for neuroscience

Abstract

Training recurrent neural networks (RNNs) to perform neuroscience tasks can be challenging. Unlike in machine learning where any architectural modification of an RNN (e.g.\ GRU or LSTM) is acceptable if it facilitates training, the RNN models trained as models of brain dynamics are subject to plausibility constraints that fundamentally exclude the usual machine learning hacks. The “vanilla” RNNs commonly used in computational neuroscience find themselves plagued by ill-conditioned loss surfaces that complicate training and significantly hinder our capacity to investigate the brain dynamics underlying complex tasks. Moreover, some tasks may require very long time horizons which backpropagation cannot handle given typical GPU memory limits. Here, we develop SOFO, a second-order optimizer that efficiently navigates loss surfaces whilst not requiring backpropagation. By relying instead on easily parallelized batched forward-mode differentiation, SOFO enjoys constant memory cost in time. Moreover, unlike most second-order optimizers which involve inherently sequential operations, SOFO's effective use of GPU parallelism yields a per-iteration wallclock time essentially on par with first-order gradient-based optimizers. We show vastly superior performance compared to Adam on a number of RNN tasks, including a difficult double-reaching motor task and the learning of an adaptive Kalman filter algorithm trained over a long horizon.

Presentation

Checkout our poster and video presentation at Neurips 2024!

Python Releases

OCaml Releases

Installation steps

To run examples

  • install owl and owl_ode (run opam install owl owl-ode); you will need to have OpenBLAS installed (see below in case issues with OpenBLAS arise).
  • compile the example by running e.g. dune build examples/example.exe. If linking issues arise, please get in touch.
  • run dune exec _build/default/examples/example.exe -d [results_directory] (where [results_directory] is where you want your results to be saved). Depending on the example file you are trying to execute, there might be additional command line arguments.

OpenBLAS installation

  • on certain operating systems linking errors to OpenBLAS can arise when installing owl. One solution to circumvent them is to install OpenBLAS from source (https://github.com/xianyi/OpenBLAS.git), and to then manually include the path to the OpenBLAS installation in LD_LIBRARY_PATH and PKG_CONFIG_PATH.

Citation

@inproceedings{yu2024sofo,
 author={Yu, Youjing and Xia, Rui and Ma, Qingxi and Lengyel, M{\'a}t{\'e} and Hennequin, Guillaume},
 booktitle = {Advances in Neural Information Processing Systems},
 title={Second-order forward-mode optimization of recurrent neural networks for neuroscience},
 url={https://github.com/hennequin-lab/SOFO},
 volume = {37},
 year = {2024}
}

About

Second-order forward-mode optimization (SOFO)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors