返回列表

5th place solution

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

开始: 2023-09-11 结束: 2023-11-29 AI安全与对抗 数据算法赛

第5名解决方案

作者:toshi_k, marvelworld

发布时间:2023-11-30

首先,感谢主办方举办这场引人入胜的研究竞赛!同时,也感谢大家在讨论中分享了许多重要的见解。

我们已发布我们的notebook,描述如下:
Notebook : https://www.kaggle.com/code/marvelworld/toshi-k-rotate-and-marvel-pseudo-blend48-52
(用于添加数据集和调试的代码不会影响提交结果)

1. 概述

我们的解决方案是两种方法的集成:(1)从转置权重重新训练和(2)使用伪标签进行微调。

  • (1)涉及使用原始模型的修改版本重新训练模型。在此修改中,所有Conv2D层的权重都被转置。此过程有助于遗忘forget-set中的样本,从而能够重用原始模型中的有价值特征。
  • (2)使用伪标签重现重新训练模型的行为。我们估计重新训练模型在forget数据上的错误,并将其用作微调预训练模型的伪标签。

每次对一个模型执行取消学习时,都会执行其中一种方法。

2. 从转置权重重新训练(作者:@toshik

在取消学习过程开始时,所有Conv2D层的权重都会在垂直和水平方向上进行转置。此操作有助于遗忘forget-set。修改过程简单如下:

def rotate_weight(local_model):
    print('rotate weight')
    for module in local_model.modules():
        if isinstance(module, torch.nn.modules.conv.Conv2d):
            module.weight = torch.nn.Parameter(module.weight.swapaxes(2, 3))

然后,模型使用retain集进行3个epoch的训练。这被认为等价于将翻转的图像输入到原始模型并执行微调。与从头开始重新训练相比,转置后的权重仍然保留了原始模型中的有价值特征。这使得能够重用这些信息,从而在微调期间实现更快、更稳定的收敛。

3. 使用伪标签进行微调(作者:@marvelworld

第一步是使用预训练模型对遗忘数据进行推断。接下来,再次对示例笔记本中所示的简单遗忘处理后的遗忘数据进行推断。比较两次推断的结果,并识别推断结果朝错误方向移动的数据。
我们还基于重新训练的数据开发了一个简单的原始模型,用于推断遗忘数据。这一结果同样能够识别出模型容易以一定置信度错误分类的数据。
最后,使用识别出的数据和错误推断作为伪标签,对预训练模型进行微调。

4. 集成

我们的解决方案混合了两种类型的模型。我们尝试了不同的组合方式,最终得分如下:

从转置权重重新训练 使用伪标签微调 Private LB
246 个模型 266 个模型 0.0785184178
266 个模型 246 个模型 0.0756313425

5. 我们尝试过但未成功的方法

尽管Relax损失和SCRUB在该领域似乎是先进的方法,但它们意外地表现不佳。
遗忘指标非常严格,针对成员推理攻击(MIA)的防御措施不足以获得良好得分。

6. 最终说明

我们的解决方案基于两种不同的方法,有助于提高我们在私有排行榜中的稳定性。然而,在将其应用于实际问题时存在某些限制,特别是在手动调整某些参数方面。

我们希望我们的解决方案能成为未来研究的宝贵参考。
感谢您阅读到最后!

同比赛其他方案