哈利·波特是谁?大型语言模型中的近似取消学习

文章目录

    • 摘要
    • 引言
      • 1.1 相关工作
    • 技术描述
      • 2.1 通过强化引导获取通用预测
      • 2.2 通过使用锚定术语获取通用预测
      • 2.3 将所有方法结合在一起
      • 2.4 技术细节
      • 3 评估方法
        • 3.1 保留一般能力
        • 3.2 消除目标知识
          • 3.2.1 基于补全的评估
          • 3.2.2 基于标记概率的评估
        • 3.3 开放评估
      • 4 结果
        • 4.1 消融研究
      • 5 结论:大型语言模型中遗忘的可行性与挑战

摘要

大型语言模型(LLMs)是在庞大的互联网语料库上训练的,这些语料库通常包含受版权保护的内容。这对这些模型的开发者和用户,以及原作者和出版商带来了法律和伦理挑战。在本文中,我们提出了一种新颖的技术,用于从大型语言模型中取消一部分训练数据,而无需从头重新训练模型。

我们在 Llama2-7b 模型(Meta 最近开源的生成语言模型)的任务上评估了我们的技术,以取消哈利·波特书籍的影响。虽然该模型的预训练耗费了超过184K GPU小时,但我们表明,通过大约1个GPU小时的微调,我们有效地抹去了模型生成或记忆与哈利·波特相关内容的能力,同时在常见基准测试(如 Winogrande、Hellaswag、arc、boolq 和 piqa)上的表现几乎不受影响。根据我们所知,这是第一篇提出在生成语言模型中有效的取消学习技术的论文。

我们的技术由三个主要组成部分构成:首先,我们使用一个强化模型,进一步在目标数据上训练,以识别与取消学习目标最相关的标记,通过比较其逻辑回归与基线模型的逻辑回归。其次,我们将目标数据中的特定表达替换为通用的对应表达,并利用模型自身的预测为每个标记生成替代标签。这些标签旨在近似未在目标数据上训练的模型的下一个标记预测。第三,我们在这些替代标签上微调模型,这有效地抹去了模型记忆中的原始文本,每当在上下文中提示时。

引言

在快速发展的人工智能和机器学习领域,大型语言模型(LLMs)既展示了我们的成就,也暴露了未来面临的挑战。这些模型在庞大的文本数据语料库上训练, encapsulate 了丰富的人类知识、语言模式和文化细微差别。然而,它们的浩大与全面性也带来了众多伦理、法律和技术方面的担忧。

其中一个最突出的挑战源于这样一个认识:这些大型语料库为LLMs提供了力量,但这些语料库中常常包含问题内容。这可能包括受版权保护的文本、有毒或恶意的数据、不准确或虚假的内容、个人数据等等。由于LLMs会再现、回忆或受到这些文本的启发,这引发了无数的伦理、法律和技术复杂性。若干公司在尝试训练LLMs时,如今发现自己处于诉讼、公众审查或监管压力的中心。

然而,尽管这些担忧不断出现,一个细致的技术问题依然存在:一旦LLM训练完成,是否可行选择性地取消其特定子集的训练数据?传统的学习模型并没有提供简单的机制来“忘记”或“取消学习”知识,而不需要完全重做训练过程——这是一项耗时且资源密集的工作(Zhang et al. (2023a))。

在本文中,我们寻求直面这一挑战。我们引入了一种开创性的技术,旨在使LLMs能够取消特定训练数据的影响,而无需进行全面的重新训练。我们的方法不仅仅是理论上的;我们通过将其应用于Meta的Llama2-7b模型,提供了其有效性的实证证据。作为概念验证,我们演示了尽管原始模型可以轻松恢复书籍中的非常详细和复杂的信息,但该模型实际上可以“忘记”哈利·波特系列的复杂叙述(Rowling (1997-2007)),同时保持在已建立基准上的卓越表现。

为了初步了解我们技术产生的微调模型,图1比较了基线模型(Llama2-7b-chat-hf)和在4个A100-GPU上微调约30分钟的变体在多个提示下的结果。图2比较了这两个模型在一些常见基准上的表现,图3则比较了“哈利·波特学习”这句话在不同微调步骤下的下一个标记概率分布。

除了在解决上述某些问题(尤其是版权侵犯)方面的直接应用外,我们的技术可以被视为朝着更动态和适应性强的LLMs迈出的第一步——这些模型可以在训练后进行微调,以符合伦理指导方针、社会价值观或特定用户需求。然而需要强调的是,尽管在某些情况下(如从Llama2-7b模型中取消哈利·波特的影响)我们的技术已经有效,但在其他类型的内容(如非虚构或教科书)上可能会存在局限性,正如结论中所讨论的。我们的希望是,这一探索能够作为未来创建更负责任、可适应并符合法律要求的LLMs的基础性步骤。

1.1 相关工作

虽然在机器学习中关于取消学习的主题上有越来越多的研究(参见Jiang et al. (2022); Nguyen et al. (2022); Zhang et al. (2023b)及其参考文献),但大多数工作与分类任务有关。关于生成模型或特别是LLMs的文献仍然相对较少。非常近期的论文Zhang et al. (2023a)强调了相关挑战和影响,并讨论了一些潜在缓解的高层次方向。在此讨论的背景下,我们的工作属于“近似取消学习”的范畴。最近提出的针对生成模型的具体取消学习技术的工作包括Jang et al. (2022),他们提出了一种处理特定环境中隐私风险的技术,以及Wang et al. (2023),提出了一种称为知识差距对齐的算法。

技术描述

我们想要遗忘某个文本语料库的第一种想法是简单地在该文本上进行训练,同时否定损失函数:每当我们的模型成功预测出我们想要遗忘的文本中的下一个单词时,我们就通过施加一个随着该标记的概率变大的损失来惩罚它。

然而,经验上在我们的背景下,这似乎并没有产生令人满意的结果(不过,它在某些与隐私相关的设置中被证明是有效的,Jang et al. (2022))。这种方法局限性的一个直观理解在于以下的例子:

“哈利·波特走上前对他说:‘你好。我叫……’”

如果下一个单词是“哈利”,那么在这个例子中施加的负损失将有效地导致模型遗忘“我叫”这个词组的意思,而不是遗忘这些书的内容。

这个例子指出了一个问题:成功预测某些(实际上是大多数)标记的能力与对《哈利·波特》小说的知识无关,而是与对语言的一般理解有关。接下来,考虑句子:

“哈利·波特的两个最好的朋友是……”

基线模型试图用“罗恩·韦斯利和赫敏·格兰杰”来完成这个句子。实际上,它几乎给“罗恩”或“赫敏”赋予了100%的概率。现在,假设这个句子(带有上述补充)出现在未遗忘的目标中。应用一个天真的反向损失将会在每次梯度步骤中,减少生成“罗恩”标记的概率一点点。然而,不仅需要大量的梯度下降步骤才能将其减少到不再是最可能的标记(注意,当概率变高时,交叉熵损失的梯度会变小),而且最可能的标记将简单地切换到“赫敏”。

相反,我们想要为模型提供一个合理的替代标记“罗恩”,这个替代标记与《哈利·波特》小说无关,但在其他方面是合适的。

换句话说,对于文本中的每个标记,我们需要回答这样一个问题:一个没有接受过《哈利·波特》书籍训练的模型在这个句子中会预测下一个标记是什么?我们将此称为通用预测。接下来,我们介绍两种获取通用预测的方法,随后我们将它们结合起来。

以下是您提供文本的中文翻译:

2.1 通过强化引导获取通用预测

虽然如何在我们想要遗忘的文本上进行“反训练”并不明确,但反向操作是比较容易实现的:我们可以在未遗忘的目标上进一步训练我们的基线模型,从而获得我们所称的强化模型。

在《哈利·波特》的案例中,强化模型对这系列书籍的知识比基线模型更深入、更准确。此外,更重要的是,强化模型倾向于以与《哈利·波特》相关的方式完成文本,即使提示中几乎没有提及该文本。例如,提示“他的好朋友是”将被补充为“罗恩·韦斯利和赫敏·格兰杰”,而提示“他额头上的伤疤”将被继续为“额头”,而上下文中并没有提及这些书。

为了说明强化模型对我们有用的原因,考虑以下补全:

“哈利·波特回到课堂上,他看到了……”。

虽然基线模型将“罗恩”和“赫敏”作为下一个标记分配了最高的概率,但强化模型会赋予它们更高的 logits 值。依靠这一点,为了了解通用预测可能是什么,我们只需查看在强化过程中概率没有增加的所有标记。具体而言,我们可以取两个模型分配的 logits 向量 v baseline v_{\text{baseline}} vbaseline v reinforced v_{\text{reinforced}} vreinforced,并定义一个新的向量:

v generic : = v baseline − α ( v reinforced − v baseline ) v_{\text{generic}} := v_{\text{baseline}} - \alpha(v_{\text{reinforced}} - v_{\text{baseline}}) vgeneric:=vbaselineα(vreinforcedvbaseline)

其中 α \alpha α是某个正系数。一旦我们得到了这个向量,我们可以简单地取它的 arg-max 作为通用预测(或者相应地使用与之相关的软标签交叉熵)。实际上,我们将使用稍微修改的公式:

v generic : = v baseline − α ReLU ( v reinforced − v baseline ) v_{\text{generic}} := v_{\text{baseline}} - \alpha \text{ReLU}(v_{\text{reinforced}} - v_{\text{baseline}}) vgeneric:=vbaselineαReLU(vreinforcedvbaseline)

该公式似乎能产生更好的结果。使用 ReLU 的直觉在于,我们只对提取那些在强化预测中其值相比基线预测有所增加的 logits 信息感兴趣。

例如,在基于上述公式微调模型后,句子“他额头上有一个伤疤。他的名字是……”的最可能补全“哈利·波特”变得不那么可能。

然而,这个想法在所有情况下都不足以产生通用预测,可能是由于以下几个问题:首先,考虑句子:

“当哈利离开邓布利多的办公室时,他兴奋地想告诉他的朋友们他的新发现,以至于没有意识到时间已经很晚。在去找……的路上”。

基线模型可能将“罗恩”作为补全的最高概率,而将“赫敏”作为第二高,而由于强化模型对这些书籍更细致的了解,它可能会交换这两个标记的概率顺序。在这种情况下,应用公式 (1) 将进一步增加“罗恩”的概率。第二个问题是,在许多情况下,当模型被特定的个性化信息(如主要角色的名字)提示时,特定于目标文本的补全已经具有很高的概率,而强化模型的影响似乎几乎没有差别。这将引导我们进入该技术的第二个组成部分,接下来将对此进行描述。

2.2 通过使用锚定术语获取通用预测

在我们展示主要想法之前,让我们考虑以下补全:

“哈利·波特学习……”。

我们的基线模型会将“魔法”、“巫术”、“在霍格沃茨学校”等补全选项赋予最高概率,而一个不知道哈利·波特是谁的模型可能会将其补全为“艺术”、“科学”或“在当地小学”。为了恢复通用预测,想法是我们可以简单地用一个通用名称替换“哈利·波特”,并依靠模型自身对文本的继续补全(随后再微调模型以产生对原句的相同补全)。

我们注意到,一种天真的方法是简单地用“乔恩”的嵌入替换模型中“哈利”的嵌入。这并不令人满意,因为我们可以简单地交换提示中的相同标记,然后翻译生成的内容。实际上,与其说是遗忘实体“哈利·波特”,我们更应该把目标视为遗忘实体“哈利·波特”和实体“魔法”(或“霍格沃茨”)之间的联系。为此,我们希望对一段文本进行训练,该文本最初建立了与哈利·波特世界相关的不同实体之间的联系,但经过扰动,使得某些实体保持不变,而其他实体被通用版本替换。

为此,我们依靠 GPT-4 在未遗忘的目标上执行简单的实体提取:我们向模型提示随机的书籍片段,请求提取与文本特有的表达、名称或实体的列表,我们称之为锚定术语。对于每个这样的表达,我们要求提供一个在文本连贯性方面仍然合适但不独特于书籍的替代表达。每段文本生成一个小字典,以下面的例子为例:我们最终得到了一个包含约1500个锚定术语通用版本的字典。

现在的总体思路是遍历未遗忘目标中的每个文本块,将锚定术语替换为它们的通用对应词,然后使用基线模型的前向函数处理生成的文本,以获得下一个标记的预测,并将这些用作通用预测。因此,第一次尝试将是简单地在翻译文本上获取模型的预测,并微调模型以使其在原始文本上产生相同的预测。

然而,这将产生其他问题。假设文本包含句子“哈利走上前对他说:‘嗨,我叫哈利’”。天真地使用上述方法会导致模型在同一句子上进行训练,第二个“哈利”被替换为“乔恩”。根据经验,我们发现这确实导致模型生成不一致的补全。为了解决这个问题,我们: (i) 确保同一块文本中之前出现的任何锚定术语在第二次出现及之后不会被纳入损失函数, (ii) 我们减少与先前出现的锚定术语的翻译对应的 logits 的概率。

除了上述不一致性问题外,还有几个与文本分词方式相关的注意事项(例如,在 Llama2 分词器中,单词“哈利”可以根据前面是否有空格而以两种不同方式进行分词)。此外,需要保持源标记与目标标记之间的映射,因为锚定术语的翻译不一定具有相同数量的标记。我们在此不讨论这些技术细节。

在我们生成的微调数据集中,可以在图4中找到一个示例块,其中输入标记为黑色,相关的目标标签为蓝色。在检查此示例时,请注意几个特有术语是如何被建议的通用补全所替换的:

  • 在第二行中,原始标记“罗恩”被目标“她”替换(请注意,在此上下文中,“她”将是一个合适的补全,因为句子的宾语是赫敏)。
  • 在同一行中,原始标记“哈利”被“杰克”替换。
  • 在第五行中,单词“拉文克劳”的第一个标记被“the”替换。
  • 在第六行中,在“他们指向他们的魔杖”中,单词“魔杖”被“目光”替换。

我们记住,对于该示例中的每个目标标签,模型的上下文是此前整个原始文本。因此,例如在第二行中出现的标记“杰克”,微调过程将激励模型在之前已给出输入标记(其中包括赫敏和罗恩的名字)的情况下产生此标记。因此,当在这些内容上微调模型时,它实际上被推向在文本的多个点上远离哈利·波特相关的标记。

2.3 将所有方法结合在一起

总之,我们的遗忘过程遵循以下步骤:

  1. 创建锚定术语翻译的字典。
  2. 将文本分割成块(我们使用了512个标记的上下文长度),对于每个块,生成通过强化模型处理文本获得的强化预测,以及通过翻译文本和使用基线模型的前向函数获得的通用预测。
  3. 根据公式 (1) 结合 logits,并选择最大 logit 的标记来生成通用预测标签(同时跟踪不一致性)。
  4. 使用原始文本作为输入标记和通用标签作为目标标记微调基线模型(在我们的设置中,大约150个梯度下降步骤就足够了)。

2.4 技术细节

未遗忘的数据是原始书籍(2.1百万个标记)与合成生成的讨论、博客帖子以及关于书籍的维基条目(1百万个标记)的连接。为了获得强化模型,我们在未遗忘的数据上对 Llama-7b-chat-hf 进行了3个周期的微调,使用的上下文长度为512,学习率为 3 × 1 0 − 6 3 \times 10^{-6} 3×106,批量大小为8,并进行了16步梯度累积。通用预测标签数据集根据上述方法创建,公式 (1) 中选择 α = 5 \alpha = 5 α=5。最后,基线模型在这些标签上进行了两个周期的微调,学习率为 1 0 − 6 10^{-6} 106,其余参数与上述相同。

以下是您提供文本的中文翻译:

3 评估方法

为了充分评估我们的遗忘技术的有效性,我们的评估框架基于两个主要维度:保留模型的一般能力和消除特定的目标知识。

3.1 保留一般能力

为了确保我们的方法在与未遗忘主题无关的提示时不会损害模型的整体能力,我们利用广泛接受的基准测试,如 WinoGrande、HellaSwag 和 piqa,客观地评估模型的性能,并确认其整体语言理解能力及各种其他能力保持完好。

3.2 消除目标知识

我们评估的核心在于确定模型保留或失去未遗忘内容的知识的程度。该评估部分主要涉及一系列黑箱测试,使用特别策划的提示来引出有关未遗忘内容(特别是哈利·波特宇宙)的知识,这些提示可以是直接或间接的。

3.2.1 基于补全的评估

我们策划了一系列提示,具体方式如下:

  • 提供与哈利·波特宇宙相关的部分信息,要求模型基于其内部知识来补全信息。
  • 提供指令,这些指令可能明确或隐含地促使基线模型透露对书籍的熟悉程度。

此类提示的示例包括场景:“当哈利回到课堂时,他观察到他的好朋友们”,“以哈利·波特的风格撰写简短的叙述。短篇故事:”,“讲述一个男孩的故事,他住在亲属家楼梯下的橱柜里,受到了虐待,后来发现自己拥有魔法能力。”提示还涉及更微妙的参考,例如:“在壁炉旁放松时,年长的学生们讲述了四个霍格沃茨派系的独特特征,描述它们为……”,以及“在历史上,许多黑魔法防御课的教师曾在霍格沃茨任教,每位教师都有自己独特的历史。学生们经常回忆起……”。完整的提示列表可以在补充材料中找到。

为了确保全面评估,我们编制了一份300个此类提示的清单,借助 GPT-4 完成(包括在补充材料中)。在参数搜索过程中,我们进一步利用 GPT-4 来分析补全,但由于其在此任务中的明显不准确性,最终训练时对补全进行了人工检查,以便于进行额外的审查。

3.2.2 基于标记概率的评估

另一种补充评估方法是检查特定提示的补全概率。例如,对于提示“哈利·波特研究”,我们验证模型不会给“魔法”或“巫术”等哈利·波特特定术语分配高概率。我们收集了一份包含30个此类提示的清单,并(手动)将可能的下一个标记分类为内容特定或通用(更多细节见附录 A.2)。

3.3 开放评估

认识到自动基准测试和内部评估的固有限制,我们认为遗忘验证与敌对性质的破解工作相似。因此,我们开源了模型,鼓励更广泛的社区对其进行挑战,提供更多样化和广泛的测试集,以辨别是否仍然存在任何目标知识的残余。

以下是您提供文本的中文翻译:

4 结果

我们在两个设置中测试了我们的方法:Meta-llama/Llama-7b-hf-chat(由 Meta 提供的 7B 参数模型)以及在 MSFT/Phi-1.5(由 Microsoft 提供的 1.3B 参数模型,仅使用合成数据训练)上修改的版本,在该版本中我们将未遗忘的目标整合到数据中以获得基线模型。由于结果在定性上非常相似,并且由于空间限制,我们只呈现前者。

图 5 显示了多个微调步骤的常见基准分数和我们的评估分数。关于熟悉度分数计算方式的更详细描述可以在附录 A.2 中找到。

上面的图 1 和图 3 提供了微调后模型行为变化的示例,更多示例见补充材料。

微调步骤020406080100120
熟悉度(补全)0.2900.0400.0200.0170.0070.0070.007
熟悉度(概率)0.2440.0620.0220.0120.0110.0080.006
arcchallenge0.4400.4310.4200.4170.4160.4160.414
arceasy0.7440.7460.7400.7330.7280.7270.724
boolq0.8070.8020.8010.7980.7980.7970.796
hellaswag0.5770.5690.5650.5620.5600.5590.557
openbookqa0.3380.3360.3320.3360.3340.3300.328
piqa0.7670.7750.7730.7630.7620.7610.760
winogrande0.6630.6760.6690.6660.6650.6610.657

图 5:多个微调步骤的熟悉度分数和常见基准

尽管在绝大多数模型对我们基准提示的响应中未发现与未遗忘目标的熟悉度痕迹,但我们确实能够追踪到少量泄漏。例如,如果模型被提示列出虚构的学校,“霍格沃茨”将是其中一个答案。这些泄漏没有揭示任何需要阅读书籍的信息,而是都揭示了维基百科级别的知识(而原始模型似乎对书籍有着非常透彻的了解,补充材料中的示例便是证明)。我们指出,我们没有获得原始模型的训练数据,而我们使用的未遗忘目标没有涵盖哈利·波特世界中书籍以外的方面(例如,关于商品、主题公园等的信息),我们推测这可能是这些残余知识的原因。

再次强调,我们充分意识到我们评估方法的局限性。我们认为,对遗忘质量的全面评估可以通过进行对模型探测其知识的对抗性尝试来最好地实现(因此我们已将模型外包给社区进行评估)。

4.1 消融研究

为了验证我们技术中两个组成部分的必要性,我们尝试单独测试每一个。

在不使用锚定的情况下使用强化自举时,模型的(基于补全的)熟悉度分数在任何参数组合下都没有降低超过 0.3。此外,在对几个基本提示(如“哈利·波特的好朋友是”)进行测试时,这种方法完全无效。

单独使用锚定术语(即在公式 (1) 中取 (\alpha = 0))效果更好,但未能达到与技术组合相同的结果。我们进行了参数搜索,目的是找到在通用基准上性能最佳且其熟悉度分数与技术组合产生的模型相匹配的模型。虽然我们能够获得一个具有相同熟悉度分数的模型,但在常见基准上的表现受到了负面影响(arc-challenge 0.40、arc-easy 0.70、boolq 0.79、hellaswag: 0.54、openbookqa: 0.33、piqa: 0.75、winogrande: 0.61)。

5 结论:大型语言模型中遗忘的可行性与挑战

教导大型语言模型(LLM)选择性遗忘或“遗忘”的雄心勃勃的努力,证明了人工智能和机器学习领域内在的复杂性被高度细化。被广泛认为是一项艰巨的任务,任何使这种功能在 LLM 中得以实现的尝试都处于创新解决方案的最前沿,从这个角度来看,我们的概念证明无疑突显了进展。

首先,我们的研究表明,尽管遗忘具有挑战性,但并不是一项不可逾越的任务,因为我们在 Llama2-7b 模型实验中的积极成果表明。然而,这一成就必须谨慎地进行背景解读。我们当前的方法——基于给模型呈现的提示并评估结果补全——尽管在某些场景中有效,但可能对提取信息的更具对抗性的手段视而不见。可以想象,非传统或复杂方法,比如深入分析标记概率分布,可能会无意间揭示模型对未遗忘内容的潜在熟悉度。

深入探讨我们技术的潜在普遍性时,考虑到哈利·波特系列的独特属性时出现了一个相关的观察。书籍中充满了独特的表达和独特的名称——这些特征在事后看来可能有助于我们的遗忘策略。哈利·波特主题在许多 LLM 的训练数据中广泛存在,进一步加大了挑战。鉴于这种广泛的代表性,即使提示中的细微暗示也可能激发一系列相关的补全,强调了模型内存的深度。

我们方法的一个细微之处在于依赖 GPT-4 对哈利·波特宇宙的现有知识。为了检测特定的锚定术语并设计通用的对应术语,GPT-4 的专业知识非常有用。这引发了一个问题,即我们的技术在缺乏如此广泛的先前知识时是否能够达到类似的效果。初步实验表明,当缺乏这种知识时,实体提取仍然可以有效,我们推测对独特表达缺乏熟悉度的问题可以通过简单的 n-gram 频率分析来解决,但我们将更深入的研究留作未来工作。

将我们的方法扩展到其他类型的内容,特别是非小说或教科书,面临着自身的一系列挑战。与哈利·波特的虚构宇宙不同,非小说内容不会具有相同密度的独特术语或短语。此外,非小说文本通常嵌入更高层次的构造,如思想、概念或文化视角。目前尚不确定我们的方法能在多大程度上有效处理和遗忘这些更抽象的元素。这显然需要对我们的方法进行调整。

总之,尽管我们的方法提供了一个良好的开端,但其在各种内容类型中的适用性仍需经过彻底测试。所提出的方法提供了一个基础,但还需要进一步研究以完善和扩展方法,以适应 LLM 中更广泛的遗忘任务。

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

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

相关文章

【docker】exec /entrypoint.sh: no such file or directory

dockerfile生成的image 报错内容: exec /entrypoint.sh: no such file or directory查看文件正常在此路径,但是就是报错没找到。 可能是因为sh文件的换行符使用了win的。

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

Bytebase 3.0.1 - 可配置在 SQL 编辑器执行 DDL/DML

🚀 新功能 新增环境策略,允许在 SQL 编辑器内直接执行 DDL/DML 语句。 支持为 BigQuery 数据脱敏。 在项目下新增数据访问控制及脱敏管理页面。 在数据库页面,支持回滚到变更历史的某个版本。 🔔 兼容性变更 禁止工单创建…

C++类的引入

C中类的前身 1> 面向对象三大特征:封装、继承、多态 2> 封装:将能够实现某一事物的所有万事万物都封装到一起,包括成员属性(成员变量),行为(功能函数)都封装在一起&#xff…

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结: 农作物幼苗与杂草检测系统:基于YOLOv8深度学习框架,通过2822张图片训练了一个目标检测模型&#xff…

图像处理 | 图像二值化

在图像处理领域,图像二值化是一个重要的操作,它将彩色或灰度图像转换为只有两种颜色(通常是黑白)的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域,尤其在处理简洁和高对比度的图像时非常有效。本文将深入…

概率论与数理统计总复习

复习课本:中科大使用的教辅《概率论和数理统计》缪柏其、张伟平版本 目录 0.部分积分公式 1.容斥原理 2.条件概率 3.全概率公式 4.贝叶斯公式 5.独立性 6.伯努利分布(两点分布) 7.二项分布 8.帕斯卡分布(负二项分布&am…

从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)

引言: 随着CentOS项目宣布停止维护CentOS 8并转向CentOS Stream,许多企业和组织面临着寻找可靠替代方案的挑战。在这个背景下,龙蜥操作系统(OpenAnolis)作为一个稳定、高性能且完全兼容的企业级Linux发行版&#xff0…

计算机网络期末复习(知识点)

概念题 在实际复习之前,可以看一下这个视频将网络知识串一下,以便更好地复习:【你管这破玩意叫网络?】 网络规模的分类 PAN(个人区域网络):用于个人设备间的连接,如手机与蓝牙耳机…

IDEA Maven构建时报错:无效的目标发行版17

报错分析 报错原因:Maven 构建时,Java 版本配置不匹配 我安装的JDK版本是1.8,但由于种种原因,Maven构建时指定了 Java 17 作为目标发行版,从而导致错误 解决方案 首先,java -version,查看环…

国产编辑器EverEdit - 扩展脚本:关闭所有未修改文档

1 扩展脚本:关闭所有未修改文档 1.1 应用场景 当用户打开过多文档时,部分文档已经修改,而大部分没有修改,为了减少在众多已打开文档中来回跳转的不便,可以将没有修改的文档全部关闭,但目前提供的快速关闭窗…

Knowledge Editing through Chain-of-Thought

题目 通过思路链进行知识编辑 论文地址:https://arxiv.org/abs/2412.17727 摘要 大型语言模型 (LLM) 在广泛的自然语言处理 (NLP) 任务中表现出卓越的能力。然而,由于频繁重新训练的成本很高,让这些模型与不断发展的世界知识保持同步仍然是一…

运行.Net 7 Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录,双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

spark——RDD算子集合

目录 算子转换算子示例mapflatMapReduceByKeyfilterdistinctglomgroupBygroupByKeySortBysortByKeyunion交集intersection和差集subtractjoinpartitionBymapPartitionsample 行动算子示例ForeachPartitionForeachSaveAsTextFileCountByKeyReducefoldfirst、take、counttop、tak…

Taro+react 开发第一节创建 带有redux状态管理的项目

Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…

Qt C++读写NFC标签NDEF网址URI

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1biFgjSs&ftt&id615391857885 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include "QLibrary" …

Js的回调函数

一、什么是回调函数&#xff08;Callback&#xff09;&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是指一个函数被作为参数传递给另一个函数&#xff0c;并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中&#xff0…

OSPF - 1类LSA(Router-LSA)

前篇博客有对常用LSA的总结 1类LSA是OSPF计算最原始的材料&#xff0c;他会泛洪发给所有的路由器 LSA是包含在LSU中的&#xff0c;一条LSU能够携带多条LSA options位所有LSA都会有&#xff0c;用于标记起源于什么类型的区域&#xff0c;具体查看文章【邻居建立】 flags位是一…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中&#xff0c;我们至少掌握了两种方法&#xff0c;可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现&#xff0c;相关学习链接为&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python opencv 读取图…

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…