返回列表

5th Place Solution

583. NeurIPS 2023 - Machine Unlearning | neurips-2023-machine-unlearning

开始: 2023-09-11 结束: 2023-11-29 AI安全与对抗 数据算法赛
第五名解决方案 - Sebastian Oleszko

第五名解决方案

作者:Sebastian Oleszko | 发布于:2023年12月3日 | 比赛排名:第4名 | 得票:2

首先,我要感谢主办方举办了这场非常有趣的比赛。我非常喜欢能够熟悉机器学习遗忘(machine unlearning)这一研究课题以及本次比赛。

我的方法非常简单但有效。我尝试对某些非常基本的思想进行微小的逐步改进,并在这里分享给大家。这一策略最终取得了相当不错的成绩,使我在私人排行榜上获得第5名,在公共排行榜上获得第6名。

我解决方案的代码笔记本可以在这里找到:Prune/Re-init & Entropy Regularized Fine-Tuning

概述

我的解决方案主要包括两个贡献:

  1. 通过剪枝和重新初始化引入稀疏性
  2. 使用常规交叉熵损失以及一种熵正则化对模型进行微调

首先,基于非结构化的L1范数标准对模型进行剪枝(剪去99%的参数),然后将这些参数重新初始化为随机权重。这一步的目的很简单:既要遗忘掉来自“遗忘集”的信息,又要向模型添加足够的噪声,使其“移动”到足够远离初始模型的位置,从而能够准确地模仿完全重新训练后的模型分布。随后,在保留集上对模型进行微调,但我们对损失函数进行了修改:

其中 L_FT 是在保留集上进行微调的交叉熵损失,L_RegEntropy 是原始网络(在所有数据上训练)的预测熵与微调后网络预测熵之间的均方误差(MSE)。其思想是,这将作为一种对微调的的正则化,确保熵与我们的起点相似,而该起点也是对重训练模型熵的最佳估计。

通过这两个步骤,我的想法是:模型应满足(1)遗忘掉遗忘集的信息,(2)远离作为全数据模型的微调起点,(3)通过微调恢复高性能,并且训练方式使得最终预测结果与以相似参数原始训练的模型的预测结果相似。

重要思路

参考文献与灵感

在构思我的解决方案的过程中,我找到了两篇文章,它们要么给了我灵感,要么在某种程度上证实了我选择的方法。虽然我没有直接使用其中建议的方法,但这些论文为我提供了对当前最先进(SOTA)方法及其成功原因的宝贵见解。我在这些结果的基础上找到了能够提升比赛成绩的简单步骤。

超参数

在比赛初期尝试不同想法时,我很快发现对我来说最重要的事情就是恰当地调整模型的超参数。虽然我理解在提交结果上进行调参会带来过拟合公共排行榜的风险,但我认为这样做的价值超过了风险。我认为我的提交中有一半以上时间都花在对表现良好的方法的超参数进行小步调优。这常常导致公共排行榜分数一次提升0.005以上,迅速提升了我的排名。我发现在调整学习率和训练轮数方面取得了最大成功,同时也在交叉熵损失项 w^(0.1) 上添加了非常小的类别权重。由于时间限制,我从未在最大可能的训练轮数下获得好的结果,但我相信如果我能为更大的轮数最优地调整其他参数(如调度器、学习率、类别权重等),这将会有所帮助。

我认为超参数在这场比赛中特别重要的原因在于缺乏关于原始模型训练方式的精确信息。由于我相信这些信息是在所提议的评估指标下构建高效遗忘算法所必需的,因此次优的选择就是系统地猜测参数,直到分数提升。我希望未来能有更多关于训练过程的信息,以避免这种猜测工作。

我想尝试的内容

  • 其他剪枝标准,例如移除对预测遗忘集图像具有高重要性但对其他图像不重要的参数
  • 最大化算法运行的时间(更多的训练轮数)
  • 进一步探讨MSE损失是否优于KL散度或交叉熵等其他形式。我曾数次更改此项,但在公共排行榜上未见提升。这个损失项可能是我最终解决方案中最重要的一环。

结论

这场比赛让我从头到尾都在寻找新颖而激动人心的解决方案,但最终我得到了一种非常简单却高效的方法。我尝试了许多其他想法,但我要么没有时间对它们进行恰当的调优,因而无法确定它们是否真的提升了我的遗忘算法,要么它们根本不起作用。不过,我确实相信关键在于以某种方式执行我概述的三个步骤:

  1. 遗忘数据(剪枝)
  2. 使模型随机远离固定的全训练模型(随机重新初始化参数)
  3. 在不过度偏离原始模型的前提下恢复性能(正则化微调)

我期待未来能学习更多关于遗忘的知识,并关注 fellow Kagglers 和研究者们的工作。再次感谢主办方以及每一位分享解决方案和见解的朋友,我非常喜欢阅读你们对这场比赛的 approach!

最终得分

公共排行榜:0.0932121752
私人排行榜:0.0863052371

同比赛其他方案