{"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/fedaug-reducing-the-local-learning-bias","title":"FedBR: Improving Federated Learning on Heterogeneous Data via Local Learning Bias Reduction","arxiv_id":"2205.13462","date":"2022-05-26","proceeding":null,"authors":["Yongxin Guo","Xiaoying Tang","Tao Lin"],"abstract":"Federated Learning (FL) is a way for machines to learn from data that is kept locally, in order to protect the privacy of clients. This is typically done using local SGD, which helps to improve communication efficiency. However, such a scheme is currently constrained by slow and unstable convergence due to the variety of data on different clients' devices. In this work, we identify three under-explored phenomena of biased local learning that may explain these challenges caused by local updates in supervised FL. As a remedy, we propose FedBR, a novel unified algorithm that reduces the local learning bias on features and classifiers to tackle these challenges. FedBR has two components. The first component helps to reduce bias in local classifiers by balancing the output of the models. The second component helps to learn local features that are similar to global features, but different from those learned from other data sources. We conducted several experiments to test \\algopt and found that it consistently outperforms other SOTA FL methods. Both of its components also individually show performance gains. Our code is available at https://github.com/lins-lab/fedbr.","url_abs":"https://arxiv.org/abs/2205.13462v4","url_pdf":"https://arxiv.org/pdf/2205.13462v4.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":"fedaug-reducing-the-local-learning-bias","repo_url":"https://github.com/lins-lab/fedbr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"domain-generalization","task_name":"Domain Generalization"},{"task_slug":"federated-learning","task_name":"Federated Learning"}],"methods":[{"method_slug":"local-sgd","method_name":"Local SGD"},{"method_slug":"sgd","method_name":"SGD"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2205.13462","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.13462"}},"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/lins-lab/fedbr","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":4,"ran":5,"unverified":6},"by_repo_kind":{"official":{"samples":15,"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":0,"samples":[{"code_sha256_prefix":"ce7990d7ad5821ff","entry":"Classifier","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/networks.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/networks.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ce7990d7ad5821ff"}},{"code_sha256_prefix":"2aa5d536ff654fac","entry":"conv3x3","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/Resnet.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/Resnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2aa5d536ff654fac"}},{"code_sha256_prefix":"53fac8d8d949e72b","entry":"get_test_records","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/model_selection.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/model_selection.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"53fac8d8d949e72b"}},{"code_sha256_prefix":"71a3a61ceed99bf3","entry":"hashable","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/lib/query.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/lib/query.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"71a3a61ceed99bf3"}},{"code_sha256_prefix":"1fdaff04251a0d51","entry":"l2_between_dicts","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/lib/misc.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/lib/misc.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1fdaff04251a0d51"}},{"code_sha256_prefix":"2f8af5779e1edcb6","entry":"make_selector_fn","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/lib/query.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/lib/query.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2f8af5779e1edcb6"}},{"code_sha256_prefix":"5f576ed342c48a0a","entry":"make_weights_for_balanced_classes","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/lib/misc.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/lib/misc.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5f576ed342c48a0a"}},{"code_sha256_prefix":"d4682009629cffa4","entry":"norm2d","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/Resnet.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/Resnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d4682009629cffa4"}},{"code_sha256_prefix":"196cab71d7129d62","entry":"remove_batch_norm_from_resnet","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/networks.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/networks.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"196cab71d7129d62"}},{"code_sha256_prefix":"78685bc86e6c7ffa","entry":"divide_by_label","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/datasets.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/datasets.py","link_basis":"harvester_set","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":"78685bc86e6c7ffa"}},{"code_sha256_prefix":"b0bc80b1655a6802","entry":"get_algorithm_class","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/algorithms.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/algorithms.py","link_basis":"harvester_set","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":"b0bc80b1655a6802"}},{"code_sha256_prefix":"d0ea85d74c20dea9","entry":"get_dataset_class","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/datasets.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/datasets.py","link_basis":"harvester_set","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":"d0ea85d74c20dea9"}},{"code_sha256_prefix":"73f32252eedba6a4","entry":"num_environments","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/datasets.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/datasets.py","link_basis":"harvester_set","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":"73f32252eedba6a4"}},{"code_sha256_prefix":"af3c9a80c8fd1f7a","entry":"print_row","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/lib/misc.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/lib/misc.py","link_basis":"harvester_set","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":"af3c9a80c8fd1f7a"}},{"code_sha256_prefix":"a3927593c46b402e","entry":"resnet","repo":"lins-lab/fedbr","repo_kind":"official","path":"fedbr/Resnet.py","file_url":"https://github.com/lins-lab/fedbr/blob/HEAD/fedbr/Resnet.py","link_basis":"harvester_set","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":"a3927593c46b402e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}