{"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/learn-to-unlearn-for-deep-neural-networks","title":"Learn to Unlearn for Deep Neural Networks: Minimizing Unlearning Interference with Gradient Projection","arxiv_id":"2312.04095","date":"2023-12-07","proceeding":null,"authors":["Tuan Hoang","Santu Rana","Sunil Gupta","Svetha Venkatesh"],"abstract":"Recent data-privacy laws have sparked interest in machine unlearning, which involves removing the effect of specific training samples from a learnt model as if they were never present in the original training dataset. The challenge of machine unlearning is to discard information about the ``forget'' data in the learnt model without altering the knowledge about the remaining dataset and to do so more efficiently than the naive retraining approach. To achieve this, we adopt a projected-gradient based learning method, named as Projected-Gradient Unlearning (PGU), in which the model takes steps in the orthogonal direction to the gradient subspaces deemed unimportant for the retaining dataset, so as to its knowledge is preserved. By utilizing Stochastic Gradient Descent (SGD) to update the model weights, our method can efficiently scale to any model and dataset size. We provide empirically evidence to demonstrate that our unlearning method can produce models that behave similar to models retrained from scratch across various metrics even when the training dataset is no longer accessible. Our code is available at https://github.com/hnanhtuan/projected_gradient_unlearning.","url_abs":"https://arxiv.org/abs/2312.04095v1","url_pdf":"https://arxiv.org/pdf/2312.04095v1.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":"learn-to-unlearn-for-deep-neural-networks","repo_url":"https://github.com/hnanhtuan/projected_gradient_unlearning","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"machine-unlearning","task_name":"Machine Unlearning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2312.04095","atlas_url":"https://app.syntology.ai/?focus=2312.04095","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.04095"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hnanhtuan/projected_gradient_unlearning","reach":{"status":"ok"}}],"summary":{"ran":2,"unverified":1},"by_repo_kind":{"official":{"samples":3,"ran":2,"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":3,"samples":[{"code_sha256_prefix":"e93611cdc6dca38f","entry":"to_float","repo":"hnanhtuan/projected_gradient_unlearning","repo_kind":"official","path":"utils/general_utils.py","file_url":"https://github.com/hnanhtuan/projected_gradient_unlearning/blob/HEAD/utils/general_utils.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":"e93611cdc6dca38f"}},{"code_sha256_prefix":"0d5e6a542a6efb82","entry":"to_numberic","repo":"hnanhtuan/projected_gradient_unlearning","repo_kind":"official","path":"utils/general_utils.py","file_url":"https://github.com/hnanhtuan/projected_gradient_unlearning/blob/HEAD/utils/general_utils.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":"0d5e6a542a6efb82"}},{"code_sha256_prefix":"913d82af53065418","entry":"accuracy","repo":"hnanhtuan/projected_gradient_unlearning","repo_kind":"official","path":"utils/general_utils.py","file_url":"https://github.com/hnanhtuan/projected_gradient_unlearning/blob/HEAD/utils/general_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"913d82af53065418"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}