Page 234 - 《软件学报》2025年第4期
P. 234

1640                                                       软件学报  2025  年第  36  卷第  4  期


                 务  [23] . 机器遗忘与持续学习的主要区别如下: (1) 两者处理对象的粒度不同, 机器遗忘是针对数据样本, 而持续学
                 习是针对学习任务; (2) 机器遗忘旨在让模型忘记特定数据隐含的知识, 而持续学习则旨在让模型记住先前数据
                 的知识. 由于持续学习的目标是对新知识的吸收和旧知识的保留, 机器遗忘同样可用于改进持续学习算法, 例
                 如, 人们可通过逐步遗忘一些不太重要或已过时的知识, 为模型学习新知识腾出空间, 从而在不断变化的学习任
                 务中保持灵活性和适应性.

                 1.2   主要研究方向
                    目前机器遗忘领域的研究集中在方法上. 根据设计思想和使用技术, 本文将机器遗忘方法分为                             3 类: 基于训练、
                 基于编辑和基于生成的机器遗忘方法. 各类别代表方法见表                   2.

                                                 表 2 机器遗忘主要研究方向

                      研究方向                                         示例
                                                                               [2]
                                                         [9]
                   基于训练的方法         针对朴素贝叶斯的机器遗忘方法 、针对岭回归的机器遗忘方法 、Dare                [24] 、HedgeCut [25] 、 SISA [26]
                                  Class Clown [27] 、针对可变SVM的机器遗忘方法 [28] 、CR [11] 、 K-priors [29] 、Linear Filtration [30] 、针对深度
                   基于编辑的方法                   [31]  [32]
                                  学习的遗忘方法     、ERM
                                       针对岭回归的机器遗忘方法
                   基于生成的方法                 针对逻辑回归的机器遗忘方法       [33] 、针对深度学习的遗忘方法    [31] 、OptLearn [34]

                    基于训练的方法往往涉及模型训练过程, 如利用在原训练集上训练产生的参数和梯度等中间结果来进行遗
                 忘. 这类方法用时较长, 但      M unlear 性能更有保证. 基于编辑的方法为了在已有模型的基础上做改动, 如利用牛顿
                                          n
                 法对数据集变动后的模型参数进行近似求解, 得到与重新训练模型接近的模型. 这类方法较为快速, 但                                  M unlearn
                 性能可能不佳. 基于生成的方法是指使用对抗模型等生成                   M unlear 参数. 一种机器遗忘方法并非只使用         1  种思路,
                                                                   n
                 而可以是多种思路的结合, 如         Kim  等人  [31] 就同时使用了基于编辑和基于生成的方法, 后文将分别介绍这两类方
                 法. 目前机器遗忘领域多数文献均为方法上的探索, 此外, 还有如何对机器遗忘进行全面定义                             [35] , 设计刻意让模
                 型重新训练的投毒攻击         [36] , 考虑机器遗忘中“过度遗忘”的潜在危害          [37] 和如何自行生成    D\x   ∗ [38] 等较为分散的
                 研究.
                    在第  2、3、4  节中, 本文将分别对      3  类方法进行介绍. 表    3  是本文用到的符号及其含义.

                                                       表 3 符号表

                                     符号                                 含义
                                      D                               原始数据集
                                      x ∗                             遗忘数据集
                                     D\x ∗                            剩余数据集
                                                              在原始数据集上训练得到的模型
                                      M 0
                                                             在剩余数据集上重新训练得到的模型
                                    M retrain
                                                           在剩余数据集上通过机器遗忘得到的模型
                                    M unlearn

                    本文将   3  类方法中已公开代码的链接整理到表            4  中, 以便后续研究者查阅.


                                                    表 4 主要方法与代码

                        类别                    方法名称                              代码链接
                                                          [2]
                                                                    https://github.com/schelterlabs/projects-amnesia
                                                  [24]
                                              Dare                      https://github.com/jjbrophy47/dare_rf
                                                   [25]
                                             HedgeCut                  https://github.com/schelterlabs/hedgecut
                    基于训练的方法                   SISA [26]           https://github.com/cleverhans-lab/machine-unlearning
                                                   [39]
                                             DeltaGrad                https://github.com/thuwuyinjun/DeltaGrad
                                                     [21]
                                           Unrolling SGD            https://github.com/cleverhans-lab/unrolling-sgd
                                      针对K-means的机器遗忘方法    [40]     https://github.com/tginart/deletion-efficient-K-means
   229   230   231   232   233   234   235   236   237   238   239