{"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/arxiv-2605-02675","title":"Online Generalised Predictive Coding","arxiv_id":"2605.02675","date":"2026-05-04","proceeding":null,"authors":["Mehran H. Z. Bazargani","Szymon Urbas","Adeel Razi","Thomas Brendan Murphy","Karl Friston"],"abstract":"This paper introduces an extension of generalised filtering for online applications. Generalised filtering refers to data assimilation schemes that jointly infer latent states, learn unknown model parameters, and estimate uncertainty in an integrated framework -- e.g., estimate state and observation noise -- at the same time (i.e., triple estimation). This framework appears across disciplines under different names, including variational Kalman-Bucy filtering in engineering, generalised predictive coding in neuroscience, and Dynamic Expectation Maximisation (DEM) in time-series analysis. Here, we specialise DEM for ``online'' data assimilation, through a separation of temporal scales. We describe the variational principles and procedures that allow one to assimilate data in a way that allows for a slow updating of parameters and precisions, which contextualise fast Bayesian belief updating about the dynamic hidden states. Using numerical studies, we demonstrate the validity of online DEM (ODEM) using a non-linear -- and potentially chaotic -- generative model, to show that the ODEM scheme can track the latent states of the generative process, even when its functional form differs fundamentally from the dynamics of the generative model. Framed from a neuro-mimetic predictive coding perspective, ODEM offers a biologically inspired solution to online inference, learning, and uncertainty estimation in dynamic environments.","url_abs":"https://arxiv.org/abs/2605.02675","url_pdf":"https://arxiv.org/pdf/2605.02675","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.02675","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.02675"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/MLDawn/ODEM","reach":null}],"summary":{"ran":8,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":11,"ran":8,"repositories":1}},"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":11,"samples":[{"code_sha256_prefix":"c5957fab575504ef","entry":"antisym_A_from_theta","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/generative_model/dynamics.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/generative_model/dynamics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c5957fab575504ef"}},{"code_sha256_prefix":"fbbb4a51ece42edc","entry":"collect","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/collect_and_sort.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/collect_and_sort.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"fbbb4a51ece42edc"}},{"code_sha256_prefix":"a51f4d96306a48fd","entry":"compute","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/lambda_to_precision.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/lambda_to_precision.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"a51f4d96306a48fd"}},{"code_sha256_prefix":"640bc293d7f4bae2","entry":"convert","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/convert_tensor_lists_to_numpy.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/convert_tensor_lists_to_numpy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"640bc293d7f4bae2"}},{"code_sha256_prefix":"6dfefa15c6b0d157","entry":"convert","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/make_json_safe.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/make_json_safe.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"6dfefa15c6b0d157"}},{"code_sha256_prefix":"e02588d85e3fd46b","entry":"create","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/create_multivariate_gaussian.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/create_multivariate_gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e02588d85e3fd46b"}},{"code_sha256_prefix":"4a8314d2d7a43740","entry":"step","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"algorithms/E_step.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/algorithms/E_step.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"4a8314d2d7a43740"}},{"code_sha256_prefix":"58975bb1377b81a3","entry":"step","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"algorithms/M_step.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/algorithms/M_step.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"58975bb1377b81a3"}},{"code_sha256_prefix":"ad40a1a8b6cbc9ce","entry":"compute","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/compute_Jacobian.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/compute_Jacobian.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ad40a1a8b6cbc9ce"}},{"code_sha256_prefix":"5057aef6f6123f61","entry":"glv","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/generative_model/dynamics.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/generative_model/dynamics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"5057aef6f6123f61"}},{"code_sha256_prefix":"d261852c71d3e0a7","entry":"lorenz","repo":"MLDawn/ODEM","repo_kind":"found_in_text","path":"functions/generative_model/dynamics.py","file_url":"https://github.com/MLDawn/ODEM/blob/HEAD/functions/generative_model/dynamics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"d261852c71d3e0a7"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}