{"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/delta-influence-unlearning-poisons-via","title":"Delta-Influence: Unlearning Poisons via Influence Functions","arxiv_id":"2411.13731","date":"2024-11-20","proceeding":null,"authors":["Wenjie Li","Jiawei Li","Christian Schroeder de Witt","Ameya Prabhu","Amartya Sanyal"],"abstract":"Addressing data integrity challenges, such as unlearning the effects of data poisoning after model training, is necessary for the reliable deployment of machine learning models. State-of-the-art influence functions, such as EK-FAC, often fail to accurately attribute abnormal model behavior to the specific poisoned training data responsible for the data poisoning attack. In addition, traditional unlearning algorithms often struggle to effectively remove the influence of poisoned samples, particularly when only a few affected examples can be identified. To address these challenge, we introduce $\\Delta$-Influence, a novel approach that leverages influence functions to trace abnormal model behavior back to the responsible poisoned training data using as little as just one poisoned test example. $\\Delta$-Influence applies data transformations that sever the link between poisoned training data and compromised test points without significantly affecting clean data. This allows $\\Delta$-Influence to detect large negative shifts in influence scores following data transformations, a phenomenon we term as influence collapse, thereby accurately identifying poisoned training data. Unlearning this subset, e.g. through retraining, effectively eliminates the data poisoning. We validate our method across three vision-based poisoning attacks and three datasets, benchmarking against four detection algorithms and five unlearning strategies. We show that $\\Delta$-Influence consistently achieves the best unlearning across all settings, showing the promise of influence functions for corrective unlearning. Our code is publicly available at: \\url{https://github.com/andyisokay/delta-influence}","url_abs":"https://arxiv.org/abs/2411.13731v1","url_pdf":"https://arxiv.org/pdf/2411.13731v1.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":"delta-influence-unlearning-poisons-via","repo_url":"https://github.com/andyisokay/delta-influence","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"benchmarking","task_name":"Benchmarking"},{"task_slug":"data-poisoning","task_name":"Data Poisoning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.13731","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.13731"}},"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/Ruby-a07/delta-influence","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/andyisokay/delta-influence","reach":null}],"summary":{"ran_fixture":1,"unverified":11},"by_repo_kind":{"official":{"samples":1,"ran":0,"repositories":1},"found_in_text":{"samples":11,"ran":1,"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":"6a5967011bf8de7a","entry":"cw_loss","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/utils.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/utils.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6a5967011bf8de7a"}},{"code_sha256_prefix":"319676f714a216a9","entry":"_Witch","repo":"andyisokay/delta-influence","repo_kind":"official","path":"forest/witchcoven/witch_base.py","file_url":"https://github.com/andyisokay/delta-influence/blob/HEAD/forest/witchcoven/witch_base.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"319676f714a216a9"}},{"code_sha256_prefix":"ff0cc040d88bde88","entry":"average_dicts","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/utils.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ff0cc040d88bde88"}},{"code_sha256_prefix":"ccb5c504f069d7e6","entry":"check_targets","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/training.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/training.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ccb5c504f069d7e6"}},{"code_sha256_prefix":"d2f5607b54df5b75","entry":"convnet","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/models.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d2f5607b54df5b75"}},{"code_sha256_prefix":"d180290beeedbcd1","entry":"get_model","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/models.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d180290beeedbcd1"}},{"code_sha256_prefix":"235c22042629630e","entry":"get_optimizers","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/training.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/training.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"235c22042629630e"}},{"code_sha256_prefix":"0fd172b3dd145268","entry":"linear_model","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/models.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0fd172b3dd145268"}},{"code_sha256_prefix":"22091a07a2d0facf","entry":"pgd_step","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/utils.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"22091a07a2d0facf"}},{"code_sha256_prefix":"b2c584d7212d6446","entry":"run_validation","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/training.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/training.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b2c584d7212d6446"}},{"code_sha256_prefix":"120427a416e5f3a1","entry":"system_startup","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/utils.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"120427a416e5f3a1"}},{"code_sha256_prefix":"e6a7a6941d029556","entry":"training_strategy","repo":"Ruby-a07/delta-influence","repo_kind":"found_in_text","path":"forest/victims/optimization_strategy.py","file_url":"https://github.com/Ruby-a07/delta-influence/blob/HEAD/forest/victims/optimization_strategy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6a7a6941d029556"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}