{"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/differentially-private-decentralized-learning-1","title":"Differentially Private Decentralized Learning with Random Walks","arxiv_id":"2402.07471","date":"2024-02-12","proceeding":null,"authors":["Edwige Cyffers","Aurélien Bellet","Jalaj Upadhyay"],"abstract":"The popularity of federated learning comes from the possibility of better scalability and the ability for participants to keep control of their data, improving data security and sovereignty. Unfortunately, sharing model updates also creates a new privacy attack surface. In this work, we characterize the privacy guarantees of decentralized learning with random walk algorithms, where a model is updated by traveling from one node to another along the edges of a communication graph. Using a recent variant of differential privacy tailored to the study of decentralized algorithms, namely Pairwise Network Differential Privacy, we derive closed-form expressions for the privacy loss between each pair of nodes where the impact of the communication topology is captured by graph theoretic quantities. Our results further reveal that random walk algorithms tends to yield better privacy guarantees than gossip algorithms for nodes close from each other. We supplement our theoretical results with empirical evaluation on synthetic and real-world graphs and datasets.","url_abs":"https://arxiv.org/abs/2402.07471v2","url_pdf":"https://arxiv.org/pdf/2402.07471v2.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":"differentially-private-decentralized-learning-1","repo_url":"https://github.com/totilas/dprandomwalk","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"federated-learning","task_name":"Federated Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2402.07471","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.07471"}},"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/totilas/DPrandomwalk","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/totilas/dprandomwalk","reach":{"status":"ok"}}],"summary":{"ran":14,"ran_honours":1,"unverified":3},"by_repo_kind":{"official":{"samples":18,"ran":15,"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":18,"samples":[{"code_sha256_prefix":"1889f18a9aa92268","entry":"compute_max_n_degree","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graphutils.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graphutils.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":"1889f18a9aa92268"}},{"code_sha256_prefix":"877e08f3ea40da51","entry":"compute_quantile","repo":"totilas/dprandomwalk","repo_kind":"official","path":"myrandomness.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/myrandomness.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":"877e08f3ea40da51"}},{"code_sha256_prefix":"bb77968be9d785a8","entry":"contrib","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graphutils.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graphutils.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":"bb77968be9d785a8"}},{"code_sha256_prefix":"446a06b8a48cba13","entry":"dpsgd","repo":"totilas/dprandomwalk","repo_kind":"official","path":"houses/findSigma.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/houses/findSigma.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":"446a06b8a48cba13"}},{"code_sha256_prefix":"7a79a9e13d58015d","entry":"eps_delta_to_zcdp","repo":"totilas/dprandomwalk","repo_kind":"official","path":"conversion.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/conversion.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":"7a79a9e13d58015d"}},{"code_sha256_prefix":"f4edfb9b2dcf5bc8","entry":"gamma_tcheb","repo":"totilas/dprandomwalk","repo_kind":"official","path":"muffliato.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/muffliato.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":"f4edfb9b2dcf5bc8"}},{"code_sha256_prefix":"78ed5dff597acea3","entry":"gossip_matrix","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graph.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graph.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":"78ed5dff597acea3"}},{"code_sha256_prefix":"56a5671b86df90f1","entry":"gossip_matrix","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graphutils.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graphutils.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":"56a5671b86df90f1"}},{"code_sha256_prefix":"6bf981a28199bc2a","entry":"loc","repo":"totilas/dprandomwalk","repo_kind":"official","path":"houses/findSigma.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/houses/findSigma.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":"6bf981a28199bc2a"}},{"code_sha256_prefix":"c640f1a8496ab025","entry":"logW","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graph.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graph.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":"c640f1a8496ab025"}},{"code_sha256_prefix":"cf0ed98cbd05ed91","entry":"net","repo":"totilas/dprandomwalk","repo_kind":"official","path":"houses/findSigma.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/houses/findSigma.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":"cf0ed98cbd05ed91"}},{"code_sha256_prefix":"6ab0d8d60e21518c","entry":"renyi_to_eps_delta","repo":"totilas/dprandomwalk","repo_kind":"official","path":"conversion.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/conversion.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":"6ab0d8d60e21518c"}},{"code_sha256_prefix":"1a7957bfe354b5fc","entry":"shuffle_node_values","repo":"totilas/dprandomwalk","repo_kind":"official","path":"myrandomness.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/myrandomness.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":"1a7957bfe354b5fc"}},{"code_sha256_prefix":"1ab596210bccb3f5","entry":"to_interval","repo":"totilas/DPrandomwalk","repo_kind":"official","path":"synthemuffcomparison.py","file_url":"https://github.com/totilas/DPrandomwalk/blob/HEAD/synthemuffcomparison.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ab596210bccb3f5"}},{"code_sha256_prefix":"a959124181d414cd","entry":"zcdp_to_eps_delta","repo":"totilas/dprandomwalk","repo_kind":"official","path":"conversion.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/conversion.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":"a959124181d414cd"}},{"code_sha256_prefix":"8dded50c25f4576e","entry":"load","repo":"totilas/dprandomwalk","repo_kind":"official","path":"houses/data.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/houses/data.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":"8dded50c25f4576e"}},{"code_sha256_prefix":"0dcacde18df739f4","entry":"summarize_vectors","repo":"totilas/DPrandomwalk","repo_kind":"official","path":"synthemuffcomparison.py","file_url":"https://github.com/totilas/DPrandomwalk/blob/HEAD/synthemuffcomparison.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":"0dcacde18df739f4"}},{"code_sha256_prefix":"de9f1d26c952c5dd","entry":"vplambda","repo":"totilas/dprandomwalk","repo_kind":"official","path":"graph.py","file_url":"https://github.com/totilas/dprandomwalk/blob/HEAD/graph.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":"de9f1d26c952c5dd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}