{"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/rewind-to-delete-certified-machine-unlearning","title":"Rewind-to-Delete: Certified Machine Unlearning for Nonconvex Functions","arxiv_id":"2409.09778","date":"2024-09-15","proceeding":null,"authors":["Siqiao Mu","Diego Klabjan"],"abstract":"Machine unlearning algorithms aim to efficiently remove data from a model without retraining it from scratch, in order to remove corrupted or outdated data or respect a user's ``right to be forgotten.\" Certified machine unlearning is a strong theoretical guarantee based on differential privacy that quantifies the extent to which an algorithm erases data from the model weights. In contrast to existing works in certified unlearning for convex or strongly convex loss functions, or nonconvex objectives with limiting assumptions, we propose the first, first-order, black-box (i.e., can be applied to models pretrained with vanilla gradient descent) algorithm for unlearning on general nonconvex loss functions, which unlearns by ``rewinding\" to an earlier step during the learning process before performing gradient descent on the loss function of the retained data points. We prove $(\\epsilon, \\delta)$ certified unlearning and performance guarantees that establish the privacy-utility-complexity tradeoff of our algorithm, and we prove generalization guarantees for nonconvex functions that satisfy the Polyak-Lojasiewicz inequality. Finally, we implement our algorithm under a new experimental framework that more accurately reflects real-world use cases for preserving user privacy.","url_abs":"https://arxiv.org/abs/2409.09778v2","url_pdf":"https://arxiv.org/pdf/2409.09778v2.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":"rewind-to-delete-certified-machine-unlearning","repo_url":"https://github.com/anonymous-1234567/r2d","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"gone","observed_at":"2026-09-17","how":"tree_404+repo_404"}}],"tasks":[{"task_slug":"machine-unlearning","task_name":"Machine Unlearning"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2409.09778","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.09778"}},"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/siqiaomu/r2d","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/pterhoer/MAAD-Face","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/zhangbinchi/certified-deep-unlearning","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/anonymous-1234567/r2d","reach":{"status":"gone","observed_at":"2026-09-17","how":"tree_404+repo_404"}}],"summary":{"ran_honours":2,"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"found_in_text":{"samples":4,"ran":3,"repositories":2}},"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":1,"samples":[{"code_sha256_prefix":"6c94779e31eb4e12","entry":"compute_test_error","repo":"siqiaomu/r2d","repo_kind":"found_in_text","path":"r2d.py","file_url":"https://github.com/siqiaomu/r2d/blob/HEAD/r2d.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6c94779e31eb4e12"}},{"code_sha256_prefix":"de35b5dbce9d27e9","entry":"get_error","repo":"siqiaomu/r2d","repo_kind":"found_in_text","path":"r2d.py","file_url":"https://github.com/siqiaomu/r2d/blob/HEAD/r2d.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"de35b5dbce9d27e9"}},{"code_sha256_prefix":"8b0a5db3b9d9ea07","entry":"h_function","repo":"siqiaomu/r2d","repo_kind":"found_in_text","path":"r2d.py","file_url":"https://github.com/siqiaomu/r2d/blob/HEAD/r2d.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8b0a5db3b9d9ea07"}},{"code_sha256_prefix":"e261328dc1f89c4a","entry":"hvp","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"e261328dc1f89c4a"}},{"code_sha256_prefix":"1acec0665cb7fb8e","entry":"newton_update","repo":"zhangbinchi/certified-deep-unlearning","repo_kind":"found_in_text","path":"unlearn.py","file_url":"https://github.com/zhangbinchi/certified-deep-unlearning/blob/HEAD/unlearn.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":"1acec0665cb7fb8e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}