{"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/calibrated-one-round-federated-learning-with","title":"Calibrated One Round Federated Learning with Bayesian Inference in the Predictive Space","arxiv_id":"2312.09817","date":"2023-12-15","proceeding":null,"authors":["Mohsin Hasan","Guojun Zhang","Kaiyang Guo","Xi Chen","Pascal Poupart"],"abstract":"Federated Learning (FL) involves training a model over a dataset distributed among clients, with the constraint that each client's dataset is localized and possibly heterogeneous. In FL, small and noisy datasets are common, highlighting the need for well-calibrated models that represent the uncertainty of predictions. The closest FL techniques to achieving such goals are the Bayesian FL methods which collect parameter samples from local posteriors, and aggregate them to approximate the global posterior. To improve scalability for larger models, one common Bayesian approach is to approximate the global predictive posterior by multiplying local predictive posteriors. In this work, we demonstrate that this method gives systematically overconfident predictions, and we remedy this by proposing $\\beta$-Predictive Bayes, a Bayesian FL algorithm that interpolates between a mixture and product of the predictive posteriors, using a tunable parameter $\\beta$. This parameter is tuned to improve the global ensemble's calibration, before it is distilled to a single model. Our method is evaluated on a variety of regression and classification datasets to demonstrate its superiority in calibration to other baselines, even as data heterogeneity increases. Code available at https://github.com/hasanmohsin/betaPredBayesFL","url_abs":"https://arxiv.org/abs/2312.09817v2","url_pdf":"https://arxiv.org/pdf/2312.09817v2.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":"calibrated-one-round-federated-learning-with","repo_url":"https://github.com/hasanmohsin/betapredbayes_fl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"calibrated-one-round-federated-learning-with","repo_url":"https://github.com/hasanmohsin/betapredbayesfl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"bayesian-inference","task_name":"Bayesian Inference"},{"task_slug":"federated-learning","task_name":"Federated Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.09817","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.09817"}},"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/hasanmohsin/betapredbayes_fl","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hasanmohsin/betapredbayesfl","reach":{"status":"ok"}}],"summary":{"ran":9,"unverified":4},"by_repo_kind":{"official":{"samples":13,"ran":9,"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":13,"samples":[{"code_sha256_prefix":"ddb8a3d5503150a5","entry":"classify_acc","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ddb8a3d5503150a5"}},{"code_sha256_prefix":"233ca4bfd5885453","entry":"iid_split","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"233ca4bfd5885453"}},{"code_sha256_prefix":"ca41649dfb8c8a4f","entry":"load_dict","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ca41649dfb8c8a4f"}},{"code_sha256_prefix":"8b473625425f7b25","entry":"majority_vote_class_pred","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"teacher_oneshot_fedkt_exp.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/teacher_oneshot_fedkt_exp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8b473625425f7b25"}},{"code_sha256_prefix":"ac1476c4fff09e61","entry":"regr_acc","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ac1476c4fff09e61"}},{"code_sha256_prefix":"1b5aa0824c6dfef8","entry":"sgd_prox_train_step","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"train_nets.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/train_nets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1b5aa0824c6dfef8"}},{"code_sha256_prefix":"5210fda817038098","entry":"sgd_train_step","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"train_nets.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/train_nets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5210fda817038098"}},{"code_sha256_prefix":"d6f2b312365b7b06","entry":"sort_by_col_value","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d6f2b312365b7b06"}},{"code_sha256_prefix":"36f1b485f7eaf8b9","entry":"test_classify_majority","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"teacher_oneshot_fedkt_exp.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/teacher_oneshot_fedkt_exp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"36f1b485f7eaf8b9"}},{"code_sha256_prefix":"de875c40c3a69d9d","entry":"get_res","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"noniid_plot.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/noniid_plot.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":"de875c40c3a69d9d"}},{"code_sha256_prefix":"061d71155895e2ea","entry":"get_res","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"process_results.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/process_results.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":"061d71155895e2ea"}},{"code_sha256_prefix":"456c3390fb625e86","entry":"get_res","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"process_results_regr.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/process_results_regr.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":"456c3390fb625e86"}},{"code_sha256_prefix":"94973ab1aae04e1b","entry":"sgd_train","repo":"hasanmohsin/betapredbayes_fl","repo_kind":"official","path":"train_nets.py","file_url":"https://github.com/hasanmohsin/betapredbayes_fl/blob/HEAD/train_nets.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":"94973ab1aae04e1b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}