I was going through the paper "The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction" by google on which suggests best practices for models in production. In a section about privacy controls in the data pipeline it says:

Finally, test that any user-requested data deletion propagates to the data in the ML training pipeline, and to any learned models.

I understand about the data deletion from the data pipeline but is it even possible to "un-learn" a single training example without retraining on the new data? They have mentioned in the paper that the practices are being used in google at some point or other, so there might be an efficient way but I'm unable to get any information on this.

I am looking for any literature on this or any ideas about how one would go on solving this problem.

Edit: On further research, I found this paper which focuses on the specific problem. Though making a lot of assumptions they propose a method for k-means too. Looks like this is an upcoming research area and would require time to develop!


1 Answer 1


is it even possible to "un-learn" a single training example without retraining on the new data?

To the best of my knowledge, the answer is no except in some very special cases.

The most obvious exception that comes to mind is instance-based learning, such as kNN: since the "model" itself consists only of the set of training instances, it's straightforward to remove an instance.

In general, supervised ML relies on generalizing patterns based on the instances from the training set. Any non-trivial model consists of multiple such patterns, with every pattern potentially resulting from a different subset of instances. Even if there was a way to trace which instance participated to which pattern (that would be extremely inefficient), removing any pattern would probably cause the model to fail.

  • $\begingroup$ Any idea on then how the data deletion requests are processed? Or do the companies just delete the data? Also, it's mentioned in the paper that these ideas are drawn from practices at google so I was thinking there might be a way. $\endgroup$
    – bkshi
    Commented Apr 29, 2020 at 3:41
  • $\begingroup$ @bkshi I assume that the idea is to regularly re-train the model: if there's a constant stream of new data and data deletion requests, that's the only way to keep the model up to date as far as I'm aware. I guess that what they mean in the extract is that one must keep track of which model originates from which dataset in some central data management system in order not to omit replacing a model when needed. $\endgroup$
    – Erwan
    Commented Apr 29, 2020 at 15:51
  • $\begingroup$ but regularly re-training the model doesn't sound that effective for larger models. Say, if we have 10k users and only have to delete details of 10 the it's highly infeasible. $\endgroup$
    – bkshi
    Commented Apr 29, 2020 at 17:36
  • $\begingroup$ That's true, but a company like Google (or any company which has to deal with a constant input stream of data) has to retrain their model with the new data regularly anyway. In your example if there are 10k users probably there are a few hundreds new users every month, and if the model depends on the users it needs to be kept up to date and therefore re-trained regularly. If some the old instances are removed at the same time as the new instances are added to the training data, there's no waste of resources since the model would be re-trained anyway. $\endgroup$
    – Erwan
    Commented Apr 29, 2020 at 19:06
  • $\begingroup$ Btw the other reason is that there's no choice: if keeping the users who ask to be removed in the model is illegal and there's no technical way to surgically remove their data from the model, it's safer to re-train the model rather than risk a lawsuit. $\endgroup$
    – Erwan
    Commented Apr 29, 2020 at 19:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.