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

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


                    本文结合覆盖方法的多样性和论文提供代码的情况, 在基于训练的方法、基于编辑                            (包括输入、参数和输出
                 编辑) 和基于生成的方法中分别选取具有代表性的方法进行实验, 探究以下                       4  个问题.
                    ● RQ1: 遗忘方法性能比较
                    从遗忘速度、可用性和完成度来看, 不同的机器遗忘方法性能如何? 目前缺少统一的实验来对不同机器遗忘
                 方法效果进行比较. 针对这一空缺, 本文选择了              7  种不同类别的机器遗忘方法进行测试, 并从第             5  节提出的速度、
                 可用性和完成度这       3  个角度对这些方法进行评估. 通过实验, 前文对这些方法优缺点的理论分析可以得到验证, 人
                 们在具体场景下选择机器遗忘方法时也参考实验结果.
                    ● RQ2: 标签总数影响分析
                    对单个标签进行遗忘时, 数据集标签总数对机器遗忘方法的效果影响如何? 为了探究该问题, 本实验设置了
                 两种遗忘场景, 一是以样本为单位进行的遗忘, 即样本遗忘; 二是以标签为单位进行的遗忘, 即标签遗忘. 样本遗忘
                 可用样本遗忘率来刻画, 标签遗忘则可用标签遗忘数                  (  x  包含标签数) 和标签遗忘率      x (   ∗   包含标签数与标签总数
                                                            ∗
                 的比值) 来刻画. 标签遗忘场景下, 本文除了在不同标签遗忘数场景下进行实验外, 还针对标签遗忘率进行实验: 固
                 定遗忘标签数, 改变标签总数, 探究不同标签遗忘率对遗忘效果的影响. 直观假设是, 标签总数越大, 则认为机器学
                 习任务难度越大, 相同条件下遗忘复杂度也增大, 从而对遗忘可用性和完成度产生负面影响.
                    ● RQ3: 度量指标关联分析
                    机器遗忘算法不同度量指标之间有什么联系? 目前缺少统一指标来衡量评估学习算法效果, 若能设计一个统
                 一指标, 与目前各种度量指标均有相关性, 则可用该统一指标来对机器遗忘进行评估, 不必计算多个指标. 以此为
                 出发点, 本实验探究不同度量指标的相关性, 如模型遗忘可用性与完成度是否成正相关等, 推动统一指标的构建.
                    ● RQ4: 遗忘适用场景分析
                    机器遗忘方法适用场景是什么? 机器遗忘的目的是以尽可能少的时间获取和重新训练模型尽可能接近的模
                 型, 在这一目的下, 部分场合就不必使用机器遗忘, 例如, 若重新训练模型本身用时很短, 或重新训练模型与原模型
                 本身差别很小, 就不必使用机器遗忘. 本文立足实验结果, 分析机器遗忘模型和重新训练模型在各场景下的性能差
                 异, 就机器遗忘适用场景这一问题进行详细阐述.
                                                                      为
                    实验在   Nvidia A40 GPU  上进行, GPU  显存为 表 9 实验数据集
                                                        48 GB; 所用
                                                                        Intel (R) Xeon (R) Platinum 8268 CPU, 共
                                                                  CPU
                 96 核. 实验在  Ubuntu 18.04 LTS 64 位操作系统上运行, CUDA  版本为  11.4, PyTorch 版本为  1.11.0, Python 版本为  3.7.

                 6.1   实验设置

                 6.1.1    实验数据
                    本文在   MNIST、CIFAR-10、Purchase、ImageNet 子集、FashionMNIST  和  SVHN  这  6  个数据集上进行实验,
                 具体数据集信息如表        9  所示. 其中, ImageNet 子集选取了    ImageNet 前  100  个类. Purchase  数据集来自  Kaggle
                 “Acquire Valued Shoppers”竞赛数据集, 包含了若干用户     1  年内的所有购买记录, 每笔记录包含商品名、连锁店、
                 数量、日期等信息. 本文对        Purchase 数据集的处理方法与文献        [26] 相同: 对于每条购买记录, 选择前        600  个购买
                 量最多的商品作为特征, 根据该条记录的顾客是否购买了该商品来设定特征取值为                            1  或  0, 再采用聚类算法对这
                 些购买记录进行聚类       (聚为  2  类), 把聚类结果作为该条记录标签, 表征一类购买行为.



                                数据集              维度          训练集          测试集          标签数
                               MNIST [76]       28×28        60 000       10 000        10
                              CIFAR-10 [77]    32×32×3       50 000       10 000        10
                               Purchase [78]     600         249 215      62 304         2
                             ImageNet子集 [79]   84×84×3       48 000       11 640        100
                             FashionMNIST [80]  28×28        60 000       10 000        10
                               SVHN [81]       32×32×3       73 257       26 032        10
   241   242   243   244   245   246   247   248   249   250   251