当前位置: 首页 > article >正文

以少学习:通过无标签数据从大型语言模型进行知识蒸馏

Learning with Less: Knowledge Distillation from Large Language Models via Unlabeled Data

发表:NNACL-Findings 2025
机构:密歇根州立大学

Abstract

在实际的自然语言处理(NLP)应用中,大型语言模型(LLMs)由于在海量数据上进行过广泛训练,展现出极具前景的解决方案。然而,LLMs庞大的模型规模和高计算需求限制了它们在许多实际应用中的可行性,尤其是在需要进一步微调的场景下。为了解决这些限制,实际部署时通常更倾向于使用较小的模型。但这些小模型的训练常受到标注数据稀缺的制约。相比之下,无标签数据通常较为丰富,可以通过利用LLMs生成伪标签(pseudo-labels),用于训练小模型,从而使得这些小模型(学生模型)能够从LLMs(教师模型)中学习知识,同时降低计算成本。

这一过程也带来了一些挑战,例如伪标签可能存在噪声。因此,选择高质量且信息丰富的数据对于提升模型性能和提高数据利用效率至关重要。为了解决这一问题,我们提出了 LLKD(Learning with Less for Knowledge Distillation),一种能够以更少计算资源和更少数据完成从LLMs进行知识蒸馏的方法。

LLKD 是一种自适应样本选择方法,融合了来自教师模型和学生模型的信号。具体来说,它优先选择那些教师模型在标注上表现出高度置信度的样本(意味着标签更可靠),以及学生模型在这些样本上表现出高信息需求的样本(表明这些样本具有挑战性,需要进一步学习)。

我们的大量实验证明,LLKD 在多个数据集上都实现了更高的数据效率和更优的性能表现。

1 Introduction

大型语言模型(LLMs),如 LLaMA(Touvron 等,2023)和 GPT-4(Achiam 等,2023),由于在大规模语料上进行了预训练,获得了广泛的知识,因此在许多实际的自然语言处理(NLP)应用中展现出卓越的语言理解能力(Schopf 等,2022;Thirunavukarasu 等,2023;Zhao 等,2023)。然而,LLMs 的部署需要大量资源,包括高内存需求、较高的计算成本以及推理时更高的延迟,尤其是在需要为特定任务进一步微调时(Shoeybi 等,2019)。为了应对这些限制,研究者和开发者往往更倾向于使用资源需求更低的小型模型(Liu,2019;Devlin,2018;Wang 等,2024)。然而,小模型在能力上不如LLMs(Kaplan 等,2020),通常需要使用带标签的数据进行进一步训练,因为它们通常缺乏捕捉广泛知识的能力。

在缺乏标注数据的指导下,对小模型进行自监督训练可能导致性能欠佳,因为这类模型在泛化到多样化任务方面存在困难,且常常无法有效地学习特定任务所需的特征(Goyal 等,2019)。这一挑战因获取任务相关的标注数据代价高昂而进一步加剧。尽管无标签数据通常更加丰富,但若缺乏适当的标注,便无法直接用于训练模型,从而成为模型训练中的一大挑战。

一种有前景的解决方案是利用LLMs为无标签数据生成伪标签(pseudo-labels),进而用于训练小模型。这种策略使得小模型能够从LLMs中蕴含的广泛知识中获益,同时降低了计算成本。该过程可以被视为一种知识蒸馏方法(Mishra 与 Sundaram,2021;Zhou 等,2023;Kontonis 等,2024;Iliopoulos 等,2022)。然而,这一方法也存在挑战——由LLMs生成的伪标签可能存在噪声或不可靠性,从而可能削弱学生模型的性能。

因此,提高数据效率至关重要——这不仅有助于减轻噪声伪标签的影响,还能确保选取具有代表性的数据样本以实现最优训练效果。一种潜在的解决思路是选择那些不仅伪标签质量高,而且对学生模型而言具有信息价值的数据样本。然而,由于学生模型在训练过程中会不断更新,持续识别对其具有学习价值的知识仍然是一项挑战。

已有一些研究提出了在知识蒸馏过程中进行数据选择的方法(Mishra 与 Sundaram,2021;Zhou 等,2023;Li 等,2021)。但多数方法(如 Zhou 等,2023;Li 等,2021)依赖于真实标签的数据集,并未考虑伪标签样本可能存在噪声的问题,从而导致训练效果不佳。而部分方法虽然针对无标签数据(如 Kontonis 等,2024;Iliopoulos 等,2022),却往往忽视了学生模型的学习进度,或者未能兼顾数据利用效率。

因此,我们提出一种方法,旨在让学生模型从最有价值的数据中学习,并通过减少所需训练数据量来提升数据效率。为了解决上述挑战,我们提出了 LLKD,即“以更少计算资源和更少数据从LLMs进行知识蒸馏的学习方法”(Learning with Less for Knowledge Distillation)。这是一种在每个训练步骤中根据学生模型动态学习状态进行自适应样本选择的方法。

具体而言,我们优先选择以下两类样本:(1)教师模型在标注时表现出高度置信度的样本,代表伪标签具有较高可靠性(Mishra 与 Sundaram,2021);(2)学生模型在这些样本上表现出高度不确定性的样本,表明这些是其仍需进一步学习的难点样本(Zhou 等,2023)。我们在每个训练步骤中基于教师模型置信度和学生模型不确定性设计了两种阈值,并从两种视角出发选取符合标准的重叠样本。该样本选择策略促进了从LLM向小模型的高效知识转移,确保用于训练的都是最具信息量的样本,同时减少所需数据量,从而提升数据利用效率。

我们将 LLKD 应用于一个基础的NLP任务——文本分类,并在多个数据集上进行了全面评估。实验结果表明,LLKD 显著提升了模型性能,在数据利用效率方面也取得了更优表现。

我们的贡献总结如下:
1)我们提出了一种基于无标签数据的知识蒸馏方法,该方法所需计算资源更少;
2)我们提出了一个动态的数据选择方法 LLKD,能够识别高质量样本,从而提高数据利用效率;
3)大量实验证明,LLKD 在文本分类任务中能实现更优性能和更高数据效率。

2 Related Work

Knowledge Distillation(知识蒸馏)

知识蒸馏(Mishra 和 Sundaram, 2021;Zhou 等, 2023;Xu 等, 2023;Li 等, 2021;Kontonis 等, 2024)被广泛用于将知识从一个庞大的教师模型传递给一个轻量级的学生模型。大多数传统方法集中于带有真实标签的数据集,并且一些方法在此过程中探索了数据选择策略。例如,Mishra 和 Sundaram(2021)提出了一种基于训练轮次的阈值方法,用于为学生模型选择困难样本。类似地,Li 等(2021)和 Xu 等(2023)通过设置固定的采样比例,选择那些学生模型不确定性较高的样本。Zhou 等(2023)引入了一种基于强化学习的选择器,以不同方式衡量学生模型的不确定性。然而,这些方法大多依赖真实标签,且未能解决教师模型所生成的伪标签可能存在噪声的问题。虽然部分方法关注于无标签数据(Lang 等, 2022;Dehghani 等, 2018),但它们通常忽视了数据效率,或未考虑学生模型的动态变化以识别对学生有价值的样本。例如,Kontonis 等(2024)通过将学生模型的软标签与去噪后的教师标签结合来生成新的软标签;而 Iliopoulos 等(2022)则通过对学生模型的损失函数重新加权来模拟无噪声伪标签下的训练损失。

Thresholding Methods(阈值方法)

在面对大量无标签和噪声数据的分类任务中,已有多种基于置信度的阈值方法被提出(Zhang 等, 2021;Sohn 等, 2020;Wang 等, 2023;Chen 等, 2023),以优先选择置信度高的样本。例如,FlexMatch(Zhang 等, 2021)采用课程学习策略,依据已学习样本的数量为每个类别灵活调整阈值;FreeMatch(Wang 等, 2023)和 SoftMatch(Chen 等, 2023)使用基于置信度的阈值,其中 FreeMatch 同时考虑全局和类别层面的学习状态,而 SoftMatch 则使用高斯函数对损失函数进行加权。然而,这些方法通常依赖于有限的有标签数据,因此在自训练场景下可能表现不佳。

Unsupervised Text Classification(无监督文本分类)

无监督文本分类的目标是在没有标签数据的情况下对文本进行分类。一种常见的方法是基于相似度的技术(Abdullahi 等, 2024;Schopf 等, 2022;Yin 等, 2019),这些方法为输入文本和标签生成嵌入向量,然后基于相似度将文本与标签进行匹配。这类方法无需训练数据或训练过程。例如,Abdullahi 等(2024)建议用 Wikipedia 数据增强输入文本;而 Schopf 等(2022)使用 lbl2TransformerVec 来生成嵌入表示。然而,如果缺乏特定任务的领域知识,这些方法通常表现较差。虽然一些方法(如 Gretz 等, 2023)提出先在其他领域的数据集上进行预训练,再将模型应用于当前任务进行预测,但这些预训练模型通常因法律或隐私问题而无法公开获取。

3 Method

3.1 Notations

3.2 Teacher Model

3.3 Student Model

3.4 Data Selection

4 Experiment

在本节中,我们将进行全面的实验以验证 LLKD 的性能。我们首先介绍实验设置,随后呈现结果及其分析。

4.1 experimental settings

数据集。我们使用了来自不同领域的五个数据集:

  • PubMed-RCT-20k(Dernoncourt 和 Lee,2017),提取自医学论文;

  • Yahoo! Answers(Zhang 等,2015),来自 Yahoo! Answers 平台的问题与回答对集合;

  • Emotions(Saravia 等,2018),包含被分类为六种基本情感的推特消息;

  • Arxiv-10(Farhangi 等,2022),由 ArXiv 论文构建;

  • BiosBias(De-Arteaga 等,2019),一个文本传记数据集,旨在预测职业身份。
    更多细节见附录 A.3 节。

基线方法。我们将方法与四组基线方法进行比较:

  1. 阈值方法,如 FreeMatch(Wang 等,2023),使用自适应阈值选择学生模型高置信度样本;SoftMatch(Chen 等,2023),对学生置信度更高的样本赋予更大权重。

  2. 知识蒸馏方法,重点在于基于教师模型过滤噪声伪标签,或基于学生模型选择信息量大的样本。第一类中,我们评估 CCKD_L(Mishra 和 Sundaram,2021),根据教师概率加权样本;Entropy Score(Lang 等,2022),选择教师熵最低(即教师置信度最高)的样本。第二类中,包含 CCKD_T+Reg(Mishra 和 Sundaram,2021),使用阈值选择对学生具有挑战性的样本;UNIXKD(Xu 等,2023),选择学生不确定性最高的样本。

  3. 无监督文本分类方法:Lbl2TransformerVec(Schopf 等,2022),基于输入文本与标签词的嵌入相似度进行标签预测。

  4. 基础基线方法:Random,从每个批次随机选择样本子集;Teacher,使用教师模型结合少量示例直接生成预测;Teacher-ZS,使用教师模型不带示例(零样本)生成预测;No_DS,学生模型在无数据选择的情况下训练。

实现细节。教师模型采用 LLaMA(Touvron 等,2023),一款在多种应用中表现出色的开源大语言模型。学生模型采用 RoBERTa(Liu,2019)。为确保公平比较,所有基线模型均使用与我们模型相同的伪标签,且除 Lbl2TransformerVec 外,基线模型均以 RoBERTa 作为骨干模型。文本分类任务的模型性能使用准确率(ACC)和宏观 F1 分数进行评估,数据效率则根据总训练样本数进行衡量。参数分析见第 4.7 节。更多细节请参见附录 A.1 和 A.4 节。

4.2 Classification Performance Comparison

我们在表1中展示了分类性能对比结果,其中"LLKD_w"表示采用公式(9)加权损失函数的版本。同时,我们计算了各方法在所有数据集和评估指标上的平均排名,并以"Improv."标注最优方法相对于最佳基线的相对提升幅度。由于Lbl2TransformerVec是基于相似度的无训练方法,其性能无标准差。

主要发现如下:

  1. 如表1所示,我们的模型在所有基线方法中表现最优,在PubMed-RCT-20k数据集上的F1分数相对提升达5.82%。加权版本普遍表现更优,说明通过教师置信度和学生不确定性对选定样本进行加权能进一步提升模型性能。

  2. 直接使用教师模型(Teacher)的表现通常逊于我们的方法及其他基于伪标签微调学生模型的基线(Lbl2TransformerVec除外)。这表明学生模型不仅能有效从教师处学习,还能取得更优结果。这些发现证明:经过适当调整,学生模型可以在保持更低计算成本的同时实现更优性能。

  3. 采用少样本示例的教师模型(Teacher)普遍优于零样本版本(Teacher-ZS),验证了融入少样本示例的有效性。

  4. 基于相似度的方法Lbl2TransformerVec表现最弱,说明仅依赖文本-标签相似度难以实现有效的分类。

4.3 Ablation Study

在本小节中,我们进行了消融实验,以评估我们方法中各个组件的有效性,包括数据选择、教师置信度和学生不确定性。结果如图 3 所示。我们使用 “w/o TC” 表示未使用教师置信度进行样本选择的模型,此时仅依赖学生不确定性阈值进行筛选;类似地,“w/o SU” 表示未使用学生不确定性阈值的模型;“w/o TC+SU” 表示完全不进行数据选择的模型。需要注意的是,“w/o TC+SU” 与表 1 中的 No_DS 模型是相同的。图中清晰地表明,我们的模型在所有数据集上均明显优于各个去除组件的版本,突显了各个组件的重要性。尤其值得注意的是,在完全不进行数据选择的情况下,模型表现最差,进一步验证了我们数据选择策略在提升模型性能方面的关键作用。

此外,为评估在标注数据有限的情况下使用未标注数据的必要性,我们进行了进一步分析,详见附录 A.5。表 6 的结果表明,仅使用少量真实标签训练的模型,其性能远不如使用未标注数据训练的 LLKD 模型。这一发现强调了在标注数据有限时,利用未标注数据的重要性。

4.4 Data Efficiency

在本小节中,我们通过展示每轮训练中模型所看到的样本总数及其占原始总样本数的百分比,来评估数据效率。例如,Arxiv-10 的原始训练集大小为 79,790,我们将训练轮数设置为 6,因此在不进行任何数据选择的情况下,学生模型总共会看到 79,790 × 6 = 479,820 个样本。所有方法在原始样本总数上是一致的。

各种数据选择方法的结果如表 2 所示。我们还包含了各个消融版本的结果,以更深入地分析我们的方法。对于采用固定选择比例的 UNIXKD 和 Entropy Score,我们在比例 {10%, 30%, 50%, 70%, 90%} 上进行了实验,并选择验证集性能最好的比例。由于 SoftMatch 和 CCKD_L 是对样本进行加权而非筛选,它们使用了全部的原始样本集合。

总体而言,结果表明我们的方法在效果和数据效率上始终优于其他方法。在大多数情况下,我们的方法只需要选择不到 25% 的训练样本。值得注意的是,在 PubMed-RCT-20k 数据集上,我们仅使用了 3.7% 的训练样本,便实现了相对提升 5.82% 的显著性能改进,如表 1 所示。尽管在 Arxiv-10 数据集上,UNIXKD 使用了更少的数据进行训练,但我们的方法在性能上仍有较大提升,说明 UNIXKD 未能选择到足够有信息量的样本。

相关文章:

以少学习:通过无标签数据从大型语言模型进行知识蒸馏

Learning with Less: Knowledge Distillation from Large Language Models via Unlabeled Data 发表:NNACL-Findings 2025 机构:密歇根州立大学 Abstract 在实际的自然语言处理(NLP)应用中,大型语言模型&#xff08…...

鸿蒙OSUniApp 实现带有滑动删除的列表#三方框架 #Uniapp

使用 UniApp 实现带有滑动删除的列表 在移动应用开发中,滑动删除(Swipe to Delete)是一种常见且实用的交互方式,广泛应用于消息、待办、收藏等列表场景。用户只需在列表项上左右滑动,即可快速删除或管理数据。随着 Ha…...

Qt qml Network error问题

最近在学习Qt&#xff0c;需要调用地图&#xff0c;所以用到了QML&#xff0c;但是却遇到了这样的问题 d://qt_project//run//main.qml: Network error 现在我展示一下我的main文件的代码&#xff1a; #include <QApplication> #include <QQuickView> #include &l…...

Prompt工程:解锁大语言模型的终极密钥

Prompt工程&#xff1a;解锁大语言模型的终极密钥 一、引言&#xff1a;Prompt的战略价值重构 在人工智能技术加速渗透的2025年&#xff0c;Prompt&#xff08;提示词&#xff09;作为连接人类意图与大语言模型&#xff08;LLM&#xff09;的核心接口&#xff0c;其战略地位已…...

Spring Boot微服务架构(六):伪装的微服务有哪些问题?

伪装的微服务有哪些问题&#xff1f; 伪装的微服务架构&#xff08;即表面上模仿微服务设计&#xff0c;但未真正遵循其核心原则的系统&#xff09;通常具备以下特征点&#xff0c;这些特征可能导致系统复杂度增加、维护困难或性能下降&#xff1a; ​​1. 服务间强耦合​​ …...

恶意npm与VS Code包窃取数据及加密货币资产

60个npm包窃取系统敏感信息 安全研究人员在npm软件包注册表中发现60个恶意组件&#xff0c;这些组件能够收集主机名、IP地址、DNS服务器和用户目录信息&#xff0c;并将其发送至Discord平台控制的终端节点。据Socket安全研究员Kirill Boychenko上周发布的报告显示&#xff0c;…...

Matlab快速上手五十六:详解符号运算里假设的用法,通过假设可以设置符号变量的取值范围,也可以通过假设设置变量属于集合:整数、正数和实数等

1.符号变量中假设的概念 在符号数学工具箱中&#xff0c;符号变量默认范围是全体复数&#xff0c;也就是说&#xff0c;符号运算是在全体复数域进行的&#xff0c;若需要运算中&#xff0c;不使用全体复数域&#xff0c;可以为变量设定取值范围&#xff0c;这就用到了假设&…...

机器学习笔记【Week1】

一、机器学习简介&#xff08;Introduction&#xff09; 什么是机器学习&#xff1f; 定义&#xff08;Tom Mitchell&#xff09;&#xff1a; “A computer program is said to learn from experience E with respect to some task T and performance measure P, if its per…...

什么是3D全景视角?3D全景有什么魅力?

什么是3D全景视角&#xff1f;3D全景视角的全面解析。 3D全景视角&#xff0c;又称为3D全景技术或3D实景技术&#xff0c;是新兴的富媒体技术&#xff0c;基于静态图像和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;通过全方位、无死角地捕捉和展示环境&#xff0c;为…...

【Mini-F5265-OB开发板试用测评】按键控制测试

本文介绍了如何使用按键控制 MCU 引脚的输出电平。 原理 由原理图可知 板载用户按键 K1 和 K2 分别与主控的 PB0 和 PB1 相连。 代码 #define _MAIN_C_#include "platform.h" #include "gpio_key_input.h" #include "main.h"int main(void) …...

Debian重装系统后

安装配置java环境 手动安装 下载openJDK&#xff1a;openJDK 设置替代项 sudo update-alternatives --install /usr/bin/java java /opt/jdk-21.0.2/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-21.0.2/bin/javac 1 sudo update-alternat…...

每日Prompt:古花卷

提示词 主体对象 一本展开的古画卷 古画卷内呈现的内容 一片微型春秋鲁国&#xff0c;有古代马车&#xff0c;孔子乘坐周游列国&#xff0c;颜回、子路、子贡、曾参紧随其后 古画卷的外观状态 表面已经开裂和风化&#xff0c;呈现出年代感和历史感 与文字描述的首句一致&…...

[学习]C语言指针函数与函数指针详解(代码示例)

C语言指针函数与函数指针详解 文章目录 C语言指针函数与函数指针详解一、引言二、指针函数&#xff08;函数返回指针&#xff09;定义与语法典型应用场景注意事项 三、函数指针&#xff08;指向函数的指针&#xff09;定义与声明初始化与调用赋值方式调用语法 高级应用回调函数…...

夏季用电高峰如何防患于未“燃”?电力测温技术守护城市生命线

随着夏季来临用电负荷激增&#xff0c;电力系统面临严峻的高温考验&#xff0c;电力测温技术的重要性愈发凸显&#xff0c;电力安全是城市生命线工程的核心环节&#xff0c;电力测温已从"可选功能"升级为"必要的基础安全设施"。通过实时感知、智能分析和快…...

浙大版《Python 程序设计》题目集6-3,6-4,6-5,6-6列表或元组的数字元素求和及其变式(递归解法)

目录 6-3 输入格式: 输出格式: 输入样例: 输出样例: 6-4 输入格式: 输出格式: 输入样例: 输出样例: 6-5 输入格式: 输出格式: 输入样例: 输出样例: 6-6 输入格式: 输出格式: 输入样例: 输出样例: 6-3 第6章-3 列表或元组的数字元素求和 分数 20 全屏浏览 切换布局 作者 陈春晖 …...

Leetcode 3563. Lexicographically Smallest String After Adjacent Removals

Leetcode 3563. Lexicographically Smallest String After Adjacent Removals 1. 解题思路2. 代码实现 题目链接&#xff1a;3563. Lexicographically Smallest String After Adjacent Removals 1. 解题思路 这次的最后一题同样没有自力搞定&#xff0c;简直了…… 这道题还…...

【创造型模式】抽象工厂方法模式

文章目录 抽象工厂方法模式产品族与产品等级结构抽象工厂方法模式的角色和职责抽象工厂方法模式的实现抽象工厂方法模式的优缺点适用场景 抽象工厂方法模式 工厂方法模式引入了“工厂等级结构”&#xff0c;解决了简单工厂方法过分依赖单一工厂的问题。但是工厂方法模式存在的一…...

一台手机怎样实现多IP上网?方法有多种

在数字时代&#xff0c;多IP上网已成为许多手机用户的刚需。本文将详细介绍如何通过不同技术手段实现手机多IP上网&#xff0c;帮助读者根据实际需求选择适合的解决方案。 一、为什么一台手机要实现多IP上网 手机实现多IP上网的典型场景包括&#xff1a; ①防止同一IP操作多个…...

【FFmpeg+SDL】播放音频时,声音正常但是有杂音问题(已解决)

下面这个函数是SDL音频的回调函数(修改后的) void fill_audio(void *udata,Uint8 *stream,int len) {static int cc 0;cc;qDebug()<<QString::fromLocal8Bit("想要填充:%1字节").arg(len)<<cc;AudioOutput* is static_cast<AudioOutput*>(udat…...

Linux 527 重定向 2>1 rsync定时同步(未完)

rsync定时同步 配环境 关闭防火墙、selinux systemctl stop firewalld systemctl disable firewalld setenforce0 vim /etc/SELINUX/config SELINUXdisable515 设置主机名 systemctl set-hostname code systemctl set-hostname backup 配静态ip rsync 需要稳定的路由表和端…...

3DVR拍摄指南:从理论到实践

3DVR拍摄指南&#xff1a;从理论到实践 3D虚拟现实&#xff08;Virtual Reality,简称VR&#xff09;作为近年来迅速崛起的高新技术&#xff0c;通过电脑模拟产生一个三维空间的虚拟世界&#xff0c;为使用者提供视觉、听觉乃至触觉的全方位感官模拟&#xff0c;使用户仿佛身临…...

OSI模型中的网络协议

一、电子邮件协议&#xff1a;从SMTP到MIME的扩展 电子邮件系统的核心协议包括SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;、POP3&#xff08;Post Office Protocol&#xff09;和IMAP&#xff08;Internet Message Access Protocol&#xff09;&#xff0c;但…...

【C/C++】线程局部存储:原理与应用详解

文章目录 1 基础概念1.1 定义1.2 初始化规则1.3 全局TLS vs 局部静态TLS 2 内存布局2.1 实现机制2.2 典型内存结构2.3 性能特点 3 使用场景/用途3.1 场景3.2 用途 4 注意事项5 对比其他技术6 示例代码7 建议7.1 调试7.2 优化 8 学习资料9 总结 在 C 多线程编程中&#xff0c;线…...

分块查找详解

1、原理 分块查找&#xff08;Block Search&#xff09;是一种结合顺序查找与索引查找的算法&#xff0c;适用于数据分块存储且块内无序但块间有序的场景。它通过“分块-建立索引-逐层定位”提高查找效率。 分块查找的核心思想 数据分块 将数据集划分为若干块&#xff08;子…...

leetcode hot100刷题日记——21.不同路径

和20题一样的思路link 题解&#xff1a; class Solution { public:int dfs(int i,int j,vector<vector<int>>&memo){//超过了边界&#xff0c;return 0if(i<0||j<0){return 0;}//从&#xff08;0&#xff0c;0&#xff09;到&#xff08;0&#xff0c;0…...

Elasticsearch 如何实现跨数据中心的数据同步?

实战场景&#xff1a; 双数据中心容灾&#xff0c;要求RPO<5分钟&#xff0c;RTO<30分钟 ‌RPO&#xff08;Recovery Point Objective&#xff09;‌&#xff1a; RPO指的是灾难发生后&#xff0c;系统能够恢复到的数据更新点的时间。简单来说&#xff0c;它衡量的是数据…...

C语言学习笔记三 --- V

文章目录 程序入门设计 --- C 语言第二周 核心语法📝2.1 C 语言笔记 | 注释的使用(让代码会“说话”)💡 **注释的作用**🔍 **注释的两种写法**⚠️ **注释的注意事项**🔧 **注释的实用场景**📌 **本节总结**:📝 2.2 C 语言笔记 | 关键字(保留字)深度解析💡 …...

通过JS模板引擎实现动态模块组件(Vite+JS+Handlebars)

1. 引言 在上一篇文章《实现一个前端动态模块组件(Vite原生JS)》中&#xff0c;笔者通过原生的JavaScript实现了一个动态的模块组件。但是这个实现并不完善&#xff0c;最大的问题就是功能逻辑并没有完全分开。比如模块的HTML&#xff1a; <div class"category-secti…...

梯度消失和梯度爆炸的原因及解决办法

梯度消失和梯度爆炸的原因是什么 问题分析 梯度消失&#xff08;Vanishing Gradient&#xff09;和梯度爆炸&#xff08;Exploding Gradient&#xff09;本质上都是在深层神经网络中反向传播过程中&#xff0c;梯度在多层传播时逐渐缩小或放大的问题&#xff0c;导致模型难以…...

欧拉定理:若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)。

【欧拉定理简介】 欧拉定理&#xff1a;若 gcd(a,n)1&#xff0c;则 a^φ(n)≡1(mod n)。 &#xff08;1&#xff09;例如&#xff0c;a3&#xff0c;n10&#xff0c;gcd(3,10)1&#xff0c;φ(10)4&#xff0c;则 a^φ(n)3^481&#xff0c;81 mod 101&#xff0c;欧拉定理成立…...