{"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/eternal-sunshine-of-the-spotless-net","title":"Eternal Sunshine of the Spotless Net: Selective Forgetting in Deep Networks","arxiv_id":"1911.04933","date":"2019-11-12","proceeding":"CVPR 2020 6","authors":["Aditya Golatkar","Alessandro Achille","Stefano Soatto"],"abstract":"We explore the problem of selectively forgetting a particular subset of the data used for training a deep neural network. While the effects of the data to be forgotten can be hidden from the output of the network, insights may still be gleaned by probing deep into its weights. We propose a method for \"scrubbing'\" the weights clean of information about a particular set of training data. The method does not require retraining from scratch, nor access to the data originally used for training. Instead, the weights are modified so that any probing function of the weights is indistinguishable from the same function applied to the weights of a network trained without the data to be forgotten. This condition is a generalized and weaker form of Differential Privacy. Exploiting ideas related to the stability of stochastic gradient descent, we introduce an upper-bound on the amount of information remaining in the weights, which can be estimated efficiently even for deep neural networks.","url_abs":"https://arxiv.org/abs/1911.04933v5","url_pdf":"https://arxiv.org/pdf/1911.04933v5.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":"eternal-sunshine-of-the-spotless-net","repo_url":"https://github.com/AdityaGolatkar/SelectiveForgetting","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"eternal-sunshine-of-the-spotless-net","repo_url":"https://github.com/zero-or-one/URP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1911.04933","atlas_url":"https://app.syntology.ai/?focus=1911.04933","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1911.04933"}},"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/AdityaGolatkar/SelectiveForgetting","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zero-or-one/URP","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":8,"unverified":9},"by_repo_kind":{"listed":{"samples":17,"ran":8,"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":"dad51ff17c8287b6","entry":"ConvRes","repo":"zero-or-one/URP","repo_kind":"listed","path":"models/models.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/models/models.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dad51ff17c8287b6"}},{"code_sha256_prefix":"5ec3121ecd2eb357","entry":"class_accuracy","repo":"zero-or-one/URP","repo_kind":"listed","path":"learning/learn_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/learning/learn_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5ec3121ecd2eb357"}},{"code_sha256_prefix":"16051d5190516416","entry":"get_param","repo":"zero-or-one/URP","repo_kind":"listed","path":"models/models_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/models/models_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"16051d5190516416"}},{"code_sha256_prefix":"f54dac8b9b05da11","entry":"make_ascent","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f54dac8b9b05da11"}},{"code_sha256_prefix":"74aea471a48d4f2a","entry":"model_learning","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"74aea471a48d4f2a"}},{"code_sha256_prefix":"fe791ae5d228894f","entry":"nip","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fe791ae5d228894f"}},{"code_sha256_prefix":"4079cde5d6b5a1af","entry":"regularization","repo":"zero-or-one/URP","repo_kind":"listed","path":"learning/learn_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/learning/learn_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4079cde5d6b5a1af"}},{"code_sha256_prefix":"09389ab6d25f8096","entry":"set_loss","repo":"zero-or-one/URP","repo_kind":"listed","path":"learning/learn_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/learning/learn_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"09389ab6d25f8096"}},{"code_sha256_prefix":"ee48cdf111bace6c","entry":"encoder_epoch","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget.py","link_basis":"harvester_set","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":"ee48cdf111bace6c"}},{"code_sha256_prefix":"f8191305d90db998","entry":"epoch","repo":"zero-or-one/URP","repo_kind":"listed","path":"learning/learn.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/learning/learn.py","link_basis":"harvester_set","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":"f8191305d90db998"}},{"code_sha256_prefix":"ae937b549e24cb5c","entry":"get_model","repo":"zero-or-one/URP","repo_kind":"listed","path":"models/models_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/models/models_utils.py","link_basis":"harvester_set","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":"ae937b549e24cb5c"}},{"code_sha256_prefix":"fe46ceeb9b10981d","entry":"get_pdf","repo":"zero-or-one/URP","repo_kind":"listed","path":"evaluation/eval_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/evaluation/eval_utils.py","link_basis":"harvester_set","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":"fe46ceeb9b10981d"}},{"code_sha256_prefix":"a286929619f31663","entry":"hiding_helper","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget.py","link_basis":"harvester_set","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":"a286929619f31663"}},{"code_sha256_prefix":"3aec5db3515dd753","entry":"l2_distance","repo":"zero-or-one/URP","repo_kind":"listed","path":"evaluation/eval_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/evaluation/eval_utils.py","link_basis":"harvester_set","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":"3aec5db3515dd753"}},{"code_sha256_prefix":"b7421427efd627f6","entry":"predict","repo":"zero-or-one/URP","repo_kind":"listed","path":"learning/learn.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/learning/learn.py","link_basis":"harvester_set","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":"b7421427efd627f6"}},{"code_sha256_prefix":"931b41018d2420b8","entry":"train_encoder","repo":"zero-or-one/URP","repo_kind":"listed","path":"forgetting/forget.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/forgetting/forget.py","link_basis":"harvester_set","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":"931b41018d2420b8"}},{"code_sha256_prefix":"15d8d3ae82668ed1","entry":"vectorize_params","repo":"zero-or-one/URP","repo_kind":"listed","path":"evaluation/eval_utils.py","file_url":"https://github.com/zero-or-one/URP/blob/HEAD/evaluation/eval_utils.py","link_basis":"harvester_set","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":"15d8d3ae82668ed1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}