Page 236 - 《软件学报》2025年第4期
P. 236
1642 软件学报 2025 年第 36 卷第 4 期
2.1.2 岭回归
岭回归是一种有偏估计回归方法. 在岭回归中, 给定训练集 [X,y] , 模型参数 θ, 则有 Xθ = y . 若损失函数为
2 2 ||αIθ|| 为正则项, 则模型参数
2
||Xθ −y|| +||αIθ|| , 其中, I 为单位矩阵, θ 计算方式如下:
T
−1
T
θ = (X X +αI) X y (2)
假设遗忘训练集中第 u 个数据点, 则更新后参数为:
−1
T
T
T
θ u = (X X − X X u +αI) (X y− X u y u ) (3)
u
岭回归对应的机器遗忘方法 [2] 保存了 M 0 训练时的中间结果: X y 和 QR 分解结果 qr(X X +αI) . 若要遗忘训
T
T
练集中某个样本, 则在中间结果上计算 M unlearn .
2.1.3 K-means 聚类
K-means 聚类将数据点划分到各个聚类, 使每个点都属于离它最近的聚类. K-means 聚类具体过程为: 随机选
择 k 个聚类中心 c 1 , ... ,c k 将各数据点分配给距离最小的聚类中心, 再根据聚类中所有数据点的平均值更新聚类中
心 c i , 重复上述步骤, 直到各聚类中心不再改变为止.
D\x 上继续训练, 进行机器遗忘. Unrolling SGD
K-means 聚类对应的机器遗忘方法把聚类中心的计算过程转化为数据的累加 [9] , 当遗忘某个数据点时即从累
′
加的中间结果上删除该数据点对应的数值. 具体做法如下: 为方便表述, 首先引入两个函数 g c i, j (x) 和 g (x) . 对于
c i, j
′
函数 g c i, j (x) , 当数据点 x 和 c i 之间的距离最小时, 函数输出这个最小距离, 否则输出 0; 对于函数 g (x) , 当 x 和 c i
c i, j
/
∑ ∑
之间距离最小时, 函数输出 1, 否则输出 0. 每一轮聚类中心的迭代计算表示为 (x) g (x) . 若要遗忘某个
′
g c i,j
c i,j
x∈X x∈X
数据点 x u , 则从上述累加运算中删去 (x u ) 和 g (x u ) , 再次迭代到聚类中心值收敛.
′
g c i, j
c i, j
Lloyd’s 算法是 K-means 聚类变体, 与 K-means 聚类区别在于: Lloyd’s 算法输入是一组连续区域, 而 K-means
聚类输入是一组离散点. 因此, Lloyd’s 算法在更新聚类中心时, 需计算各聚类质心, 而不是计算均值.
Lloyd’s 聚类算法对应的机器遗忘方法是 Quantized k-means (Q-k-means) [40] . Q-k-means 在运行过程中, 根据训
练时保存的中间结果判断遗忘某个数据点是否会导致质心改变. 若质心发生了改变, 则重新训练, 否则更新中间结
果, 不重新计算质心. 质心计算是一种线性运算, 故在遗忘某个数据点时可以迅速判断质心是否更新.
2.1.4 深度学习
深度学习是以神经网络模型为架构, 对数据集进行表征学习的一类算法, 其过程一般可以概括为: 模型分批次
读取部分训练数据或一次性读入全部训练数据, 首先正向传播模型输出, 模型输出与数据真实标签比较得到误差,
再反向传播两者间的误差, 通过计算误差和参数间的梯度来更新模型参数.
DeltaGrad [39] 是适用于深度学习的继续计算类机器遗忘方法. 在训练 M 0 的过程中, DeltaGrad 保存了每一次训
练的中间结果, 如当前轮次训练所用训练集、超参数、运算产生的梯度和参数等. 为了保障模型可用性, 在机器遗
D\x 上的梯度来更新参数, 其他轮次则利用原始训练过程中的中间结果
∗
忘训练阶段, 小部分轮次精确计算模型在
来近似计算梯度. 近似计算梯度用时较短, 从而减少了总体用时.
对 M 0 调优 (finetune) 也是适用于深度学习的一种机器遗忘方法. 当 x 较小时, D 和 D\x 相差较小, 可使用
∗
∗
[34]
∗ 改进了调优方法, 在继续训练阶段的损失函数上增加了正
M 0 在
则项, 提出了标准差损失 (standard deviation loss), 使遗忘更快速. Ye 等人 [48] 同样改变损失函数以影响模型行为.
他们设计了两种损失函数: 一是让 M unlear 在 x 上的输出接近随机输出, 同时保留部分普遍特征不被移除; 二是让
n
∗
n D\x 上的输出与 M 0 保持一致. 除修改损失函数外, Chen 等人 [49] D\x ∗
∗
M unlear 在 提出一个轻量级机器遗忘框架: 从
中取部分子集训练一个基准模型, 再让 M 0 向基准模型继续训练. 该方法操作难度较小, 易于理解.
2.2 模型分解
模型分解是将原本需要训练完整模型的过程划分为训练若干子模型的过程, 当遗忘请求到来时, 只训练遗忘
数据集所涉及子模型, 不必重新训练完整模型, 从而缩短训练时间. 继续计算的方法并不涉及数据集划分, 而模型
分解则涉及数据集划分.