1.摘要
机器学习模型不是静态的,可能需要在略有变化的数据集上进行重新训练,例如,添加或删除一组数据点。这有许多应用,包括隐私、鲁棒性、减少偏差和不确定性量化。然而,从头开始重新训练模型是昂贵的。为了解决这个问题,我们提出了DeltaGrad算法,用于基于训练阶段缓存的信息快速再训练机器学习模型。
2.Introduction
之前的研究:
然而,现有的方法有各种局限性:它们只适用于k-means (Ginart等人,2019)或逻辑回归(Wu等人,2020)等专门问题,或者它们需要额外的随机化,导致非标准训练算法
解决的问题:
用于在训练数据集中发生微小变化时快速重新训练机器学习模型,例如基于训练期间缓存的信息删除或添加样本。DeltaGrad解决了先前工作的几个限制:它适用于使用SGD训练的经验风险最小化定义的一般机器学习模型,并且不需要额外的随机化。
贡献:
1.我们提出了DeltaGrad算法,用于根据数据的微小变化对(随机)梯度下降的机器学习模型进行快速再训练
2.我们提供的理论结果显示了DeltaGrad的准确性。
3.我们提供的实证结果显示了DeltaGrad的速度和准确性,用于添加,删除和持续更新,在许多标准数据集上。
3.DeltaGrad算法
我们知道训练集有n个样本。通常机器学习模型的损失函数为:
这里w代表模型参数向量,表示第i个样本的损失。梯度和
海森矩阵为:
通过SGD得到模型参数:
其中是在t次迭代大小为B的随机抽样小批量,
是在t次迭代的学习率。那么同理通过GD可以得到:
在训练了所有数据集后,样本索引被移除,
,
我们的目标是有效地将模型参数更新为新的经验损失的最小值。我们的算法也适用于添加r个新数据点的情况。
简单的解决方法使直接对剩余的数据集 n-r 个样本应用梯度下降:
我们的DeltaGrad方法如下:
总的来说,为了追求效率,通过我们自己的 “leave-r-out” gradient formula,重写了等式(1),
(我们用表示由DeltaGrad得到的模型参数)
(1)与(2)先进行简单的比较,当 时,计算
比计算
效率更高。明白了以上的前置知识,下面是对算法的解读:
输入参数:
这里的"burn-in" iteration number 代表磨合期的迭代次数,下面会讲到
输出参数:
for t = 0; t < T; t++,总共迭代T次,接下来就是算法的“burn-in”iteration和other iteration
如果当前迭代 t
是“磨合”期“burn-in”iteration或者每隔
T0
次迭代:
- 精确计算当前模型参数
的梯度
- 基于缓存的梯度
计算梯度差
- 基于缓存的参数计算参数差
- 更新k的值为k+1
- 使用上面图片中准确的梯度下降公式(1)计算
如果不是“磨合”期,就执行其他迭代other iteration:
- 使用L-BFGS算法(一种有限内存的拟牛顿法)和历史信息
来近似当前的Hessian矩阵
的逆与向量
v
的乘积,即,其中
- 近似梯度
- 使用上面图片的等式(2)“leave-r-out”梯度公式,基于近似的梯度
来计算
返回更新后的参数
以上就是算法的整个流程。
收敛率分析:对于强凸目标函数,DeltaGrad算法提供了理论上的收敛率保证。
复杂度分析:DeltaGrad算法的时间复杂度低于从头开始训练模型,特别是当删除或添加的数据点数量远小于总数据点数量时。
4.实验结果
通过在标准数据集上的实验,DeltaGrad显示出在准确性和速度上的优势,与从头训练相比,加速比可达到6.5倍,同时几乎不损失准确性。