{"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/state-space-expectation-propagation-efficient","title":"State Space Expectation Propagation: Efficient Inference Schemes for Temporal Gaussian Processes","arxiv_id":"2007.05994","date":"2020-07-12","proceeding":"ICML 2020 1","authors":["William J. Wilkinson","Paul E. Chang","Michael Riis Andersen","Arno Solin"],"abstract":"We formulate approximate Bayesian inference in non-conjugate temporal and spatio-temporal Gaussian process models as a simple parameter update rule applied during Kalman smoothing. This viewpoint encompasses most inference schemes, including expectation propagation (EP), the classical (Extended, Unscented, etc.) Kalman smoothers, and variational inference. We provide a unifying perspective on these algorithms, showing how replacing the power EP moment matching step with linearisation recovers the classical smoothers. EP provides some benefits over the traditional methods via introduction of the so-called cavity distribution, and we combine these benefits with the computational efficiency of linearisation, providing extensive empirical analysis demonstrating the efficacy of various algorithms under this unifying framework. We provide a fast implementation of all methods in JAX.","url_abs":"https://arxiv.org/abs/2007.05994v1","url_pdf":"https://arxiv.org/pdf/2007.05994v1.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":"state-space-expectation-propagation-efficient","repo_url":"https://github.com/AaltoML/kalman-jax","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"bayesian-inference","task_name":"Bayesian Inference"},{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"},{"task_slug":"gaussian-processes","task_name":"Gaussian Processes"},{"task_slug":"variational-inference","task_name":"Variational Inference"}],"methods":[{"method_slug":"gaussian-process","method_name":"Gaussian Process"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.05994","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.05994"}},"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":"deterministic:regex_extraction","url":"https://github.com/AaltoML/kalman-jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"ran":0,"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":0,"samples":[{"code_sha256_prefix":"a2ea6b5d4192f156","entry":"ensure_positive_precision","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/utils.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/utils.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":"a2ea6b5d4192f156"}},{"code_sha256_prefix":"b66ab02ba6b80cfa","entry":"inv","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/utils.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/utils.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":"b66ab02ba6b80cfa"}},{"code_sha256_prefix":"f541ffe2aaec2ad5","entry":"kalman_filter","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/kf_no_jit.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/kf_no_jit.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":"f541ffe2aaec2ad5"}},{"code_sha256_prefix":"18319919ff2979c6","entry":"log_npdf","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/likelihoods.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/likelihoods.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":"18319919ff2979c6"}},{"code_sha256_prefix":"a11de5c5e5e3520f","entry":"mog","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/mog.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/mog.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":"a11de5c5e5e3520f"}},{"code_sha256_prefix":"886f48cb1a566d98","entry":"npdf","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/likelihoods.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/likelihoods.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":"886f48cb1a566d98"}},{"code_sha256_prefix":"ef0f92280a28ff98","entry":"npdf","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/mog.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/mog.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":"ef0f92280a28ff98"}},{"code_sha256_prefix":"5a692ba4fe8d9aab","entry":"rauch_tung_striebel_smoother","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/kf_no_jit.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/kf_no_jit.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":"5a692ba4fe8d9aab"}},{"code_sha256_prefix":"89e6795a9c2df510","entry":"solve","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/utils.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/utils.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":"89e6795a9c2df510"}},{"code_sha256_prefix":"917320e7cf79cb5c","entry":"threshold_func","repo":"AaltoML/kalman-jax","repo_kind":"official","path":"kalmanjax/archive/likelihoods.py","file_url":"https://github.com/AaltoML/kalman-jax/blob/HEAD/kalmanjax/archive/likelihoods.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":"917320e7cf79cb5c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}