583. NeurIPS 2023 - Machine Unlearning | neurips-2023-machine-unlearning
首先,我们要感谢组织委员会,这是一次难以置信的经历,我们非常感谢您和您的团队为举办这次活动所付出的所有努力和心血。
在我们的解决方案中,我们提出了一种简单而有效的机器学习遗忘方法,该方法使用选择性模型参数重置、采用知识蒸馏的预热阶段以及最后的微调阶段。具体而言,我们的方法侧重于重置在完整训练集上训练的原始模型的第一层和最后一层。通过重置第一层,我们能够对数据的初始隐藏表示造成干扰,直接导致模型性能下降,从而促进对先前训练数据的遗忘。重置最后一层使模型能够偏离其原始输出模式,允许其逼近新的输出分布,这可以产生与在特定数据子集(即保留集)上训练的模型相似的输出分布。
初始阶段包括重置原始模型的第一层和最后一层。选择这两层是因为第一层显著影响模型的其余层,而最后一层决定了模型的最终输出分布。通过这种重置步骤,我们使模型能够偏离其原始状态。
此外,在CIFAR-10数据集上的本地实验实证观察表明,这两层在完整训练集上训练的模型权重与在较小子集(即保留集)上从头开始训练的模型权重之间表现出主要为负的余弦相似度。
因此,在全局权重参数方面,这意味着两个模型在预测性能方面找到了相似的解决方案,但方向不同(参见CIFAR-10数据集上预训练模型和保留集重训练模型之间的"权重相似性"图)。

此外,我们测量了预训练模型和保留集上从头训练模型之间激活分布的差异。该实验表明,即使在激活方面也明显存在余弦相似性的差异(见下图)。这些观察结果为我们重置原始模型的第一层和最后一层参数奠定了基础。


最后,我们对基线遗忘算法进行了实验,包括简单微调、仅重置最后一层的微调、eu-k和cf-k遗忘[1]、通过在遗忘集上最大化损失进行遗忘[2]、使用不合格教师进行遗忘[3]以及SCRUB[4],后者最小化学生模型与教师在保留集上的发散,并最大化在遗忘集上的发散。在所有上述情况下,与基线微调方法相比,这些方法均未获得显著更高的公开分数。
在重置网络的第一层和最后一层之后,我们使用验证集包含了一个快速预热阶段。该阶段的目标是通过最小化原始预训练模型(教师)和重新初始化模型(学生)输出之间的Kullback-Leibler(KL)散度,为学生模型进入第三阶段做准备。
最后阶段包括在保留集上微调学生模型。在此阶段,我们结合了三种类型的损失:标准交叉熵损失、软交叉熵损失和KL散度。交叉熵损失确保模型使用保留集的硬标签在完成基础任务上的准确性。软交叉熵损失涉及将学生模型的软化预测与教师模型的软标签进行比较。结合软交叉熵的KL散度损失有助于快速知识迁移和更广泛的信息捕获。此外,还集成了余弦退火调度器以优化训练动态,促进更快收敛和高效学习。下图展示了所提流程的概览。

如前所述,我们选择了流程的两种变体。第一种使用整个验证集,第二种仅在子集上采用预热阶段,特别是使用前两个类别的样本。这种策略的灵感来源于遗忘集的分布,其仅包含前两个类别(0,1)的样本。
为了提取属于前两个类别的样本,我们使用了以下函数:
def get_val_loader(batch_size):
val_ds = HiddenDataset(split='validation')
samples = []
for sample in val_ds:
y = sample["age_group"]
if int(y) == 0 or int(y) == 1:
samples.append(sample)
val_loader = DataLoader(samples, batch_size=batch_size, shuffle=True)
return val_loader
这两种方法的得分总结如下表:
| 预热方法 | 公开分数 | 私有分数 |
|---|---|---|
| 所有类别 | 0.08383 | 0.07219 |
| 类别 0,1 | 0.08324 | 0.07831 |
值得注意的是,两种方法的公开分数几乎相当。然而,使用验证集中前两个类别进行模型预热的方法在隐藏测试集上表现出改进的性能。
总之,通过这次竞赛,我们对机器学习遗忘有了更好的理解,这既具有启发性又充满挑战。也特别感谢我们团队中非Kaggle参与者Nikos Komodakis的贡献。