遗忘学习:数学推导1
今天我们要解剖的经典论文是 “Certified Data Removal from Machine Learning Models” (Guo et al., ICML 2020)。这篇论文是基于 Hessian 的近似遗忘领域的基石,它将 Koh & Liang (2017) 的影响函数(Influence Functions)正式引入了机器遗忘的理论框架中,并给出了严格的 (ϵ,δ)(\epsilon, \delta)(ϵ,δ) 理论保证。
第一步:符号定义与优化目标 (The Setup)
假设我们有一个完整的训练数据集 D={z1,z2,…,zn}D = \{z_1, z_2, \dots, z_n\}D={z1,z2,…,zn},其中 zi=(xi,yi)z_i = (x_i, y_i)zi=(xi,yi) 是单个样本。
我们定义损失函数(包含 L2 正则化项,这对于保证 Hessian 矩阵的正定性和可逆性在理论上至关重要):
L(θ,D)=∑i=1nℓ(zi,θ)+λ2∥θ∥22L(\theta, D) = \sum_{i=1}^n \ell(z_i, \theta) + \frac{\lambda}{2} \|\theta\|_2^2L(θ,D)=i=1∑nℓ(zi,θ)+2λ∥θ∥22
我们假设模型在完整数据集 DDD 上已经训练到了严格的全局最优(这是凸优化背景下的标准假设,我们稍后会讨论它在深度学习中的局限)。此时的最优参数为:
θ∗=argminθL(θ,D)\theta^* = \arg\min_\theta L(\theta, D)θ∗=argθminL(θ,D)
现在,用户发起了“被遗忘权”请求,要求我们删去数据集中的一个样本 zfz_fzf(为了推导清晰,我们先假设只删一个,批量删除是同理的叠加)。
定义保留集为 D−f=D∖{zf}D_{-f} = D \setminus \{z_f\}D−f=D∖{zf}。
如果我们在保留集上从头重训(Retrain from scratch),能得到真正的精确遗忘参数:
θ−f∗=argminθL(θ,D−f)\theta_{-f}^* = \arg\min_\theta L(\theta, D_{-f})θ−f∗=argθminL(θ,D−f)
我们的核心目标是: 在不重新训练的前提下,通过数学手段,直接从 θ∗\theta^*θ∗ 计算出一个更新量 Δθ\Delta \thetaΔθ,使得近似更新后的参数 θu=θ∗+Δθ\theta_u = \theta^* + \Delta \thetaθu=θ∗+Δθ 无限逼近 θ−f∗\theta_{-f}^*θ−f∗。
第二步:一阶最优性条件 (First-Order Optimality)
既然 θ∗\theta^*θ∗ 和 θ−f∗\theta_{-f}^*θ−f∗ 分别是它们各自损失函数的极小值点,根据微积分的一阶最优性条件,它们在那一点的梯度必然为零向量:
- 在全集上:∇L(θ∗,D)=0\nabla L(\theta^*, D) = 0∇L(θ∗,D)=0
- 在保留集上:∇L(θ−f∗,D−f)=0\nabla L(\theta_{-f}^*, D_{-f}) = 0∇L(θ−f∗,D−f)=0
接下来,我们把保留集的损失函数 L(θ,D−f)L(\theta, D_{-f})L(θ,D−f) 拆开来看。它其实就是全集的损失减去那个要遗忘的样本的损失:
L(θ,D−f)=L(θ,D)−ℓ(zf,θ)L(\theta, D_{-f}) = L(\theta, D) - \ell(z_f, \theta)L(θ,D−f)=L(θ,D)−ℓ(zf,θ)
对其求导,代入上面的第 2 个最优性条件:
∇L(θ−f∗,D−f)=∇L(θ−f∗,D)−∇ℓ(zf,θ−f∗)=0— (公式 A)\nabla L(\theta_{-f}^*, D_{-f}) = \nabla L(\theta_{-f}^*, D) - \nabla \ell(z_f, \theta_{-f}^*) = 0 \quad \text{--- (公式 A)}∇L(θ−f∗,D−f)=∇L(θ−f∗,D)−∇ℓ(zf,θ−f∗)=0— (公式 A)
第三步:二阶泰勒展开 (Taylor Expansion)
现在的痛点是,公式 A 中包含了我们未知的 θ−f∗\theta_{-f}^*θ−f∗。为了把未知转化为已知,我们需要在已知的收敛点 θ∗\theta^*θ∗ 附近,对 ∇L(θ−f∗,D)\nabla L(\theta_{-f}^*, D)∇L(θ−f∗,D) 进行一阶泰勒展开(即对损失函数本身进行二阶展开)。
因为我们假设删掉一个样本对全局参数的扰动 Δθ=θ−f∗−θ∗\Delta \theta = \theta_{-f}^* - \theta^*Δθ=θ−f∗−θ∗ 是非常微小的,所以泰勒近似是合理的:
∇L(θ−f∗,D)≈∇L(θ∗,D)+∇2L(θ∗,D)(θ−f∗−θ∗)\nabla L(\theta_{-f}^*, D) \approx \nabla L(\theta^*, D) + \nabla^2 L(\theta^*, D) (\theta_{-f}^* - \theta^*)∇L(θ−f∗,D)≈∇L(θ∗,D)+∇2L(θ∗,D)(θ−f∗−θ∗)
让我们仔细看看这一项里的元素:
- ∇L(θ∗,D)\nabla L(\theta^*, D)∇L(θ∗,D):这是模型在全集最优点的梯度,根据我们前面的第一阶最优性条件,它等于 000。 注意,在实际的深度学习中,使用的是梯度下降的方式来训练,为了避免模型过拟合,往往会提前中断训练,因此,∇L(θ∗,D)\nabla L(\theta^*, D)∇L(θ∗,D)不会为0。为简化表述,这里先进行理想化假设。在本文后面部分,我们将去掉该假设。
- ∇2L(θ∗,D)\nabla^2 L(\theta^*, D)∇2L(θ∗,D):这就是我们大名鼎鼎的 Hessian 矩阵,定义为 Hθ∗H_{\theta^*}Hθ∗。
- (θ−f∗−θ∗)(\theta_{-f}^* - \theta^*)(θ−f∗−θ∗):这就是我们要找的更新步伐 Δθ\Delta \thetaΔθ。
所以,上述泰勒展开可以极大地化简为:
∇L(θ−f∗,D)≈Hθ∗Δθ\nabla L(\theta_{-f}^*, D) \approx H_{\theta^*} \Delta \theta∇L(θ−f∗,D)≈Hθ∗Δθ
第四步:推导最终的更新公式 (The Newton Update)
现在,把我们在第三步化简得到的结果,代回【公式 A】:
Hθ∗Δθ−∇ℓ(zf,θ−f∗)≈0H_{\theta^*} \Delta \theta - \nabla \ell(z_f, \theta_{-f}^*) \approx 0Hθ∗Δθ−∇ℓ(zf,θ−f∗)≈0
这里还有一个小瑕疵:公式里还有 θ−f∗\theta_{-f}^*θ−f∗。由于 θ−f∗\theta_{-f}^*θ−f∗ 和 θ∗\theta^*θ∗ 非常接近,且梯度函数通常是连续的,我们再次做一个近似,用 θ∗\theta^*θ∗ 替换 θ−f∗\theta_{-f}^*θ−f∗:
Hθ∗Δθ−∇ℓ(zf,θ∗)≈0H_{\theta^*} \Delta \theta - \nabla \ell(z_f, \theta^*) \approx 0Hθ∗Δθ−∇ℓ(zf,θ∗)≈0
移项并两边左乘 Hessian 的逆矩阵 Hθ∗−1H_{\theta^*}^{-1}Hθ∗−1,我们就得到了最终的参数扰动量:
Δθ≈Hθ∗−1∇ℓ(zf,θ∗)\Delta \theta \approx H_{\theta^*}^{-1} \nabla \ell(z_f, \theta^*)Δθ≈Hθ∗−1∇ℓ(zf,θ∗)
因此,我们的近似遗忘更新公式(Newton Update for Unlearning)为:
θu=θ∗+Hθ∗−1∇ℓ(zf,θ∗)\theta_u = \theta^* + H_{\theta^*}^{-1} \nabla \ell(z_f, \theta^*)θu=θ∗+Hθ∗−1∇ℓ(zf,θ∗)
推导复盘
短短四步,我们就把复杂的“近似遗忘”还原成了最基础的微积分。这个公式的物理意义非常优美:
我们要抹去 zfz_fzf 的影响,直觉上我们应该加上它的梯度(相当于在优化时反着走,做梯度上升)。但是,参数空间不是平坦的,各个维度的曲率不同。所以,我们需要用全集在这一点上的空间曲率(Hessian 矩阵的逆)来对这个“反向梯度”进行方向和步长的校正。这就是牛顿法的精髓。
但这篇论文最核心的贡献不仅是推导出了这个牛顿步长,郭川等人的牛逼之处在于:他们证明了,如果我们用这个公式更新参数,并在最后注入一个经过精心设计的随机高斯噪声,就能在数学上严格满足我们在第一课讲到的 (ϵ,δ)(\epsilon, \delta)(ϵ,δ)-近似遗忘的差分隐私边界!
在上面的推导中,我们构建了一个非常优雅的数学闭环,但那个闭环是建立在一个经典的、属于凸优化(Convex Optimization)时代的“美丽乌托邦”之上的。
现在,我们就来把这个乌托邦撕开,看看在真实深度的神经网络中,这个假设是如何崩溃的,以及学术界是如何在废墟上重建算法的。
一、 破绽的根源:那个永远等不到的“绝对零度”
在之前的推导中,第二步(一阶最优性条件)是我们整个大厦的基石:
我们在全集上假设:∇L(θ∗,D)=0\nabla L(\theta^*, D) = 0∇L(θ∗,D)=0
如果是逻辑回归(Logistic Regression)或者支持向量机(SVM),因为损失函数是严格凸的,只要跑足够久的梯度下降,我们确实能到达那个唯一的碗底,让梯度严格为零。郭川(Guo et al., 2020)的那篇经典论文,其核心实验其实主要也是在凸模型上做的。
但在深度神经网络(DNNs)中,这是个彻头彻尾的谎言。
深度学习的损失地貌(Loss Landscape)是高度非凸(Non-convex)的,充满了无数的局部极小值(Local Minima)、鞍点(Saddle Points)和平坦区域。在实际训练中,由于以下两个原因,模型收敛时的梯度绝对不等于零:
- 早停机制(Early Stopping): 为了防止过拟合,我们通常在验证集 Loss 不再下降时就停止了训练,此时训练集上的梯度离零还差得远。
- SGD 的震荡: 随机梯度下降引入了固有的方差,模型最终是在极小值附近的一个“盆地”里做布朗运动,而不是稳稳地停在最低点。
因此,现实是残酷的:∇L(θ∗,D)≠0\nabla L(\theta^*, D) \neq 0∇L(θ∗,D)=0。我们称其为残差梯度(Residual Gradient)。
二、 灾难降临:真实的更新公式长什么样?
既然 ∇L(θ∗,D)\nabla L(\theta^*, D)∇L(θ∗,D) 不为零,我们就必须把它原封不动地请回到我们的泰勒展开式中。让我们重新推导一次没有强假设的第三步:
∇L(θ−f∗,D)≈∇L(θ∗,D)+Hθ∗Δθ\nabla L(\theta_{-f}^*, D) \approx \nabla L(\theta^*, D) + H_{\theta^*} \Delta \theta∇L(θ−f∗,D)≈∇L(θ∗,D)+Hθ∗Δθ
根据保留集的最优性条件 ∇L(θ−f∗,D−f)=0\nabla L(\theta_{-f}^*, D_{-f}) = 0∇L(θ−f∗,D−f)=0,我们知道 ∇L(θ−f∗,D)=∇ℓ(zf,θ−f∗)≈∇ℓ(zf,θ∗)\nabla L(\theta_{-f}^*, D) = \nabla \ell(z_f, \theta_{-f}^*) \approx \nabla \ell(z_f, \theta^*)∇L(θ−f∗,D)=∇ℓ(zf,θ−f∗)≈∇ℓ(zf,θ∗)。将其代入上式并移项:
Hθ∗Δθ≈∇ℓ(zf,θ∗)−∇L(θ∗,D)H_{\theta^*} \Delta \theta \approx \nabla \ell(z_f, \theta^*) - \nabla L(\theta^*, D)Hθ∗Δθ≈∇ℓ(zf,θ∗)−∇L(θ∗,D)
两边左乘 Hθ∗−1H_{\theta^*}^{-1}Hθ∗−1,我们得到了真实的近似遗忘牛顿步长:
Δθtrue≈Hθ∗−1∇ℓ(zf,θ∗)−Hθ∗−1∇L(θ∗,D)\Delta \theta_{true} \approx H_{\theta^*}^{-1} \nabla \ell(z_f, \theta^*) - H_{\theta^*}^{-1} \nabla L(\theta^*, D)Δθtrue≈Hθ∗−1∇ℓ(zf,θ∗)−Hθ∗−1∇L(θ∗,D)
致命问题出现了:
如果我们像很多早期论文那样,无视掉后面那项 −Hθ∗−1∇L(θ∗,D)- H_{\theta^*}^{-1} \nabla L(\theta^*, D)−Hθ∗−1∇L(θ∗,D),只用前半部分去更新模型,会发生什么?
答案是灾难性的性能崩溃(Catastrophic Accuracy Drop)。
因为残差梯度 ∇L(θ∗,D)\nabla L(\theta^*, D)∇L(θ∗,D) 可能非常大。如果你不减去它,你的更新步长里就不仅包含了“抹去 zfz_fzf”的方向,还杂糅了模型在整个数据集上没有收敛的那部分巨大动量。这相当于在极高维的空间里随意踹了模型一脚,模型的泛化能力会瞬间被破坏。
三、 学术界的“缝补”方案:如何在工程中救场?
面对这个理论上的无底洞,学者们提出了几种工程上的救场策略:
- 策略一:强行变凸(L2 Regularization / Weight Decay)
这是最粗暴也最有效的数学手段。我们在损失函数里加入极强的 L2 正则化项 λ2∥θ∥22\frac{\lambda}{2} \|\theta\|_2^22λ∥θ∥22。这在几何上相当于把原本平坦或坑洼的局部地貌,强行“拉拽”成一个陡峭的抛物面。λ\lambdaλ 越大,局部就越接近严格凸,∇L\nabla L∇L 就越接近零。- 代价: 极大地牺牲了模型原本的预测准确率(Accuracy-Privacy Trade-off)。
- 策略二:引入残差清洗(Residual Scrubbing)
既然公式里有 −Hθ∗−1∇L(θ∗,D)- H_{\theta^*}^{-1} \nabla L(\theta^*, D)−Hθ∗−1∇L(θ∗,D),那我们就老老实实把它算出来减掉。Golatkar 等人 (CVPR 2020) 在他们的 Fisher 遗忘网络中就采用了类似的思想。- 代价: 计算 ∇L(θ∗,D)\nabla L(\theta^*, D)∇L(θ∗,D) 需要在整个几百万张图片的训练集上完整跑一次反向传播,这在时间成本上极其昂贵,几乎违背了遗忘学习“高效”的初衷。
- 策略三:近似步长 + 少量校准(Newton Update + Calibration/Fine-tuning)
这是目前大模型和复杂 DNN 上最主流的妥协方案。我们承认只用 Hθ∗−1∇ℓ(zf,θ∗)H_{\theta^*}^{-1} \nabla \ell(z_f, \theta^*)Hθ∗−1∇ℓ(zf,θ∗) 会让模型受到内伤。所以我们在执行完这一步“粗略的遗忘”后,从保留集 DrD_rDr 中抽取极小的一个 Batch(比如 1% 的数据),用极小的学习率做 1 到 2 步的 SGD 微调(Fine-tuning)。- 优势: 这就像做完粗暴的肿瘤切除手术后,让模型自身快速愈合一下。它能瞬间拉回暴跌的准确率,同时在黑盒评估下依然表现出极好的遗忘效果。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)