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

无过拟合的记忆:分析大语言模型的训练动态

Kushal Tirumala⇤ Aram H. Markosyan⇤ Luke Zettlemoyer Armen Aghajanyan
Meta AI 研究
{ktirumala,amarkos,lsz,armenag}@fb.com

原文链接:[2210.09262] Physics-Driven Convolutional Autoencoder Approach for CFD Data Compressions 

摘要

尽管超大语言模型被广泛应用,但其潜在的训练和记忆动态机制仍未得到充分理解。我们通过实证研究,在因果语言建模和掩码语言建模中,针对不同模型规模以及整个训练过程进行精确记忆的研究。我们衡量了数据集大小、学习率和模型规模对记忆的影响,发现更大的语言模型在所有设置下都能更快地记忆训练数据。令人惊讶的是,我们发现更大的模型在过拟合之前能够记忆更多的数据,并且在整个训练过程中遗忘的倾向更小。我们还分析了不同词性的记忆动态,发现模型首先记忆名词和数字;我们提出假设并提供实证证据,表明名词和数字可作为记忆单个训练示例的唯一标识符。这些发现共同为理解随着模型规模增大而出现的独特训练动态,增添了新的拼图碎片。

1 引言

模型记忆其训练数据的速度和程度,是提供关于其如何泛化到新测试实例的关键统计指标。经典框架,如偏差 - 方差权衡主张在不进行完全记忆的情况下拟合训练集。然而,最近的研究表明,深度学习中记忆与泛化之间存在更为共生的关系。本文通过实证研究,在因果语言建模和掩码语言建模中,针对不同模型规模以及整个训练过程进行记忆研究。

语言模型最近的大部分性能提升都来自于规模的扩大,最新的模型参数数量达到了 10 的 11 次方。众所周知,更大的模型能够记忆更多的训练数据,这是它们泛化能力提升的关键因素。然而,令人惊讶的是,在理解模型规模对训练过程中语言模型记忆动态的影响方面,相关研究相对较少。现有工作主要集中在训练后对记忆的分析。在本研究中,我们致力于研究语言模型中的记忆和遗忘动态,重点在于更好地衡量随着模型规模扩大,这些动态如何变化。我们的主要贡献包括:

  1. 我们测量了训练过程中记忆动态对模型规模(以及其他因素,如数据集大小、过拟合和学习率)的依赖程度。我们发现更大的语言模型能够更快地记忆训练数据。
  2. 我们设计了控制实验,以刻画语言模型中的遗忘曲线(即语言模型在整个训练过程中自然遗忘记忆的方式)。我们的实证研究表明,遗忘曲线存在下限 —— 我们将其称为遗忘基线,并且该基线随着模型规模的增加而上升,即增加模型规模可以减轻遗忘。
  3. 我们分析了不同词性的记忆速率,发现名词和数字的记忆速度比其他词性快得多。我们假设这是因为名词和数字集合可被视为特定样本的唯一标识符,并通过在现有唯一标识符设置下分析记忆速率为该假设提供了证据。

这些发现共同为理解随着模型规模增大而出现的独特训练动态,提供了更多线索。

2 背景和相关工作

2.1 语言模型中的记忆

无意记忆是语言模型面临的一个已知挑战,这使得它们容易受到提取攻击和成员推理攻击,尽管已有研究致力于减轻这些漏洞。最近的研究认为,记忆并非完全有害,对于某些类型的泛化(例如在问答任务中)至关重要,同时还能让模型编码大量的世界知识或事实性知识。也有越来越多的工作分析语言模型中记忆的基本属性。与我们的工作最相关的是 Carlini 等人的研究,他们分析了完全训练后的语言模型的记忆情况,并观察到记忆与模型规模、训练数据重复度以及提示上下文长度之间的依赖关系。虽然我们也研究缩放行为,但我们的重点在于整个训练过程中的记忆动态。

2.2 语言模型训练动态

先前的工作广泛分析了训练动态,以了解神经网络模型在训练过程中如何获取信息。Saphra 和 Lopez 率先分析了语言建模的训练动态,重点关注预训练过程中内部表示的演变。这激发了一系列研究,分析神经语言模型如何在预训练过程中学习语言结构、世界知识、单个单词以及跨语言结构。这种分析已扩展到许多下游任务,包括文本摘要、机器 / 语音翻译以及各种自然语言处理任务。

2.3 语言模型中的遗忘

也有研究关注语言模型中的记忆退化(遗忘)现象。灾难性遗忘或灾难性干扰最早被报道,研究神经网络在训练新数据时,如何倾向于遗忘先前训练任务或训练批次中的信息。这给持续学习(或终身学习)带来了关键挑战,其目标是在对通常非常大的数据流进行单次遍历的过程中逐渐学习。已经提出了许多机制来提高对灾难性遗忘的鲁棒性。也有越来越多的工作表明,模型和数据集的规模都可以使模型更不易遗忘,以及研究图像分类器中遗忘自然发生的特征和遗忘如何提高训练效率。机器遗忘是一种迫使训练好的模型忘记先前学习样本的技术,主要是受数据保护和隐私法规的推动。我们的工作独特之处在于关注训练过程中的遗忘测量,并量化其随规模的变化情况。

2.4 缩放定律

我们一直观察到通过扩大模型规模可以提高性能,并且规模本身已被证明会使模型内部行为偏离经典的偏差 - 方差范式。最近的努力集中在尝试为语言模型建模缩放定律,包括数据和模型规模、在迁移学习中的应用、路由网络以及各种自回归生成任务。虽然缩放定律的大部分工作是实证性的,但也有一些有趣的研究致力于从理论上解释神经缩放定律。大多数缩放定律仅关注交叉熵损失,而我们研究的是记忆。

3 实验设置

为了大规模研究训练过程中的记忆动态,我们的记忆度量必须易于计算,同时又要足够精确,以反映模型实际从训练数据中记住了多少信息。标签记忆是一个理想的候选指标,因为它一直为神经网络的潜在属性提供理论见解,在实证环境中仍然适用,并且计算成本相对较低。我们将我们的度量制定为自监督设置下标签记忆的类似物。

定义如下:设 V 表示词汇表大小。设 c 表示一组上下文,可视为元组 (s, y) 的列表,其中 s 是输入上下文(不完整的文本块),y 是词汇表中完成该文本块的真实标记的索引。设 S 表示输入上下文的集合,设 f: S→R 的 V 次方表示一个语言模型。如果 argmax (f (s)) = y,则上下文 c = (s, y) ∈ C 被记忆。

请注意,单个单词可以作为多个上下文的真实标记出现。对于给定的一组上下文 c(即给定的训练数据集),我们可以分析被记忆上下文的比例。我们将其称为精确记忆,尽管它也可以被视为准确率,因为我们衡量的是语言模型的 argmax 与真实标记匹配的频率。在本文中,除非另有说明,当我们提到记忆时,均指上述定义。我们定义 T 为 M (f) 的阈值,并将 T (N, τ) 表示为具有 N 个参数的语言模型 f 为了满足 M (f)≥τ,每个训练数据点需要被查看的最小次数。在利用更大的数据集时,模型无法进行多个轮次的训练,因此我们改为考虑每次更新时的记忆情况。我们引入 M_update (f, U) 作为模型在进行第 U 次梯度下降更新时,对该批次数据的记忆情况,并定义 T_update (N, τ) 为具有 N 个参数的语言模型为了满足 M_update (f, U)≥τ,需要执行的最小梯度下降更新次数。

先前分析语言模型记忆的工作对记忆的定义有所不同。出于隐私考虑,有研究从训练数据提取的角度定义记忆,即如果一个字符串 s 可以通过与语言模型交互生成,则该字符串是可提取的。更具体地说,有研究将字符串 s 定义为 k - 逼真记忆,如果它是可提取的,并且在最多 k 个训练示例中出现。还有研究将字符串 s 定义为 k - 记忆,如果语言模型可以通过使用训练数据中的 k 个上下文标记进行提示来生成它。由于对训练数据提示的依赖,这个定义仅适用于因果语言建模;对于掩码语言建模,使用上述定义。请注意,如果一个示例被精确记忆,根据定义它就是可提取的。换句话说,k - 逼真记忆标记集和 k - 记忆标记集都包含精确记忆标记集。因此,分析精确记忆为 k - 逼真记忆和 k - 记忆提供了一种下限。在另一项旨在估计单个训练示例影响的工作中,将训练示例 x 定义为被记忆的,如果模型在包含 x 的数据子集和不包含 x 的数据子集上的预期性能差异足够大。这个定义借鉴了先前在理论上分析分类设置中标签记忆的工作。

3.1 模型架构

我们复制了公开可用的 Transformer 语言模型架构参考。我们使用 1.25 亿、3.55 亿、13 亿、27 亿、67 亿和 130 亿参数的模型配置。我们研究因果语言模型和掩码语言模型。我们使用 FairSeq 框架进行训练,以 PyTorch 为底层框架。对于更大的模型,我们使用 FairScale 中提供的全分片数据并行实现,并使用 Aim 实验跟踪工具。

3.2 数据集

在所有实验中,我们使用两个现有数据集:包含约 1.03 亿个标记的 WIKITEXT-103 基准数据集,以及用于训练原始 RoBERTa 模型的 RoBERTa 语料库,包含约 390 亿个标记。在第 4 节中,我们使用了这两个数据集,由于计算限制,在其他部分主要使用 WIKITEXT-103 数据集。

4 更大的语言模型记忆更快

众所周知,更大的神经语言模型样本效率更高,在达到相同性能时需要更少的优化步骤,并且收敛速度更快,其中性能通常定义为测试困惑度。在本节中,我们研究训练集上的 T (N, τ) 与 N 的关系,以回答这个问题。

当我们固定记忆阈值 τ = 0.9,并随着 N 的增加检查 T (N, τ) 时,发现更大的语言模型需要查看每个训练数据点的次数更少,就能实现对训练集 90% 的精确记忆;换句话说,T (N, 0.9) 随着 N 的增加单调递减。当我们将 T 在 0.4 到 0.95 之间变化时,仍然观察到 T (N, τ) 通常随着 N 的增加而减少。对于固定的 N,T (N, τ) 随着 τ 的增加而增加,这是预期的,因为记忆更多的训练集需要对模型进行更多轮次的训练。更有趣的是,增加 T 会使 T (N, τ) 从与 N 无关的常数,平滑过渡到随 N 指数递减。

我们将 0.4 作为范围的下限,因为对于所有模型规模,低于此值的记忆阈值在最初几个轮次内即可达到;将 0.95 作为上限,因为对于较小的模型,更高的值需要不合理的长时间训练。

4.1 对语言建模任务和数据集大小的依赖

为了研究我们的观察结果对特定语言建模任务的依赖程度,我们在 WIKITEXT103 上以 0.15 的掩码概率对掩码语言建模任务重复此分析。与因果语言建模不同,对于较低的 T 值,T (N, τ) 并不随 N 单调递减,而对于较高的 T 值,T (N, τ) 随 N 单调递减,这两种情况之间的相变发生在 τ = 0.6 和 τ = 0.7 之间。较小的模型最初记忆训练数据更快,但从长远来看速度较慢。

语言模型的训练严重依赖于数据集的大小,因此我们预计 M (f) 也会受到类似的影响。在更大的 ROBERTA 数据集上针对掩码和因果语言建模分析训练集记忆情况时,由于数据集太大,对整个训练集进行多轮训练并评估记忆变得不可行,尤其是在训练更大的模型时。因此,我们关注较小的 T 值,并研究达到记忆阈值所需的梯度下降更新次数。我们观察到与之前类似的趋势,即在掩码和因果语言建模中,对于各种 T 值,T_update (N, τ) 都随 N 单调递减。与 WIKITEXT103 不同,掩码语言建模在 τ 上没有相变。

4.2 为何更大的模型记忆更快?

此时一个很自然的问题是,为何更大的模型记忆更快?通常,记忆与过拟合相关,这似乎提供了一个简单的解释。为了将记忆与过拟合区分开来,我们在过拟合发生之前考察记忆情况,这里我们将过拟合定义为语言模型在验证集上的困惑度首次增加的训练轮次。令人惊讶的是,随着参数数量的增加,过拟合之前的记忆比例总体上呈上升趋势,这表明过拟合本身并不能完全解释随着模型规模增大,记忆动态所表现出的特性。

在我们的训练配置中,学习率并非固定不变。直观地说,更大的学习率应该会使记忆速度更快。为了探究学习率在多大程度上能够解释我们的实验结果,我们选取了部分模型架构,在 WIKITEXT103 数据集上,以标准的学习率范围进行训练,并同时测量记忆情况。即使固定学习率,更大的模型达到 0.9 的记忆比例也更快,这表明我们的结果并非仅仅由学习率的差异所导致。有趣的是,随着模型规模的增加,模型对学习率的敏感度通常会降低。我们还注意到,T (N, τ) 最初会下降,最终会上升,并且只要选择的学习率处于曲线的最低点附近,记忆动态就不会发生显著变化。这一结果与越来越多的观点一致,即对于超过特定规模的神经语言模型而言,学习率不再是一个关键的超参数。

详尽地探究所有可能的影响因素是难以实现的,并且完整地解释为何更大的模型记忆更快也超出了本文的研究范围。在接下来的部分,我们将展示一些研究,希望这些研究能够丰富解答此类问题的方法。

4.3 通过唯一标识符进行记忆

近期有研究探索如何利用外部记忆来提升模型性能。在本小节中,我们思考这种架构上的改变是否必要。受信息检索系统的启发,我们采用一种简单的方法:为训练集中的每个样本添加一个唯一标识符,然后观察记忆速度是否会提升。具体而言,我们将语言建模任务设定为在 WIKITEXT103 上进行因果语言建模,并使用 1.25 亿参数的模型。在每个训练样本前,插入字符串 “document ID <unique_id>”,其中 unique_id 是一个唯一的整数,每个训练上下文对应一个。为了使用这些唯一整数,我们必须将它们添加到词表中,这会显著增加模型的规模,因为语言模型的最后一层输出维度必须与词表大小相等。因此,M (f) 动态的任何变化都可能归因于因词表大小增加而添加的额外参数。为了控制这一因素,我们首先考察仅增加词表大小(不使用任何新增词元)的影响。然后,利用这些新增词元为每个训练样本添加前缀,观察 M (f) 动态的变化。增加词表大小确实提高了记忆速度。尽管我们之前已经证明更大的模型记忆更快,但考虑到我们并没有显著增加参数数量,这一结果仍然令人惊讶。此外,当我们利用这些新增词元来唯一标识训练样本时,记忆速度进一步提升,不过使用文档 ID 进行提示会使记忆动态不再随时间单调增加。

4.4 从词性角度看记忆

上一节中,我们展示了唯一标识符能够增强记忆效果。常规文本中,数字和专有名词也可作为唯一标识符的有力替代。受此启发,我们利用词性标注来研究记忆的句法特征。我们追踪词性 p 的正确预测位置数量与标注为该词性 p 的真实词元总数的比率 R (p) 。我们还展示了一个类似的比率,记为 R_mem (p),但分子仅考虑那些也被精确记忆的词元。正确预测词性并不一定意味着精确记忆,语言模型对词性的记忆速度比对词元的确切值的记忆速度更快。虽然所有词性最终都会被记忆,但某些词性的记忆速度更快,这与先前的研究结果一致。然而,与先前的工作不同,我们发现名词、专有名词和数字的记忆速度明显快于动词和形容词,无论是在 R (p) 还是 R_mem (p) 方面。这对隐私保护具有潜在影响,因为敏感信息很可能是名词、专有名词或数字。我们的发现也与研究儿童语言习得的工作存在一定的一致性。

5 语言模型中的遗忘曲线

本节研究记忆的对立面 —— 语言模型中的遗忘现象。受遗忘曲线假说的启发,该假说认为在没有刻意保留的情况下,人类记忆会随时间衰退,我们希望了解语言模型中记忆退化的动态过程。

我们首先选择一批训练集中不存在的数据,即从验证集中选取一批数据。我们将这批数据称为特殊批次。然后,我们从模型训练过程中选取一个检查点,将特殊批次输入模型进行训练,之后恢复在训练集上的标准训练。接着,我们评估特殊批次上的记忆退化情况,并分析遗忘曲线可能依赖的各种因素。在本节中,我们将整个验证集作为特殊批次。特殊批次仅在首次引入时被模型查看一次。

特殊批次上的精确记忆在开始时迅速下降,但随着训练的继续,下降速度呈指数级减缓。换句话说,特殊批次上的遗忘曲线似乎趋近于一个基线 —— 我们将这种趋势称为遗忘基线。我们通过查看训练过程中特殊批次上的最低记忆值来近似遗忘基线。

遗忘基线的数值随着模型规模的增加而单调上升。这意味着更大的模型遗忘更少,这与近期在图像分类任务中研究灾难性遗忘的工作结果一致。这是有益的,因为更大的模型可以利用来自先前任务的更多信息;然而,从隐私角度来看,这并不理想,因为这意味着更大的模型可能会保留更多训练数据中的敏感信息。

我们还研究了遗忘基线对数据批次顺序的敏感性。我们执行上述相同的遗忘曲线分析,但从不同的训练检查点开始分析。通过这种方式,我们在不显著改变实验设置的情况下,改变了输入给模型的数据批次顺序。我们观察到遗忘基线对数据批次顺序不敏感。

相关文章:

无过拟合的记忆:分析大语言模型的训练动态

Kushal Tirumala⇤ Aram H. Markosyan⇤ Luke Zettlemoyer Armen Aghajanyan Meta AI 研究 {ktirumala,amarkos,lsz,armenag}fb.com 原文链接&#xff1a;[2210.09262] Physics-Driven Convolutional Autoencoder Approach for CFD Data Compressions 摘要 尽管超大语言模型…...

【Java面试笔记:进阶】16.synchronized底层如何实现?什么是锁的升级、降级?

在 Java 中,synchronized 关键字的底层实现依赖于 对象头(Object Header) 和 监视器锁(Monitor) 机制,并通过 锁的状态升级(Lock Escalation) 来优化同步性能。 1. synchronized 的底层实现 synchronized 的同步机制基于 Monitor 对象,它是同步的基本实现单元。 通过…...

python可视化:北方城市人口流动趋势分析1

python可视化&#xff1a;北方城市人口流动趋势分析1 斑点鱼在做销售数据分析时发现北京天津的同比下滑明显&#xff0c;客流下滑明显。而山东保定的客流同比上升。引起了斑点鱼对于北方人口流动的好奇。 所以本文将分析2025年北方地区(北京、天津、河北、山东、山西、辽宁等)…...

wps excel 常用操作

数据分列 对于有分隔规律的内容&#xff0c;可以通过分隔符将该内容进行分列 例如&#xff0c;以下字符串&#xff0c;可使用Excel对包含IP地址、数据库类型、环境、负责人和日期的字符串进行分列&#xff1a; 192.168.175.211-MySQL 数据库-DEV-李华-2025.06.30 将以上字符串…...

云智融合普惠大模型AI,政务服务重构数智化路径

2025年是“十四五”收官之年&#xff0c;数字政府和政务数智化作为“数字中国”建设的重点&#xff0c;已经取得了显著成效。根据《联合国电子政务调查报告2024》&#xff0c;我国电子政务发展指数全球排名第35位&#xff0c;与2022年相比提升8个名次&#xff1b;其中&#xff…...

全行业软件定制:APP/小程序/系统开发与物联网解决方案

在数字化浪潮席卷全球的今天&#xff0c;软件已经渗透到我们生活的方方面面&#xff0c;成为推动社会进步的重要力量。作为一家专注于专业软件定制开发的公司&#xff0c;哲科软件深知每一个行业、每一个企业都有其独特的需求和痛点。因此&#xff0c;我们致力于提供个性化软件…...

Java虚拟机(JVM)家族发展史及版本对比

Java虚拟机&#xff08;JVM&#xff09;家族发展史及版本对比 一、JVM家族发展史 1. 早期阶段&#xff08;1996-2000&#xff09; Classic VM&#xff08;Java 1.0-1.1&#xff09;&#xff1a; 厂商&#xff1a;Sun Microsystems&#xff08;Oracle前身&#xff09;。特点&…...

电脑怎么强制退出程序回到桌面 详细操作步骤

电脑日常使用过程中&#xff0c;我们有时会遇到程序无响应或卡死的情况&#xff0c;这时需要采取措施强制关闭这些程序才能保持电脑的正常工作和运行。那么&#xff0c;电脑如何强制退出程序呢&#xff1f;其实方法有很多种&#xff0c;下面便为大家介绍几种电脑强制关闭程序的…...

蓝牙 LE:安全模式和程序说明(蓝牙中的网络安全)

在蓝牙低功耗 (BLE) 中,安全性是一个多方面的难题。了解 BLE 的三种主要安全模式以及五个关键的 BLE 安全程序。 毫无疑问,低功耗蓝牙 (BLE) 技术的迅猛发展为我们的生活带来了更多便利。然而,随着低功耗蓝牙设备的普及,人们对其安全性的担忧也日益加剧。 与普遍看法相反…...

低代码平台开发胎压监测APP

项目介绍 该项目是一个利用Flutter框架和蓝牙技术实现轮胎压力实时监测的应用。 主要功能如下&#xff1a; 用于接收蓝牙模块传输的胎压数据&#xff0c;并实时显示胎压值。APP对接收到的胎压数据进行处理&#xff0c;如单位转换、数据滤波等&#xff0c;然后将处理后的胎压值…...

GNOME扩展入门:日期时间

Getting Started | GNOME JavaScript 1.扩展路径 ~/.local/share/gnome-shell/extensions/ 2.新建文件夹 datetimesonichy 3.metadata.json {"uuid": "datetimesonichy","name": "datetime","description": "Dis…...

NLP高频面试题(五十二)——深度学习优化器详解

在深度学习的训练过程中,各种基于梯度的优化器肩负着寻找损失函数最优解的重任。最基础的梯度下降法通过沿着损失函数负梯度方向迭代更新参数,实现对模型参数的优化;而随机梯度下降(SGD)则以更高的计算效率和内存利用率在大规模数据集上大放异彩,但也因更新噪声大、易陷入…...

SLAM常用地图对比示例

序号地图类型概述1格栅地图将现实环境栅格化&#xff0c;每一个栅格用 0 和 1 分别表示空闲和占据状态&#xff0c;初始化为未知状态 0.52特征地图以点、线、面等几何特征来描绘周围环境&#xff0c;将采集的信息进行筛选和提取得到关键几何特征3拓扑地图将重要部分抽象为地图&…...

Web常见攻击方式及防御措施

一、常见Web攻击方式 1. 跨站脚本攻击(XSS) 攻击原理&#xff1a;攻击者向网页注入恶意脚本&#xff0c;在用户浏览器执行 存储型XSS&#xff1a;恶意脚本存储在服务器&#xff08;如评论区&#xff09; 反射型XSS&#xff1a;恶意脚本通过URL参数反射给用户 DOM型XSS&…...

java.lang.IllegalArgumentException: URI is not hierarchical报错

java.lang.IllegalArgumentException: URI is not hierarchical Thread.currentThread().getContextClassLoader("类的全路径").getClass().newInstance()一个类的静态块初始化异常了&#xff0c;后面调用这个类创建对象会报错吗&#xff1f; 是的&#xff0c;如果一…...

118. 杨辉三角

目录 一、问题描述 二、解题思路 三、代码 四、复杂度分析 一、问题描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二、解题思路 每一行的第一个和最后一个元素是 1&…...

Anything V4/V5 模型汇总

​​​​​​二次元风格生成扩散模型-anything-v4.0Stable Diffusion anything-v5-PrtRE模型介绍及使用深度探索 Anything V5&#xff1a;安装与使用全攻略anything-v5x0.25少儿插画_v1xyn-ai/anything-v4.0...

网络原理 - 7(TCP - 4)

目录 6. 拥塞控制 7. 延时应答 8. 捎带应答 9. 面向字节流 10. 异常情况 总结&#xff1a; 6. 拥塞控制 虽然 TCP 有了滑动窗口这个大杀器&#xff0c;就能够高效可靠的发送大量的数据&#xff0c;但是如果在刚开始阶段就发送大量的数据&#xff0c;仍然可能引起大量的…...

探秘 FFmpeg 版本发展时间简史

前言 FFmpeg 是一套开源的计算机程序,主要用于记录、转换数字音频、视频,并能将其转化为流。它提供了录制、转换以及流化音视频的完整解决方案,在多媒体处理领域应用广泛。很多小伙伴们想系统的学习FFmpeg,还是有必要了解下FFmpeg的版本发展历史,感受它每次的版本迭代是如…...

5.3.1 MvvmLight以及CommunityToolkit.Mvvm介绍

MvvmLight、CommunityToolkit.Mvvm是开源包,他们为实现 MVVM(Model-View-ViewModel)模式提供了一系列实用的特性和工具,能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。 本文介绍如下: 一、使用(旧)的MvvmLight库 其特点如下,要继承的基类是ViewModelBase;且使用…...

PCB常见封装类型

1. 电阻、电容、电感封装 2. 二极管、三极管封 3. 排阻类器件&#xff08;8脚、16脚&#xff09;封装 4. SO类器件&#xff08;间距有1.27、2.54mm等&#xff09;封装 5. QFP类器件封装&#xff08;四方扁平封装&#xff09; 结构&#xff1a;引脚分布在封装的四个侧面&#…...

一键多环境构建——用 Hvigor 玩转 HarmonyOS Next

引言 在 HarmonyOS Next 的应用开发中&#xff0c;常常需要针对不同环境&#xff08;测试、预发、线上&#xff09;或不同签名&#xff08;调试、正式&#xff09;输出多个 APP/HAP 包。虽然 HarmonyOS 提供了多目标构建&#xff08;Multi-Target Build&#xff09;能力&#…...

SQLPandas刷题(LeetCode3451.查找无效的IP地址)

描述&#xff1a;LeetCode3451.查找无效的IP地址 表&#xff1a;logs ---------------------- | Column Name | Type | ---------------------- | log_id | int | | ip | varchar | | status_code | int | ---------------------- log_id 是这张表的唯…...

【leetcode100】组合总和Ⅳ

1、题目描述 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xff1…...

2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)

机器学习入门 前言 说实话&#xff0c;机器学习想学好真心不易&#xff0c;很多时候都感觉自己学得云里雾里。以前一段时间自己为了完成毕业设计&#xff0c;在机器学习的理论部分并没有深究&#xff0c;仅仅通过TensorFlow框架力求快速实现模型。现在来看&#xff0c;很多时候…...

Linux操作系统--基础I/O(上)

目录 1.回顾C文件接口 stdin、stdout、stderr 2.系统文件I/O 3.接口介绍 4.open函数返回值 5.文件描述符fd 5.1 0&1&2 1.回顾C文件接口 hello.c写文件 #include<stdio.h> #include<string.h>int main() {FILE *fp fopen("myfile","…...

Spring boot 中的IOC容器对Bean的管理

Spring Boot 中 IOC 容器对 Bean 的管理&#xff0c;涵盖从容器启动到 Bean 的生命周期管理的全流程。 步骤 1&#xff1a;理解 Spring Boot 的容器启动 Spring Boot 的 IOC 容器基于 ApplicationContext&#xff0c;在应用启动时自动初始化。 入口类&#xff1a;通过 SpringB…...

ARINC818协议一些说明综述

关键术语 航空总线技术 光纤通道层次架构 光纤通道拓扑结构 FC-AV协议&#xff0c;架构&#xff0c;容器系统 ARINC818协议&#xff0c;容器 ADVB帧映射&#xff0c;帧格式 机载视频处理系统对视频数据进行实时处理和记录。 分辨率&#xff1a;1080p,4k,8k视频技术 FC-AV技术是…...

Turso:一个基于 libSQL的分布式数据库

Turso 是一个完全托管的数据库平台&#xff0c;支持在一个组织中创建高达数十万个数据库&#xff0c;并且可以复制到任何地点&#xff0c;包括你自己的服务器&#xff0c;以实现微秒级的访问延迟。你可以通过Turso CLI&#xff08;命令行界面&#xff09;管理群组、数据库和API…...

2025.5.4机器学习笔记:PINN文献阅读

2025.5.4周报 文献阅读题目信息摘要创新点网络架构实验结论不足以及展望 文献阅读 题目信息 题目&#xff1a; Physics-Informed Neural Network Approach for Solving the One-Dimensional Unsteady Shallow-Water Equations in Riverine Systems期刊&#xff1a; Journal o…...

一行命令打开iOS模拟器

要在 Mac 命令行打开 iPhone 15 Pro 模拟器&#xff0c;需满足已安装 Xcode 这一前提条件&#xff0c;以下是具体操作步骤&#xff1a; 步骤一&#xff1a;列出所有可用模拟器设备 打开终端&#xff08;Terminal&#xff09;&#xff0c;输入并执行以下命令&#xff0c;用于列…...

java面向对象编程【基础篇】之基础语法

目录 &#x1f680;前言&#x1f31f;构造器&#x1f4af;案例 &#x1f914;this关键字&#x1f4af;使用this调用本类中的属性&#x1f4af;使用this调用构造器&#x1f4af;this表示当前对象 &#x1f99c;封装&#x1f4af;合理隐藏&#x1f4af;合理暴露 &#x1f427;实体…...

跑MPS产生委外采购申请(成品)

问题&#xff1a;跑MPS产生委外采购申请&#xff08;成品&#xff09;&#xff0c;更改BOM和跑MRP&#xff0c;但物料需求清单中无新增物料复合膜的需求。截图如下&#xff1a; 解决方法&#xff1a;更改委外采购申请的批准日期为BOM的生效日和重新展开bom。 重新展开后&#x…...

[flutter]切换国内源(window)

如题&#xff0c;切换到国内源避免总是连不上google导致卡住的问题。 临时切换到国内&#xff1a; cmd set PUB_HOSTED_URLhttps://pub.flutter-io.cn set FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cnpower shell $env:PUB_HOSTED_URL "https://pub.flut…...

学习海康VisionMaster之顶点检测

一&#xff1a;进一步学习了 今天学习下VisionMaster中的顶点检测&#xff1a;可检测图像指定区域内的顶点&#xff0c;并输出顶点坐标等信息。该模块常用于检测目标物体的顶点 二&#xff1a;开始学习 1&#xff1a;什么是顶点检测&#xff1f; 一个不是很规则的物体需要检测…...

Vue2中常用的核心函数(选项和生命周期钩子)的完整示例及总结

以下是Vue2中常用的核心函数&#xff08;选项和生命周期钩子&#xff09;的完整示例及总结&#xff1a; 1. 实例选项函数 data 初始化组件数据 new Vue({el: #app,data() {return {message: Hello Vue!};} });methods 定义组件方法 new Vue({el: #app,data() {return { c…...

数据集-目标检测系列- F35 战斗机 检测数据集 F35 plane >> DataBall

数据集-目标检测系列- F35 战斗机 检测数据集 F35 plane >> DataBall DataBall 助力快速掌握数据集的信息和使用方式。 贵在坚持&#xff01; * 相关项目 1&#xff09;数据集可视化项目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s…...

2025年3月AGI技术月评|技术突破重构数字世界底层逻辑

〔更多精彩AI内容&#xff0c;尽在 「魔方AI空间」 &#xff0c;引领AIGC科技时代〕 本文作者&#xff1a;猫先生 ——当「无限照片」遇上「可控试穿」&#xff0c;我们正在见证怎样的智能革命&#xff1f; 被低估的进化&#xff1a;开源力量改写游戏规则 当巨头们在AGI赛道…...

【k8s】k8s是怎么实现自动扩缩的

Kubernetes 提供了多种自动扩缩容机制&#xff0c;主要包括 Pod 水平自动扩缩&#xff08;HPA&#xff09;、垂直 Pod 自动扩缩&#xff08;VPA&#xff09; 和 集群自动扩缩&#xff08;Cluster Autoscaler&#xff09;。以下是它们的实现原理和配置方法&#xff1a; 1. Pod …...

协作开发攻略:Git全面使用指南 — 引言

协作开发攻略&#xff1a;Git全面使用指南 — 引言 Git 是一种分布式版本控制系统&#xff0c;用于跟踪文件和目录的变更。它能帮助开发者有效管理代码版本&#xff0c;支持多人协作开发&#xff0c;方便代码合并与冲突解决&#xff0c;广泛应用于软件开发领域。 文中内容仅限技…...

【AI提示词】私人教练

提示说明 以专业且细致的方式帮助客户实现健康与健身目标&#xff0c;提升整体生活质量。 提示词 # Role: 私人教练## Profile - language: 中文 - description: 以专业且细致的方式帮助客户实现健康与健身目标&#xff0c;提升整体生活质量 - background: 具备丰富的健身经…...

【星海出品】Calico研究汇总

Calico项目由Tigera公司发起并主导开发 源码 https://github.com/projectcalico/calico?tabreadme-ov-file#-join-the-calico-community 简介 Tigera是一家专注于云原生安全的公司&#xff0c;于2016年成立&#xff0c;其核心产品包括开源的Calico项目以及商业版的Calico Ent…...

观成科技:摩诃草组织Spyder下载器流量特征分析

一、概述 自2023年以来&#xff0c;摩诃草组织频繁使用Spyder下载器下载远控木马&#xff0c;例如Remcos。观成安全研究团队对近几年的Spyder样本进行了深入研究&#xff0c;发现不同版本的样本在数据加密、流量模式等方面存在差异。基于此&#xff0c;我们对多个版本样本的通…...

中心极限定理(CLT)习题集 · 题目篇

中心极限定理&#xff08;CLT&#xff09;习题集 题目篇 共 18 题&#xff0c;覆盖经典 CLT、Lyapunov/Lindeberg 条件、Berry–Esseen 评估、 以及工程/数据科学应用与编程仿真。推荐先独立完成&#xff0c;再看《答案与解析篇》。 之前已经出过相关的知识点文章&#xff0c;…...

ITL和TTL线程间值的传递

InheritableThreadLocal InheritableThreadLocal 继承自 ThreadLocal&#xff0c;增加了父线程到子线程的值传递功能。当一个新线程被创建时&#xff0c;InheritableThreadLocal 会将父线程中 ThreadLocal 变量的值拷贝到子线程&#xff08;浅拷贝&#xff09;&#xff0c;子线…...

Android学习总结之Room篇

一、Room 框架基础 1. 实体类&#xff08;Entity&#xff09; 实体类用于描述数据库表的结构。通过使用 Entity 注解&#xff0c;可以将一个 Java 类映射到数据库中的一张表。例如&#xff0c;以下是一个简单的 User 实体类&#xff1a; import androidx.room.Entity; impor…...

java IO流

一&#xff1a;概述 &#xff08;1&#xff09;IO &#xff08;2&#xff09;流 二&#xff1a;分类 &#xff08;1&#xff09;流向 &#xff08;2&#xff09;数据单位 &#xff08;3&#xff09;IO流角色 三&#xff1a;API &#xff08;1&#xff09;InputStream &#xff…...

STM32 串口USART

目录 常见的通信方式 串行通信和并行通信 全双工&#xff0c;半双工和单工通信 同步通信和异步通信 通信速率 常见的通信协议 串口基础知识 电平特性 串口传输协议 STM32F103的USART资源 端口引脚 数据寄存器单元 发送接收控制单元 实现串口发送 printf…...

数字IC后端项目典型问题之后端实战项目问题记录(2025.04.24)

今天给大家分享下近两天小编帮助学员解决的几个经典后端项目问题。希望能够对大家的学习和工作有所帮助。 Q1:在做a7top顶层物理验证Calibre LVS检查时提示NOT COMPARED&#xff0c;请问是什么原因&#xff1f; 我们在用calibre检查LVS后&#xff0c;其结果基本上就是以下三种…...

关于边缘计算盒子的外部接口保护

边缘计算盒子是一种基于边缘计算和人工智能技术的智能设备&#xff0c;它内置了灵活可配的多样化AI算法库&#xff0c;所以也被称为AI算法盒子或智能边缘分析一体机&#xff0c;可以将数据处理和分析的能力推至离数据源最近的边缘位置&#xff0c;提供高效的数据处理和实时响应…...