{"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-2603-24209","title":"HEART-PFL: Stable Personalized Federated Learning under Heterogeneity with Hierarchical Directional Alignment and Adversarial Knowledge Transfer","arxiv_id":"2603.24209","date":"2026-03-25","proceeding":null,"authors":["Minjun Kim","Minje Kim"],"abstract":"Personalized Federated Learning (PFL) aims to deliver effective client-specific models under heterogeneous distributions, yet existing methods suffer from shallow prototype alignment and brittle server-side distillation. We propose HEART-PFL, a dual-sided framework that (i) performs depth-aware Hierarchical Directional Alignment (HDA) using cosine similarity in the early stage and MSE matching in the deep stage to preserve client specificity, and (ii) stabilizes global updates through Adversarial Knowledge Transfer (AKT) with symmetric KL distillation on clean and adversarial proxy data. Using lightweight adapters with only 1.46M trainable parameters, HEART-PFL achieves state-of-the-art personalized accuracy on CIFAR-100, Flowers-102, and Caltech-101 (63.42%, 84.23%, and 95.67%, respectively) under Dirichlet non-IID partitions, and remains robust to out-of-domain proxy data. Ablation studies further confirm that HDA and AKT provide complementary gains in alignment, robustness, and optimization stability, offering insights into how the two components mutually reinforce effective personalization. Overall, these results demonstrate that HEART-PFL simultaneously enhances personalization and global stability, highlighting its potential as a strong and scalable solution for PFL(code available at https://github.com/danny0628/HEART-PFL).","url_abs":"https://arxiv.org/abs/2603.24209","url_pdf":"https://arxiv.org/pdf/2603.24209","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":{"syntology_url":"https://syntology.ai/paper/2603.24209","atlas_url":"https://app.syntology.ai/?focus=2603.24209","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2603.24209"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/danny0628/HEART-PFL","reach":null}],"summary":{"ran":9,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":13,"ran":10,"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":"0aaece534c92f75d","entry":"FedAveraging","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/averaging.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/averaging.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0aaece534c92f75d"}},{"code_sha256_prefix":"f6a6a32c98350e2b","entry":"adaad_inner_loss","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/AT_helper.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/AT_helper.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f6a6a32c98350e2b"}},{"code_sha256_prefix":"3975b1aa54ba551d","entry":"computeAUROC","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/distillation.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/distillation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3975b1aa54ba551d"}},{"code_sha256_prefix":"2a80220dabcb742a","entry":"conv1x1","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"models/resnet_bn_utils.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/models/resnet_bn_utils.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2a80220dabcb742a"}},{"code_sha256_prefix":"54ef4a4d895678ee","entry":"conv3x3","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"models/resnet_bn_utils.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/models/resnet_bn_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"54ef4a4d895678ee"}},{"code_sha256_prefix":"b91186f3582c95f3","entry":"create_batch_norm","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"models/resnet_bn_utils.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/models/resnet_bn_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b91186f3582c95f3"}},{"code_sha256_prefix":"5405f5e2e7253079","entry":"divergence","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/distillation.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/distillation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5405f5e2e7253079"}},{"code_sha256_prefix":"ae97cecf56042ffb","entry":"flower102_noniid","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"datasets/prepare_data.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/datasets/prepare_data.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ae97cecf56042ffb"}},{"code_sha256_prefix":"67a43807986ec3bc","entry":"mtad_inner_loss","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/AT_helper.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/AT_helper.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"67a43807986ec3bc"}},{"code_sha256_prefix":"6742d7a324b62056","entry":"test","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/distillation.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/distillation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6742d7a324b62056"}},{"code_sha256_prefix":"750f12ea8853901e","entry":"Madry_PGD","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"aggregation/AT_helper.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/aggregation/AT_helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"750f12ea8853901e"}},{"code_sha256_prefix":"51c693c3a5f724fe","entry":"cifar_noniid","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"datasets/prepare_data.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/datasets/prepare_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"51c693c3a5f724fe"}},{"code_sha256_prefix":"6fcb5d0981f1717c","entry":"get_dataset","repo":"danny0628/HEART-PFL","repo_kind":"found_in_text","path":"datasets/prepare_data.py","file_url":"https://github.com/danny0628/HEART-PFL/blob/HEAD/datasets/prepare_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6fcb5d0981f1717c"}}]},"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}