KGA:AGeneral Machine Unlearning Framework Based on Knowledge Gap Alignment

文章目录

    • 摘要
    • 1 引言
    • 2 相关工作
    • 3 符号与定义
    • 4 我们的 KGA 框架
      • 4.1 KGA框架
        • 知识差距对齐
        • 目标
      • 4.2 KGA在自然语言处理任务中的应用
        • 文本分类
        • 机器翻译
        • 响应生成
    • 5 实验设置
      • 数据集
      • 评估指标
      • 参数设置
      • 比较方法
    • 6 实验结果
      • 6.1 主要比较结果
      • 6.2 KGA 的优越性分析
        • 降低语言模型概率比较
      • 6.3 NLP 中去学习的分析
        • 删除不同难度级别的实例
        • 去学习包含特定词语的实例
        • 进一步分析
          • 删除数量的影响
          • 基模型的影响
    • 7 结论

摘要

最近关于“被遗忘权”的立法引发了对机器去学习的关注,其中训练模型具备忘记特定训练实例信息的功能,就好像这些实例从未存在于训练集中一样。之前的研究主要集中在计算机视觉场景上,较少关注自然语言处理(NLP)领域的去学习要点,而文本数据中包含比图像更明确和敏感的个人信息。在本文中,我们提出了一种称为KGA的通用去学习框架,以引导模型的遗忘。与之前的研究试图恢复梯度或强迫模型接近某一特定分布不同,KGA保持了分布差异(即知识差距),这放宽了分布假设。此外,我们首次将去学习方法应用于各种NLP任务(即分类、翻译、响应生成),并提出了一些具有针对性的去学习评估指标。在大规模数据集上的实验表明,KGA在基准测试中表现出全面的改进,广泛的分析进一步验证了KGA的有效性,并为NLP任务的去学习提供了见解。

1 引言

如今,机器学习模型通常使用大量从个人用户收集的数据进行训练。这些个人数据本质上是敏感的,因为它可能包含个人地址和医疗记录等信息。训练好的模型可能无意中侵犯用户隐私,因为其参数永久编码了个人信息及其衍生信息。因此,机器去学习(Machine Unlearning,MU)(Romero et al., 2007;Karasuyama和Takeuchi, 2009;Cao和Yang, 2015)在研究和工业界越来越受到关注,其目标是使模型能够忘记训练集中某些特定的数据,同时保持现有模型的性能。除了隐私方面的好处,MU还可以解决忘记有害和不良数据的问题(Welbl et al., 2021)。

虽然从后端数据库中删除数据是直接的,但对于机器学习模型来说,删除它们对数据的知识却是一个挑战。一种直观的去学习方法是从头开始重新训练模型,同时将“待遗忘”的数据从训练集中删除。然而,鉴于大型模型的繁荣,这种重新训练方法在计算上是昂贵的;在实际应用中,频繁的数据删除请求使得持续重新训练变得不切实际。此外,深度学习模型是基于大规模数据训练的黑箱函数。由于模型权重与数据之间的关系不明确,知道在去学习中应该修正哪些权重部分是困难的。因此,迫切需要开发一种高效的去学习方法。

现有的机器去学习研究主要集中在计算机视觉应用上,例如图像分类(Golatkar et al., 2020a,b;Mehta et al., 2022),而对自然语言处理(NLP)领域的去学习关注较少,而文本数据中包含比图像更明确和敏感的个人信息(例如,家庭地址、电话号码、社交关系等)。此外,目前的去学习方法仅能高效处理少量的数据删除请求(Bourtoule et al., 2021),而NLP应用中的删除请求可能达到数百个。此外,当前基于梯度计算的去学习方法(Mehta et al., 2022)难以应用于通常基于Seq2Seq框架的NLP生成模型,这些模型在不同的时间戳之间包含复杂的注意力机制。考虑到去学习在NLP中的重要性和挑战,我们提出了KGA——一种基于知识差距对齐的通用机器去学习方法,并将KGA应用于NLP任务。KGA的灵感来自于一项通用的知识适应工作(Khan和Swaroop, 2021),其中采用权重和函数空间先验来重构模型的梯度。与Khan和Swaroop(2021)针对包括数据删除在内的适应任务的通用解决方案相比,但难以扩展到复杂神经网络,我们的方法KGA从知识差距对齐的角度专注于数据删除,且易于推广到深度网络。本文中的知识差距定义为用不同数据训练的两个结构上相同模型的预测分布之间的距离。通过对齐知识差距,我们迫使两组模型的行为相似。此外,与只能处理少量删除请求(Bourtoule et al., 2021)、对模型输出持有强假设(Chundawat et al., 2022),或者不适用于复杂生成任务(Mehta et al., 2022)的现有去学习方法不同,KGA能够高效处理大量删除请求,同时保持准确性,并且易于适用于各种模型和任务,前提假设较为宽松。此外,我们将KGA应用于各种NLP任务(即分类、翻译和响应生成),并定制特定于文本的评估指标。来自各方面的实验结果和进一步分析表明,我们的KGA在性能维护和去学习效率方面通常优于基准,同时在不同场景和模型之间保持一致性。为了更好地验证和分析去学习的有效性,提供了模型在去学习前后如何将德语翻译成英语的有趣探索。

简而言之,本文的主要贡献包括:

  • 我们提出了一种基于知识差距对齐的NLP任务去学习解决方案(即KGA),可以高效和有效地执行去学习。
  • 在三个大规模数据集上进行的实验以及新制定的特定于文本的评估指标验证了KGA的有效性。
  • 我们进行了广泛的实验和分析,以确认KGA在不同场景下的去学习效果。

2 相关工作

当前的去学习研究可以分为两类:精确去学习和近似去学习。我们简要介绍如下。

精确去学习:精确去学习能够确保从模型中删除的数据的影响被彻底去除。Cao和Yang(2015)通过统计查询方法探讨了朴素贝叶斯分类器的精确去学习,而Ginart等人(2019)研究了k-means聚类的删除算法,但这些方法无法扩展到可能拥有数百万参数的深度神经网络。至于最近在神经模型去学习方面的努力,Bourtoule等人(2021)提出了一种名为SISA的通用方法,该方法首先将原始数据集划分为多个不重叠的部分,然后设计有效的机制来聚合使用这些部分训练的模型。在处理数据删除时,该方法只需重新训练受影响部分训练的模型。然而,研究表明,当删除请求数量较大时,基于SISA的方法效果不佳,并且我们必须在训练和去学习过程中维护整个数据集,这在实际操作中是不可行的。

近似去学习:这一类别的方法试图使模型的行为尽可能接近精确去学习模型。近似去学习的受欢迎程度源于对更高效和成本更低的去学习的需求,因此牺牲了精确性。Golatkar等人(2020a);Guo等人(2019);Koh和Liang(2017);Mehta等人(2022)主要通过计算模型在剩余数据上的正则化经验风险的扰动来处理去学习请求。然而,这种方法需要计算训练数据上的海森矩阵和删除数据的梯度,这仍然是耗时的。(Chundawat等人,2022)假设去学习后的模型在遗忘数据上的表现应与随机初始化的模型相似,这不恰当,因为去学习的目标是去除遗忘数据的影响(充当未见数据),而不是让模型无法处理遗忘数据。然而,现有的知识适应方法要么要求强假设,要么在基于神经网络的模型上表现不佳(Khan和Swaroop,2021)。

与上述工作不同,KGA并不强制模型在遗忘数据上接近某一特定分布,而是保持两个模型对之间的分布差异(即知识差距)。这减弱了假设,因为它适用于任何分布的遗忘数据,从而也适用于更现实的场景,同时仍然确保模型的性能。

3 符号与定义

符号:我们用 Z Z Z表示示例空间,即数据实例或样本的空间。所有可能训练数据集的集合可以表示为 Z = 2 Z Z = 2^Z Z=2Z。训练数据集 D ⊆ Z D \subseteq Z DZ 被给定为输入。给定 D D D,我们从假设空间 ( H ) 中训练一个机器学习模型。训练模型的过程是通过学习算法来实现的,记作函数 A : Z → H A: Z \rightarrow H A:ZH。训练好的模型记作 A ( D ) A(D) A(D)。接下来,我们用函数 ( U ) 表示去学习机制,它接受训练数据集 D ⊆ Z D \subseteq Z DZ、一个遗忘集 D f ⊆ D D_f \subseteq D DfD(包含需要删除的数据)以及模型 A ( D ) A(D) A(D)作为输入,并返回一个去学习后的模型 U ( D ∖ D f , A ( D ) ) ∈ H U(D \setminus D_f, A(D)) \in H U(DDf,A(D))H

近似去学习定义:接下来,我们给出近似去学习的一个代表性定义,特别是基于 Guo 等人(2019)的定义。给定 ϵ > 0 \epsilon > 0 ϵ>0,如果去学习机制 U U U 对学习算法 A A A 执行了认证删除,那么对于所有 T ⊆ D T \subseteq D TD D f ⊆ D D_f \subseteq D DfD都有:

Pr ( U ( D ∖ D f , A ( D ) ) ∈ T ) Pr ( A ( D ∖ D f ) ∈ T ) ≤ ϵ , \frac{\text{Pr}(U(D \setminus D_f, A(D)) \in T)}{\text{Pr}(A(D \setminus D_f) \in T)} \leq \epsilon, Pr(A(DDf)T)Pr(U(DDf,A(D))T)ϵ,

近似去学习的目标可以总结为:遗忘需要遗忘的数据,同时保持模型的性能。

4 我们的 KGA 框架

KGA去学习方法受到一般知识适应工作的启发(Khan和Swaroop,2021),在该工作中,采用权重和函数空间先验来重构模型的梯度。与Khan和Swaroop(2021)不同的是,如果将其应用于神经网络等非线性模型时,无法准确恢复梯度,而KGA可以从知识差距对齐的角度处理各种神经网络的数据删除请求。

4.1 KGA框架

KGA的输入可以分为两个部分:数据和模型。输入数据包括之前的训练数据 ( D )、需要遗忘的数据 ( D_f ),以及一小部分额外的数据 ( D_n ) 来协助去学习,其中 D n ∩ D = ∅ D_n \cap D = \emptyset DnD=。除了数据外,我们还有模型 A ( D ) A(D) A(D) 作为输入,它是用数据 ( D ) 训练的原始模型,该模型需要进行去学习(在本文后续部分简写为 ( A_D ))。KGA的输出是一个模型 ( A ),其参数以 ( A_D ) 初始化,并通过我们KGA去学习机制进一步更新,以删除 ( D_f )。

为了执行去学习,我们首先分别基于数据 ( D_n ) 和 ( D_f ) 训练两个模型 ( A_n ) 和 ( A_f )。( A_D )、( A_n ) 和 ( A_f ) 的架构应该相同。( A_n )(( A_f ))可以通过将 ( D_n )(( D_f ))与一小部分 ( D_r = D \setminus D_f ) 结合或者基于一些预训练的语言模型进行微调来确保性能,因为在某些情况下,需要遗忘的数据 ( D_f ) 可能很少。

我们重新框定并总结了两个目标,以实现第3节定义的近似去学习。这两个目标是:目标1:使输出模型 ( A ) 在 ( D_f ) 上的行为类似于其在任何看不见的数据(即未用于训练的数据)上的行为;目标2:维持模型 ( A ) 在 ( D_r ) 上的性能。

知识差距对齐

在本工作中,知识差距被定义为两个具有相同架构但用不同数据训练的模型的预测分布之间的距离。通过对齐两个知识差距,我们使得两组模型的性能相似。

为了实现目标1,我们期望目标模型 ( A ) 在数据 ( D_f ) 上的输出分布(记作 ( A(D_f) ))类似于 ( A_D(D_n) ),其中 ( D_n ) 应该是与 ( D ) 外部的集合,但具有相似的分布。由于 ( D_n ) 中的实例可能与 ( D_f ) 具有不同的标签和特征,因此直接推导 ( A(D_f) ) 与 ( A_D(D_n) ) 的输出分布是困难的。因此,我们转而模仿两组模型之间的知识差距:

A = arg ⁡ min ⁡ A dis ( D n ) ( A D A n ) + dis ( D f ) ( A A f ) A = \arg\min_{A} \text{dis}(D_n)(A_D A_n) + \text{dis}(D_f)(A A_f) A=argAmindis(Dn)(ADAn)+dis(Df)(AAf)

其中, dis ( D ) ( A 1 A 2 ) \text{dis}(D)(A_1 A_2) dis(D)(A1A2) 表示模型 A 1 A_1 A1 A 2 A_2 A2 在数据 ( D ) 上输出分布的差异,可以通过KL散度、Bregman散度或其他分布距离测量来评估。

由于 ( A_n ) 和 ( A_f ) 分别在 ( D_n ) 和 ( D_f ) 上训练,我们期望在将 ( D_f ) 输入到 ( A ) 和 ( A_f ) 时,知识差距应与将 ( D_n ) 输入到 ( A_D ) 和 ( A_n ) 时相似。这个假设是基于相同架构在处理具有相似分布的已知(即用于训练)和未知数据时可以观察到相似的知识缺失。我们认为,成功的去学习方法应使目标模型 ( A ) 将 ( D_f ) 视为未见数据。

对于目标2,我们在处理剩余数据 ( D_r ) 时保持模型 ( A ) 的能力。我们将原始模型 ( A_D ) 视为老师,直接最小化在 ( D_r ) 中输入样本到 ( A ) 和 ( A_D ) 时输出分布的距离。

目标

在我们的实现中,我们使用KL散度来测量两个模型输出之间的分布距离。因此,知识差距对齐目标定义为:

L a = ∑ ( y , z ) ∈ ( D f , D n ) K L [ P r ( A ) ( y ) ∣ ∣ P r ( A f ) ( y ) ] + ∑ ( y , z ) ∈ ( D f , D n ) K L [ P r ( A D ) ( z ) ∣ ∣ P r ( A n ) ( z ) ] L_a = \sum_{(y,z) \in (D_f, D_n)} KL[Pr(A)(y) || Pr(A_f)(y)] + \sum_{(y,z) \in (D_f, D_n)} KL[Pr(A_D)(z) || Pr(A_n)(z)] La=(y,z)(Df,Dn)KL[Pr(A)(y)∣∣Pr(Af)(y)]+(y,z)(Df,Dn)KL[Pr(AD)(z)∣∣Pr(An)(z)]

其中 ( Pr(A)(z) ) 是给定输入 ( z ) 的模型 ( A ) 的输出分布,( KL(a || b) ) 测量分布 ( a ) 和 ( b ) 之间的KL散度。( y ) 和 ( z ) 分别来自 ( D_n ) 和 ( D_f )。我们随机抽样实例对 ( (y, z) ) 作为更新批次,以减轻对特定样本的过拟合。

保持 ( D_r ) 上性能的目标是另一个KL散度,测量 ( A ) 和 ( A_D ) 在 ( D_r ) 上的输出分布:

L r = ∑ x ∈ D r K L [ P r ( A ) ( x ) ∣ ∣ P r ( A D ) ( x ) ] L_r = \sum_{x \in D_r} KL[Pr(A)(x) || Pr(A_D)(x)] Lr=xDrKL[Pr(A)(x)∣∣Pr(AD)(x)]

这两个目标在去学习期间共同优化,以同时实现目标1和目标2。因此,最终目标定义为:

L = L a + L r L = L_a + L_r L=La+Lr

为了提高去学习效率,我们需要找到模型 ( A ) 在去学习过程中达到所需性能的最早时间。然而,与传统的机器学习算法不同,我们很难找到合适的验证集来验证性能,因为 ( D_f ) 也包含在训练过程中。为了解决这个问题,我们使用一个超参数 ( 0 < \beta < 1 ) 来控制训练。具体来说,我们将首先评估在训练前 ( \text{dis}(D_n)(A_D A_n) ) 和 ( \text{dis}(D_f)(A_D A_f) ) 之间的平均知识差距,记作 ( G )。如果对应的平均知识差距达到 ( G ),则训练停止。我们在算法1中总结了KGA。

4.2 KGA在自然语言处理任务中的应用

我们并不限制模型 ( A() ) 的格式,因为我们提出的去学习方法是通用的,可以应用于各种神经网络架构。我们选择了三个自然语言处理任务(即文本分类、机器翻译和响应生成)来展示我们去学习方法的有效性。

文本分类

文本分类任务将文本句子作为输入,并输出在预定义类别上的概率分布。我们遵循 Mehta 等人(2022)的研究,对预训练模型 DistilBERT(Sanh 等人,2019)进行微调,以完成文本分类。DistilBERT 是 BERT(Devlin 等人,2019)模型的蒸馏版本,包含多个 Transformer 编码器层以提取特征。其输入形式为 w c = [ [ C L S ] ; w 1 ; w 2 ; … ; w C ] wc = [[CLS]; w_1; w_2; \ldots; w_C] wc=[[CLS];w1;w2;;wC] C L S CLS CLS 标记的输出表示进一步馈入分类器,以推导每个类别的概率。

机器翻译

机器翻译任务将一种语言中的句子作为输入,并输出相应的翻译到另一种语言。我们遵循基于 Transformer 的一般编码器-解码器框架,其中编码器总结源句子,解码器将基于源表示以自回归的方式生成目标句子。除了 Transformer,我们还验证了我们的去学习方法在其他架构中的有效性,包括 LSTM 和预训练语言模型 BART(Lewis 等人,2020)。

响应生成

响应生成和机器翻译都是生成任务,其目标是根据给定的源内容生成文本。在响应生成中,给定的源内容是两个对话者之间的对话,期望预测下一个响应的内容。生成的模型与机器翻译的模型相似,我们将上下文中的发言连接起来作为输入。

5 实验设置

数据集

我们在三个数据集上进行实验,分别是 LEDGAR(Tuggener 等人,2020)、IWSLT14 德英翻译(Cettolo 等人,2014)(以下简称 IWSLT)和 PersonaChat(Zhang 等人,2018)。LEDGAR 是一个多标签文本分类数据集,包含合同中的法律条款,我们遵循 Mehta 等人(2022)的方法使用了 LEDGAR 的一个原型子集。IWSLT 来源于一个流行的翻译活动,涵盖多种翻译方向,我们选择了代表性的德英翻译方向。PersonaChat 是一个众包数据集,包含基于给定个性信息的轮流对话。我们使用官方的训练/验证/测试划分来进行所有三个数据集的实验。这些数据集的统计信息列在表 1 中。

评估指标

对于每个数据集,我们报告一个代表性的任务相关评分(LEDGAR 的 Micro F1,IWSLT 的 BLEU42 和 PersonaChat 的 PPL),并附加去学习评估指标,具体如下:

  • Jensen–Shannon 散度(JSD):给定两个分布 ( p(x) ) 和 ( q(x) ),其计算公式为 ( \text{JSD}(p(x) || q(x)) = 0.5 , \text{KL}(p(x) || q(x)) + 0.5 , \text{KL}(q(x) || p(x)) )。

  • 语言模型概率距离(LPD):给定两个语言概率(即每个模型生成的目标句子的困惑度)( x ) 和 ( y ),其计算方式为 ( \text{LPD}(x, y) = x - y )。

  • 语言模型概率下降(PDLP):计算在去学习后,语言模型概率下降的实例所占的百分比。

参数设置

对于 LEDGAR,我们对 DistilBERT 进行微调。对于 IWSLT 和 PersonaChat,我们均使用通用的编码器-解码器 Transformer 架构。我们使用 Adam(Kingma 和 Ba,2015)优化器,并结合逆平方根学习率调度器进行模型训练。在 KGA 去学习过程中,我们为所有三个数据集保持 16 的批量大小和 5e-5 的学习率,并在公式 5 中设置 ( \beta ) 为 0.1。有关更多参数和训练细节,请参见附录 A。

比较方法

我们将 KGA 方法在测试集和遗忘集上的性能与以下模型进行比较:

  • ORIGINAL:在完整训练集 ( D ) 上训练的原始模型,没有进行任何遗忘。

  • RETRAIN:使用保留数据 ( D_r )(( D_r = D \setminus D_f ))重新训练模型。

  • SISA(Bourtoule 等人,2021):首先将数据集划分为多个不重叠的部分,然后汇总用不同部分训练的模型的输出。当处理数据删除时,仅重新训练受影响部分的模型,然后进行汇总。在我们的实验中,我们随机将训练集划分为 5 个部分。

  • LCODEC(Mehta 等人,2022):它与 Hessian 去学习一致(基于损失函数的 Hessian 更新模型权重),并识别一部分模型参数以降低计算成本。它适用于分类任务,在生成任务中可能需要修改。

  • BADTEACHER(Chundawat 等人,2022):它强迫去学习模型在遗忘集 ( D_f ) 上的表现尽可能接近随机初始化的模型,同时保持在剩余数据 ( D_r ) 上的性能。

6 实验结果

在本节中,我们首先在 6.1 节中比较 KGA 和基线模型的主要去学习分数。然后在 6.2 节中报告时间成本、成员推断攻击和语言模型概率比较结果,以检验 KGA 的优越性。接着,在 6.3 节深入探讨去学习对 NLP 任务的影响。最后在 6.4 节中进行更多分析。

6.1 主要比较结果

我们探讨了测试集和遗忘集上的代表性分数,以检验以下两个问题:(i)去学习模型在测试集上的性能维持得如何?(ii)在原始训练集中曾经存在的遗忘集上的性能变化如何?我们在表 2 中报告了相应的分数,可以得到以下观察结果:

  1. 我们的去学习方法能够更好地维持测试集上的性能。可以看出,KGA 在三个数据集上的 F1、BLEU4 和 PPL 分数均优于其他去学习基线,无论是精确方法还是近似方法。这表明 KGA 相较于其他方法的一个优越性。

  2. 我们的 KGA 去学习模型在遗忘集上的表现和预测分布更接近 RETRAIN 模型。我们可以看到,在遗忘集上,KGA 方法得到的 F1(BLEU4 和 PPL)分数与 RETRAIN 模型的分数更接近,并且维持了更小的 JSD(LPD)分数,这意味着在遗忘集上实例的输出分布也与 RETRAIN 模型更加接近。这表明 KGA 在所有基线中实现了最佳的遗忘效果,符合公式 1 的定义。

  3. 从原始模型中遗忘数据并不意味着去学习模型无法处理这些实例。我们发现 RETRAIN 在遗忘集上的性能相较于 ORIGINAL 模型有所下降,但仍表现出良好的性能(接近测试集的结果)。这与我们的假设一致,成功的去学习模型在遗忘集上的性能应该与未见数据(例如,测试集)相似。我们的 KGA 方法的表现与 RETRAIN 一致,而 BADT 完全丧失了分类和生成的能力,这不符合定义。

6.2 KGA 的优越性分析

在本小节中,我们考察去学习的效率(即时间成本)和效果(即成员推断攻击和语言模型概率检查)。

  • 时间成本:我们在图 1(a) 中报告了去学习模型的时间成本。可以看出,尽管重新训练和精确去学习方法(如 SISA)可以保证完美的去学习,但它们的时间成本远超其他近似去学习方法(如 LCODEC、BADT、KGA)。

  • 成员推断攻击(MiA):在机器学习环境中,MiA 出现于对手试图找出目标数据实例是否被用于训练模型的情况。我们遵循 Salem 等人(2018)和 Golatkar 等人(2020b)的研究,进行黑箱 MiA,其中对手只能访问模型输出分布。我们以 IWSLT 数据集为例,首先训练一个与原始训练集同分布的浅层翻译模型(实际上简化为使用原始训练集的 30% 实例)。浅层模型的训练集数据标记为“1”,而其他未见数据(即原始训练集的其余部分)标记为“0”。然后,我们使用带有“1/0”标签的数据训练攻击模型,以训练的浅层模型的输出分布作为输入。之后,我们将无学习模型(即 RETRAIN、KGA 等)的输出馈入攻击者模型,并检查 MiA 结果。

我们在图 1(b) 中报告了 MiA 结果,其中更高的 F1 分数和更低的假阴性率(FNR)表示攻击者能更好地推断实例的成员身份。可以看出,攻击者在 ORIGINAL 上的表现最佳,而在去学习后表现较差,这是我们所期望的。在所有无学习模型中,我们也发现攻击者在经历精确去学习(即 RETRAIN 和 SISA)后无法很好地推测成员身份。作为一种近似去学习方法,KGA 的结果接近精确去学习,显示了其有效性。

降低语言模型概率比较

除了在 6.1 节中报告的语言模型距离外,我们还评估了一种新的去学习评估分数,称为相对于原始模型的语言模型概率下降比例(PDLP)。目标序列的语言模型概率下降意味着去学习模型倾向于不生成需要遗忘的句子,这与去学习的目标一致。我们在表 3 中报告了测试集和遗忘集的 PDLP 比较结果。从 RETRAIN 模型的结果来看,我们可以看到测试集中的实例在 RETRAIN 去学习后保持稳定波动(即约 50% 的 PDLP),而遗忘集中的实例则显示出较大的语言模型概率下降(即 96% 的 PDLP),这表明遗忘集的去学习效果良好。我们很容易发现,我们的 KGA 去学习方法与 RETRAIN 模型的表现最为接近,这验证了 KGA 相较于其他比较模型的优越性。

6.3 NLP 中去学习的分析

以往关于去学习的大多数研究主要集中在计算机视觉任务上,对 NLP 任务,尤其是生成任务关注较少。在这里,我们设计了两个针对 NLP 的特定实验,并提出了一些有趣的讨论。

删除不同难度级别的实例

在这里,我们研究我们的去学习方法是否能够处理翻译任务中不同难度级别的遗忘实例。我们使用 BLEU 分数来衡量实例的难度,较高的 BLEU 分数表示该实例对当前模型来说更容易。为了准备 5 组不同难度的实例,我们采用 ORIGINAL 模型对训练集中的实例进行推断,然后根据生成句子的 BLEU 分数对它们进行排序。我们根据 BLEU 将训练集分成 5 个部分,每部分选择 100 个实例作为遗忘集。之后,我们分别对这些实例应用我们的 KGA 去学习。我们在图 2 中报告了去学习结果。

图 2(a) 显示了 ORIGINAL 模型和去学习模型(即 RETRAIN 和 KGA)在遗忘集(5 组不同 BLEU 范围)上的 BLEU 分数。我们可以很容易地发现,去学习导致 RETRAIN 在遗忘集上的某些性能下降,而我们的 KGA 在 R1 和 R2 组上却获得了性能提升。这可能是因为 KGA 倾向于强迫遗忘数据的性能接近未见数据,而不管 BLEU 的范围。因此,在 KGA 去学习之后,表现较差的实例可能会得到提升,而高表现的实例则可能会下降。从图 2(b) 中,我们意外地发现 RETRAIN 后在测试集上的性能甚至比 ORIGINAL 模型更好,尤其是在遗忘极易实例的情况下(即 R5),虽然 R1 略微更高,这可能是由于随机效应。这可能是因为极易的实例对模型性能的提升影响较小。这一观察结果也激发了去学习的进一步应用——去学习某些特定数据点可能会带来性能提升。我们将其留待未来探索。

去学习包含特定词语的实例

与分类任务不同,我们无法删除某个特定标签的所有数据以探索去学习的有效性,翻译任务和大多数生成任务并不包含如此简单的标签来精确分类实例。因此,我们转向选择在翻译任务中包含某些特定词语的实例,以分析去学习前后的输出。

例如,我们删除目标序列中包含“sister”一词的所有实例,从而得到一个去学习模型,预期它会遗忘“sister”一词。表 4 展示了原始模型和去学习模型在三种情况下的输出。我们可以看到,在从训练集中删除所有包含“sister”的实例后,去学习模型不再能够生成“sister”。然而,去学习模型仍然能够生成其他内容。

进一步分析
删除数量的影响

我们研究了去学习模型在处理不同删除数量时如何维持测试集上的性能以及遗忘集上的信息,结果如图 3 所示。从图 3(a) 可以看出,RETRAIN 模型在处理不同数量的删除时能够维持在测试集上的性能,这意味着它对删除数据的规模不敏感。而 KGA 在删除不超过 200 个对话(约 2000 个实例)时能够维持性能,而 SISA 即使在删除数量较少的情况下也表现不佳。图 3(b) 显示了 RETRAIN 和 KGA 在遗忘集上的 LPD。我们可以发现,随着删除数量的增加,KGA 维持了较低的 LPD,这表明 KGA 在遗忘选定数据时表现始终良好。

基模型的影响

我们进一步展示了 KGA 应用于不同模型结构时的去学习结果。除了传统的 Transformer 结构外,这里我们还对 LSTM 和 BART(一个预训练的语言模型)进行了实验。表 5 显示了结果。可以看到,KGA 在使用不同结构时在测试集上的性能下降百分比保持相似,并且在遗忘集上的 LPD 和 PDLP 分数也相似,这表明 KGA 在不同模型结构下均有效。

7 结论

本文提出了 KGA,一种通用的近似机器去学习框架,并探讨其在多个 NLP 任务中的应用。KGA 利用两组模型之间的分布差异,使得去学习模型在遗忘数据上的表现类似于其在未见数据上的表现。对三个大规模数据集的实验以及进一步的实验验证了 KGA 的有效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《上古重生》V20241127111039官方中文学习版

《上古重生》官方中文版https://pan.xunlei.com/s/VODab-jcgXUAgJbj2b1-11qUA1?pwdc7di# 一款考验玩家技巧的砍杀游戏&#xff0c;从玩家到敌人&#xff0c;通通身穿古代的厚重盔甲&#xff0c;进行“重量级”的近身搏斗。在充满Cult元素的第一人称视角大冒险中杀出一条血路吧…

什么是负载均衡?NGINX是如何实现负载均衡的?

大家好&#xff0c;我是锋哥。今天分享关于【什么是负载均衡&#xff1f;NGINX是如何实现负载均衡的&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是负载均衡&#xff1f;NGINX是如何实现负载均衡的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源…

数组排序------冒泡排序

要求&#xff1a;给定一个数组&#xff0c;让数组升序&#xff08;降序&#xff09;排序 思路&#xff1a; 假设升序排序&#xff1a; ①&#xff1a;将数组中相邻元素从前往后依次进行比较&#xff0c;如果前一个元素比后一个元素大&#xf…

SpringBoot + 九天大模型(文生图接口)

目录 1、先到九天大模型的官网&#xff08;LLM Studio&#xff09;上订阅模型的推理服务&#xff0c;得到APIKey&#xff0c;后期需要使用它生成token才能调用模型的推理服务。 2、在SpringBoot项目里面的pom.xml文件中添加九天大模型的相关依赖&#xff0c;后面会使用到其中…

Leetcode 120. 三角形最小路径和 动态规划

原题链接&#xff1a;Leetcode 120. 三角形最小路径和 class Solution { public:int minimumTotal(vector<vector<int>>& triangle) {int n triangle.size();if (n 1)return triangle[0][0];int dp[n][n];dp[0][0] triangle[0][0];int res INT_MAX;for (in…

网络安全概论

网络安全概论--网络基础知识--防火墙技术--身份识别技术--虚拟专用网络--入侵检测技术--病毒和恶意代码 --业务连续性计划--安全管理--信息系统安全方案设计方法 一、网络安全面临的威胁 物理安全威胁、操作系统的安全缺陷、网络协议的安全缺陷、应用软件的实现缺陷、用户使…

设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析

状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为&#xff0c;使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类&#xff0c;通过状态对象的行为改变来避免…

某团 mtgsig1.2 | sdkVersion: 3.0.0 签名算法分析记录(2025/1/9)

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#…

(二)最长公共子序列、最长上升子序列、最大子段和、三角形最小路径和、矩阵连乘、0-1背包

最近刚考完算法设计分析课的考试&#xff0c;复习总结一下期末考试的几道算法题吧 目录 LCR 095. 最长公共子序列 300. 最长递增子序列 53. 最大子数组和 LCR 100. 三角形最小路径和 矩阵连乘问题 0-1背包 LCR 095. 最长公共子序列 给定两个字符串 text1 和 text2&#xff…

聚类系列 (二)——HDBSCAN算法详解

在进行组会汇报的时候&#xff0c;为了引出本研究动机&#xff08;论文尚未发表&#xff0c;暂不介绍&#xff09;&#xff0c;需要对DBSCAN、OPTICS、和HDBSCAN算法等进行详细介绍。在查询相关资料的时候&#xff0c;发现网络上对于DBSCAN算法的介绍非常多与细致&#xff0c;但…

通义灵码在跨领域应用拓展之物联网篇

目录 一.引言 二.通义灵码简介 三.通义灵码在物联网领域的设备端应用 1.传感器数据采集 (1).不同类型传感器的数据读取 (2).数据转换与预处理 2.设备控制指令接收和执行 (1).指令解析与处理 (2).设备动作执行 四.通义灵码在物联网领域的云端平台应用 1.数据存储和管…

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务&#xff1a; current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行&#xff1a; 定时周期调度设置…

CISAW-ES应急服务方向信息安全事件分级

网络安全事件事件分级 网络安全事件分为四级&#xff1a;特别重大网络安全事件、重大网络安全事大网络安全事件、一般网络安全事件。 1&#xff0e;特别重大网络安全事件 符合下列情形之一的&#xff0c;为特别重大网络安全事件。 &#xff08;1&#xff09;重要网络和信息系…

油猴支持阿里云自动登陆插件

遇到的以下问题,都已在脚本中解决: 获取到的元素赋值在页面显示,但是底层的value并没有改写,导致请求就是获取不到数据元素的加载时机不定,尤其是弱网情况下,只靠延迟还是有可能获取不到,且登陆不丝滑,通过元素发现机制,解决此问题并做到丝滑登陆根据密钥计算校验码之…

B树与B+树:数据库索引的秘密武器

想象一下&#xff0c;你正在构建一个超级大的图书馆&#xff0c;里面摆满了各种各样的书籍。B树和B树就像是两种不同的图书分类和摆放方式&#xff0c;它们都能帮助你快速找到想要的书籍&#xff0c;但各有特点。 B树就像是一个传统的图书馆摆放方式&#xff1a; 1. 书籍摆放&…

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…

成为LabVIEW自由开发者

成为LabVIEW自由开发者的体验可以非常丰富且具有挑战性&#xff0c;同时也充满了自我成长和多样化项目的机会。 ​ 1. 高度的灵活性与自由度 工作时间与地点&#xff1a;作为自由开发者&#xff0c;你可以自由选择工作时间和地点。你可以在家工作&#xff0c;也可以选择在咖啡…

用于与多个数据库聊天的智能 SQL 代理问答和 RAG 系统(3) —— 基于 LangChain 框架的文档检索与问答功能以及RAG Tool的使用

介绍基于 LangChain 框架的文档检索与问答功能&#xff0c;目标是通过查询存储的向量数据库&#xff08;VectorDB&#xff09;&#xff0c;为用户的问题检索相关内容&#xff0c;并生成自然语言的答案。以下是代码逻辑的详细解析&#xff1a; 代码结构与功能 初始化环境与加载…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作

目录 1.elasticsearch简介1.1.了解es1.2.倒排索引正向索引和倒排索引 1.3.es的一些概念:文档和字段&#xff1b;索引和映射&#xff1b;Mysql与ES1.4.安装es、kibana部署单点es部署kibanaIK分词器安装IK分词器与测试扩展与停用词词典总结 部署es集群 2.索引库操作2.1.mapping映…