{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/neural-optimal-feedback-control-with-local","title":"Neural optimal feedback control with local learning rules","arxiv_id":"2111.06920","date":"2021-11-12","proceeding":"NeurIPS 2021 12","authors":["Johannes Friedrich","Siavash Golkar","Shiva Farashahi","Alexander Genkin","Anirvan M. Sengupta","Dmitri B. Chklovskii"],"abstract":"A major problem in motor control is understanding how the brain plans and executes proper movements in the face of delayed and noisy stimuli. A prominent framework for addressing such control problems is Optimal Feedback Control (OFC). OFC generates control actions that optimize behaviorally relevant criteria by integrating noisy sensory stimuli and the predictions of an internal model using the Kalman filter or its extensions. However, a satisfactory neural model of Kalman filtering and control is lacking because existing proposals have the following limitations: not considering the delay of sensory feedback, training in alternating phases, and requiring knowledge of the noise covariance matrices, as well as that of systems dynamics. Moreover, the majority of these studies considered Kalman filtering in isolation, and not jointly with control. To address these shortcomings, we introduce a novel online algorithm which combines adaptive Kalman filtering with a model free control approach (i.e., policy gradient algorithm). We implement this algorithm in a biologically plausible neural network with local synaptic plasticity rules. This network performs system identification and Kalman filtering, without the need for multiple phases with distinct update rules or the knowledge of the noise covariances. It can perform state estimation with delayed sensory feedback, with the help of an internal model. It learns the control policy without requiring any knowledge of the dynamics, thus avoiding the need for weight transport. In this way, our implementation of OFC solves the credit assignment problem needed to produce the appropriate sensory-motor control in the presence of stimulus delay.","url_abs":"https://arxiv.org/abs/2111.06920v1","url_pdf":"https://arxiv.org/pdf/2111.06920v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"neural-optimal-feedback-control-with-local","repo_url":"https://github.com/golkar/bio-ofc-gym","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":null},{"paper_slug":"neural-optimal-feedback-control-with-local","repo_url":"https://github.com/j-friedrich/neuralofc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":null}],"tasks":[{"task_slug":"state-estimation","task_name":"State Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2111.06920","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2111.06920"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/golkar/bio-ofc-gym","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/j-friedrich/neuralofc","reach":null}],"summary":{"ran":1,"unverified":4},"by_repo_kind":{"official":{"samples":5,"ran":1,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"1b6ad5783288ff6f","entry":"parmap","repo":"j-friedrich/neuralofc","repo_kind":"official","path":"ofc.py","file_url":"https://github.com/j-friedrich/neuralofc/blob/HEAD/ofc.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1b6ad5783288ff6f"}},{"code_sha256_prefix":"115cd180fb704c55","entry":"Riccati","repo":"j-friedrich/neuralofc","repo_kind":"official","path":"ofc.py","file_url":"https://github.com/j-friedrich/neuralofc/blob/HEAD/ofc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"115cd180fb704c55"}},{"code_sha256_prefix":"e46a8452f2a7da7f","entry":"Riccati","repo":"j-friedrich/neuralofc","repo_kind":"official","path":"ofc.py","file_url":"https://github.com/j-friedrich/neuralofc/blob/HEAD/ofc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e46a8452f2a7da7f"}},{"code_sha256_prefix":"7c4de2ef8e6d23c6","entry":"System","repo":"j-friedrich/neuralofc","repo_kind":"official","path":"ofc.py","file_url":"https://github.com/j-friedrich/neuralofc/blob/HEAD/ofc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7c4de2ef8e6d23c6"}},{"code_sha256_prefix":"342326966d83720d","entry":"bio_ofc_train","repo":"golkar/bio-ofc-gym","repo_kind":"official","path":"bio_ofc.py","file_url":"https://github.com/golkar/bio-ofc-gym/blob/HEAD/bio_ofc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"342326966d83720d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}