数据有限时如何开始-指南

数据有限时如何开始:指南

原文:towardsdatascience.com/effective-ml-with-limited-data-where-to-start-194492e7a6f8/

由 Google DeepMind 提供的照片:https://www.pexels.com/photo/an-artist-s-illustration-of-artificial-intelligence-ai-this-image-depicts-how-ai-can-help-humans-to-understand-the-complexity-of-biology-it-was-created-by-artist-khyati-trehan-as-part-17484975/

由 Google DeepMind 提供的照片:www.pexels.com/photo/an-artist-s-illustration-of-artificial-intelligence-ai-this-image-depicts-how-ai-can-help-humans-to-understand-the-complexity-of-biology-it-was-created-by-artist-khyati-trehan-as-part-17484975/

机器学习(ML)在计算机视觉、自然语言处理和语音识别等领域推动了显著的突破,这主要归功于这些领域数据的丰富性。然而,许多挑战——尤其是那些与特定产品特性或科学研究相关的挑战——由于数据质量和数量的限制而受到困扰。在这种情况下,传统的统计分析,对于小数据集通常是自然的选择,但往往无法达到所需的表现。本指南提供了一种基于您的数据限制解决小数据问题的路线图,并提供了潜在解决方案,帮助您在早期做出决策。

1. 收集更多数据的困难

原始数据很少会成为机器学习项目的障碍。另一方面,高质量的标签往往收集成本高昂且费时费力。在获取专家标注的“真实情况”时,需要领域专业知识、密集的实地考察或专业知识。例如,您的问题可能集中在罕见事件上,比如,濒危物种监测、极端气候事件或异常制造缺陷。在其他时候,特定于业务或科学的问题可能过于专业,无法使用现成的大规模数据集。最终,这意味着许多项目因为标签获取成本过高而失败。

2. 小数据集的核心挑战

只有一个小数据集,任何新项目一开始都存在固有的风险。你的数据集能捕捉到多少真实变异性?在许多方面,当你的数据集变小时,这个问题是无法回答的。这使得测试和验证越来越困难,并且对模型实际泛化能力的准确性存在很大的不确定性。你的模型不知道你的数据没有捕捉到什么。这意味着,可能只有几百个样本,你可以提取的特征的丰富性和可以使用的特征数量都会减少,而没有显著的风险会过拟合(在许多情况下你无法衡量)。这通常意味着你只能限于经典的机器学习算法(随机森林、SVM 等),或者高度正则化的深度学习方法。类别不平衡的存在只会加剧你的问题。使小数据集对噪声更加敏感,只有几个错误的标签或错误的测量就会造成混乱和头疼。

3. 启动问题

对于我来说,解决问题的开始是询问一些关于数据、标记过程和最终目标的简单问题。通过用“清单”来构建你的问题,我们可以明确你数据的约束。尝试回答以下问题:

你的数据集是完全标记、部分标记还是大部分未标记?

  • 完全标记:你的数据集中几乎所有样本都有标签。

  • 部分标记:数据集的一部分有标签,但大部分数据未标记。

  • 大部分未标记:你拥有的标记数据点非常少(或没有)。

你拥有的标签有多可靠?

  • 高度可靠:如果多个标注者对标签达成一致,或者它们被可信的专家或已建立的协议所确认。

  • 噪声或弱:标签可能是众包的、自动生成的,或容易受到人为或传感器错误的影响。

你是在解决一个问题,还是有多项(相关)任务?

  • 单任务:一个单一的目标,例如二元分类或单个回归目标。

  • 多任务:多个输出或多个目标。

你是否在处理罕见事件或高度不平衡的类别?

  • :正例非常稀缺(例如,“设备故障”、“不良药物反应”或“金融欺诈”)。

  • :类别相对平衡,或者你的任务不涉及高度倾斜的分布。

你是否拥有专家知识,以及以何种形式?

  • 人类专家:你可以定期查询领域专家来标记新数据或验证预测。

  • 基于模型的专家:你可以访问已建立的模拟或物理模型(例如,流体动力学、化学动力学),这些模型可以提供信息或约束你的机器学习模型。

  • :没有可用的相关领域专业知识来指导或纠正模型。

标记新数据是否可行,以及成本是多少?

  • 可行且负担得起:如果需要,你可以获取更多的标记示例。

  • 困难或昂贵:标记耗时、成本高昂或需要专门的领域知识(例如,医学诊断、高级科学测量)。

您是否有与您的数据相关的先验知识或访问预训练模型?

  • :您的领域存在大规模模型或数据集(例如,ImageNet 用于图像,BERT 用于文本)。

  • :您的领域是利基或专业化的,没有明显的预训练资源。

4. 将问题与技巧匹配

准备好上述问题的答案后,我们可以转向建立解决您问题的潜在技巧列表。在实践中,小数据集问题需要高度细致的实验,因此在实施以下技巧之前,请从简单的模型开始,尽快建立完整的管道,并始终进行交叉验证。这为您提供了一个基线,可以根据错误分析迭代应用新技术,同时专注于进行小规模实验。这也有助于避免构建一个过于复杂的管道,而这个管道从未得到适当的验证。有了基线,您的数据集可能会迅速演变。DVC 或 MLflow 等工具有助于跟踪数据集版本并确保可重复性。在小数据集场景中,即使是少量新的标记示例也能显著改变模型性能——版本控制有助于系统地管理这一点。

考虑到这一点,以下是如何回答上述问题指向本帖后面描述的具体策略:

完全标记 + 单个任务 + 足够可靠的标签:

  • 数据增强(第 5.7 节)以增加有效样本量。

  • 集成方法(第 5.9 节)如果您可以承担多次模型训练周期。

  • 迁移学习(第 5.1 节)如果您的领域(或相关领域)中可用预训练模型。

部分标记 + 标记可靠或可实现:

  • 半监督学习(第五部分)以利用更大的未标记数据池。

  • 主动学习(第 5.6 节)如果您有一位可以标记最有信息量的样本的人类专家。

  • 数据增强(第 5.7 节)在可能的情况下。

很少标记或大部分未标记 + 可用专家知识:

  • 主动学习(第 5.6 节)以选择性地查询专家(尤其是如果专家是人)。

  • 过程感知(混合)模型(第 5.10 节)如果您的“专家”是一个成熟的模拟或模型。

很少标记或大部分未标记 + 无专家 / 无额外标签:

  • 自监督学习(第 5.2 节)以利用未标记数据中的固有结构。

  • 少样本或零样本学习(第 5.4 节)如果您可以依赖元学习或文本描述来处理新类别。

  • 弱监督学习(第 5.5 节)如果您的标签存在但不够精确或属于高级别。

多个相关任务:

  • 多任务学习(第 5.8 节)在任务之间共享表示,有效地在整个数据集上汇总“信号”。

处理噪声或弱标签:

  • 弱监督学习(第 5.5 节)明确处理标签噪声。

  • 主动学习或一个小型的“黄金标准”子集结合,以清理最糟糕的标签错误。

高度不平衡/罕见事件:

  • 数据增强(第 5.7 节)针对少数类(例如,合成少数过采样)。

  • 主动学习(第 5.6 节)专门标记更多的罕见情况。

  • 过程感知模型(第 5.10 节)或领域专业知识,如果可能的话,用于确认罕见情况。

拥有预训练模型或领域特定知识:

  • 迁移学习(第 5.1 节)通常是快速取得成效的方法。

  • 过程感知模型(第 5.10 节)如果将你的领域知识与机器学习相结合,可以减少数据需求。

5. 解决小数据问题的策略

希望上述内容能为解决你的小数据问题提供一个起点。值得注意的是,许多讨论的技术都是复杂且资源密集型的。因此,在开始之前,你很可能需要得到团队和项目经理的支持。这最好通过清晰、简洁地传达他们可能带来的潜在价值来实现。将实验定位为战略性的、基础性的工作,这些工作可以重复使用、改进并用于未来的项目。关注于展示短期、范围紧密的试点项目带来的明确、可衡量的影响。

尽管下面为每种技术描绘的图景相对简单,但重要的是要记住没有一种适合所有情况的解决方案,应用这些技术并不像堆叠乐高积木,它们也不是即插即用的。为了帮助你开始,我提供了每种技术的简要概述,这绝非详尽无遗,但旨在为你自己的研究提供一个起点。

5.1 迁移学习

迁移学习是关于重用现有模型来解决新的相关问题。通过从大型、多样化的数据集中学习到的表示开始,你利用这些表示在较小的目标数据集上微调模型。

为什么它有帮助:

  • 利用从更大、通常多样化的数据集中学习到的强大特征。

  • 微调预训练模型通常会导致更高的准确性,即使在有限的样本下,同时减少训练时间。

  • 当计算资源或项目时间表阻止从头开始训练模型时,这是理想的。

提示:

  • 选择与你的问题领域一致或大型通用“基础模型”如 Mistral(语言)或 CLIP/SAM(视觉)的模型,这些模型在 Hugging Face 等平台上可访问。这些模型由于它们的通用能力,通常优于特定领域的预训练模型。

  • 在微调时仅对顶部的一些层进行微调,同时冻结捕捉一般特征的层。

  • 为了降低对小型数据集过拟合的风险,尝试剪枝。在这里,移除不太重要的权重或连接,减少可训练参数的数量,并提高推理速度。

  • 如果需要可解释性,大型黑盒模型可能不是理想的选择。

  • 如果无法访问预训练模型的源数据集,你可能会在微调过程中强化采样偏差。

以下论文中描述了迁移学习的良好例子(pmc.ncbi.nlm.nih.gov/articles/PMC8913041/#:~:text=The 定制的 ResNet 模型呈现的,临床决策过程)。其中利用预训练的 ResNet 模型能够更好地对胸部 X 光图像进行分类,并检测 COVID-19。通过使用 dropout 和批量归一化,研究人员冻结了 ResNet 基础模型的初始层,同时微调后续层,捕捉特定任务的、高级别的特征。这被证明是一种成本效益高的方法,可以在小型数据集上实现高精度。

5.2 自监督学习

自监督学习是一种预训练技术,其中创建人工任务(“预训练任务”)来从广泛的无标签数据中学习表示。例如,预测文本中的掩码标记或图像的旋转预测、着色。结果是通用的表示,你可以稍后与迁移学习(第 5.1 节)或半监督学习(第五部分)相结合,并使用你的小数据集进行微调。

为什么这有帮助:

  • 预训练模型作为强大的初始点,降低了未来过拟合的风险。

  • 学习以捕捉内在模式和结构(例如,空间、时间或语义关系)的方式表示数据,使其对下游任务更有效。

提示:

  • 预处理任务,如裁剪、旋转、颜色抖动或噪声注入,对于视觉任务非常出色。然而,这是一个平衡问题,因为过度的增强可能会扭曲小型数据的分布。

  • 确保未标记数据代表小型数据集的分布,以帮助模型学习能够良好泛化的特征。

  • 自监督方法可能计算密集;通常需要足够的未标记数据以真正受益,以及大量的计算预算。

LEGAL-BERT 是自监督学习的一个显著例子。Legal-BERT 是一种针对特定领域的 BERT 语言模型的变体,它在大量法律文档数据集上预训练,以提高其对法律语言、术语和上下文的理解。关键在于使用未标记数据,其中如掩码语言模型(模型学习预测掩码词)和下一句预测(学习句子之间的关系,并确定一个句子是否跟在另一个句子之后)的技术消除了标记的需求。这种文本嵌入模型可以用于更具体的基于法律的人工智能任务。

5.3 半监督学习

除了较大的未标记数据集外,还利用少量标记数据集。模型迭代地改进对未标记数据的预测,以生成特定任务的预测,这些预测可以用作进一步迭代的“伪”标签。

为什么它有帮助:

  • 标签数据指导特定任务的客观目标,而未标记数据用于提高泛化能力(例如,通过伪标记、一致性正则化或其他技术)。

  • 改善决策边界并可以增强泛化。

提示:

  • 一致性正则化是一种假设模型预测应在对未标记数据(噪声、增强)进行的小扰动(噪声、增强)下保持一致的方法。其想法是“平滑”稀疏高维空间中的决策边界。

  • 伪标记允许您使用少量数据集训练初始模型,并使用对未标记数据的未来预测作为未来训练的“伪”标签。目的是更好地泛化并减少过拟合。

财务欺诈检测是一个自然适合半监督学习的问题,因为实际标记数据(已确认的欺诈案例)非常少,而未标记的交易数据集很大。以下论文提出了一种巧妙的方法,通过将交易、用户和设备建模为图中的节点,其中边表示关系,例如共享账户或设备。然后,使用少量标记的欺诈数据通过在图中传播欺诈信号到未标记的节点来训练模型。例如,如果一个欺诈交易(标记节点)与多个未标记节点(例如,相关用户或设备)相关联,模型就会学习可能表明欺诈的模式和联系。

5.4 少样本和零样本学习

少样本和零样本学习是指一系列旨在直接解决非常小数据集的技术。通常,这些方法训练模型以识别在训练期间未见过的“新颖”类别,主要使用少量标记数据集进行测试。

为什么它有帮助:

  • 这些方法使模型能够快速适应新任务或类别,而无需大量重新训练。

  • 对于具有罕见或独特类别(如罕见疾病或利基对象检测)的领域很有用。

提示:

  • 可能是最常见的技巧,称为基于相似性的学习,训练模型比较成对的项目并决定它们是否属于同一类别。通过学习相似性或距离度量,模型可以在测试期间通过将新实例与类别原型(测试期间的小量标记数据)进行比较来泛化到未见过的类别。这种方法需要一种良好的方式来表示不同类型的输入(嵌入),通常使用类似 Siamese 神经网络或类似模型创建。

  • 基于优化的元学习旨在训练一个模型,使其仅使用少量训练数据就能快速适应新的任务或类别。一个流行的例子是模型无关的元学习(MAML)。在这种方法中,“元学习器”在许多小任务上进行训练,每个任务都有其自身的训练和测试示例。目标是教会模型从一个良好的初始状态开始,这样当它遇到新的任务时,它可以快速学习并调整,而无需额外的训练。这些方法并不简单易行。

  • 一种更经典的技术,即单类分类,是在仅使用一个类别的数据上训练二元分类器(如单类 SVM),并在测试期间学习检测异常值。

  • 零样本方法,如 CLIP 或带有提示工程的大语言模型,能够使用文本提示(例如,“一种新产品类型的照片”)对未见过的类别进行分类或检测。

  • 在零样本情况下,结合主动学习(人工参与)来标记最有信息量的示例。

在实施少样本和零样本技术时,保持现实期望是很重要的。通常,目标是实现可用的或“足够好”的性能。作为与传统深度学习(DL)方法的直接比较,以下研究比较了深度学习(DL)和少样本学习(FSL)在从水下图像中分类 20 种珊瑚礁鱼类物种的应用,用于检测数据有限的情况下稀有物种。毫不奇怪,测试中表现最好的模型是基于 ResNet 的深度学习模型。对于每种物种大约有 3500 个示例,模型达到了 78%的准确率。然而,收集稀有物种如此大量的数据是不切实际的。随后,样本数量减少到每种物种 315 个,准确率下降到 42%。相比之下,FSL 模型,只需每种物种 5 个标记图像,就能达到可比的结果,并且超过 10 次射击后性能更好。在这里,使用了基于元学习的 FSL 方法——Reptile 算法。该算法通过反复解决从小型图像网络数据集(FSL 的有用基准数据集)中抽取的小型分类问题(例如,区分几个类别)进行训练。在微调期间,模型使用少量标记示例(每种物种 1 到 30 次射击)进行训练。

5.5 弱监督学习

弱监督学习描述了一组使用噪声、不准确或受限的来源来标记大量数据的建模技术。我们可以将这个主题分为三个部分:不完整、不精确和不准确监督,这些部分通过标签的置信度来区分。不完整监督发生在只有一部分示例具有真实标签的情况下。不精确监督涉及粗粒度标签,例如将 MRI 图像标记为“肺癌”而不指定详细属性。不准确监督出现在标签由于人为因素而存在偏差或错误时。

为什么它有帮助:

  • 完全或不准确的数据通常更容易获取且成本更低。

  • 使模型能够在不需要大量手动标记的情况下从更大的信息池中学习。

  • 专注于从数据中提取有意义的模式或特征,这可以放大任何现有良好标记示例的价值。

提示:

  • 使用高质量标签的小子集(或集成)来纠正系统性的标记错误。

  • 对于粗粒度标签可用(例如,图像级标签但没有详细实例级标签)的场景,可以使用多实例学习。由于实例级的不准确性影响较小,因此主要关注包级分类。

  • 标签过滤、纠正和推理技术可以减轻标签噪声并最小化对昂贵的手动标签的依赖。

这种技术的首要目标是使用有限的信息估计更信息丰富或更高维度的数据。例如,这篇论文提出了一种弱监督学习方法来估计 3D 人体姿态。该方法依赖于 2D 姿态标注,避免了需要昂贵的 3D 真实数据。使用对抗重投影网络(RepNet),模型预测 3D 姿态并将它们重新投影到 2D 视图中,与 2D 标注进行比较,以最小化重投影误差。这种方法利用对抗训练来强制执行 3D 姿态的合理性,并展示了弱监督方法在复杂任务(如有限标记数据的 3D 姿态估计)中的潜力。

5.6 活跃学习

活跃学习旨在通过识别一旦标记就能为模型提供最有信息数据的未标记样本来优化标记工作。一种常见的方法是不确定性采样,它选择模型预测最不确定的样本。这种不确定性通常使用熵或边缘采样等度量来量化。这是一个高度迭代的流程;每一轮都会影响模型下一组预测。

为什么它有帮助:

  • 优化专家时间;总体上需要标记的样本更少。

  • 快速识别边缘情况,这可以提高模型的鲁棒性。

提示:

  • 多样性采样是一种替代选择方法,它关注特征空间的不同区域。例如,可以使用聚类从每个簇中选择几个代表性样本。

  • 尝试使用多种选择方法以避免引入偏差。

  • 在线路上引入专家可能会在物流上遇到困难,管理可用性与可能缓慢/昂贵的标记工作流程。

这种技术在化学分析和材料研究中得到了广泛的应用。在这些领域,数十年来收集了大量的真实和模拟分子结构及其性质的大型数据库。这些数据库在药物发现中特别有用,其中模拟如对接被用来预测小分子(例如,潜在的药物)如何与蛋白质或酶等靶标相互作用。然而,在数百万个分子上执行这些类型计算的计算成本使得 brute force 研究变得不切实际。这就是主动学习发挥作用的地方。一项这样的研究表明,通过在一个初始对接结果子集上训练预测模型,并迭代选择最不确定的分子进行进一步模拟,研究人员能够在仍然识别出最佳候选人的同时,大幅减少测试的分子数量。

5.7 数据增强

通过对现有示例应用转换来人工增加你的数据集,例如翻转或裁剪图像,对文本进行翻译或同义词替换,以及对于时间序列进行时间移动或随机裁剪。或者,使用 ADASYN(自适应合成采样)和 SMOTE(合成少数类过采样技术)对代表性不足的数据进行上采样。

为什么这有帮助:

  • 模型专注于更通用和有意义的特征,而不是与训练集相关的特定细节。

  • 与收集和标记更多数据相比,增强提供了一种成本效益更高的替代方案。

  • 通过增加训练数据的多样性来提高泛化能力,帮助学习鲁棒和不变的特征,而不是过度拟合到特定的模式。

提示:

  • 保持转换与领域相关(例如,垂直翻转图像对于花卉图像可能是有意义的,但对于医学 X 射线则不然)。

  • 注意,任何增强都不应扭曲原始数据分布,保留潜在的模式。

  • 探索 GANs、VAEs 或扩散模型来生成合成数据——但这通常需要仔细调整、领域感知约束以及足够的初始数据。

  • 如果类别或特征空间复杂且理解不充分,合成过采样(如 SMOTE)可能会引入噪声或虚假相关性。

数据增强是一个极其广泛的主题,有众多调查探讨了各个领域当前最先进的状态,包括计算机视觉([[综述论文](https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00542/115238/An-Empirical-Survey-of-Data-Augmentation-for)](https://www.sciencedirect.com/science/article/pii/S2590005622000911))、自然语言处理(综述论文)和时间序列数据(综述论文)。由于其增强模型泛化的能力,它已成为大多数机器学习管道的一个基本组成部分。这对于小数据集尤其关键,通过引入变化(如变换或噪声)和去除冗余或不相关特征来增强输入数据,可以显著提高模型的鲁棒性和性能。

5.8 多任务学习

在这里,我们训练一个模型同时解决多个任务。这通过鼓励模型找到同时适用于多个目标的模式或解决方案来提高模型的表现。底层捕获对所有任务都有益的通用特征,即使对于某些任务数据有限也是如此。

为什么它有帮助:

  • 在任务间学习共享表示,有效地增加了样本量。

  • 模型不太可能过拟合,因为它必须考虑到所有任务的相关模式,而不仅仅是单一任务。

  • 从一个任务中学到的知识可以提供改进另一个任务性能的见解。

提示:

  • 任务需要一些重叠或协同作用,以便有意义地共享表示;否则,这种方法会损害性能。

  • 仔细调整每个任务的权重,以避免让一个任务主导训练。

对于许多机器学习的实际应用,数据稀缺使得在任务间共享数据和模型成为一个吸引人的提议。这通过多任务学习实现,其中任务从重叠领域的共享知识和相关性中受益。然而,它需要一个大型、多样化的数据集,该数据集整合了多个相关属性。聚合物设计是一个成功的例子,在这里这种方法已经取得了成功。在这里,一个包含 13,000 种聚合物、36 个属性的混合数据集被用来训练一个基于深度学习的多任务学习架构。多任务模型在所有聚合物属性上都优于单任务模型。特别是,对于代表性不足的属性。

5.9 集成学习

集成通过聚合多个基础模型的预测来提高鲁棒性。通常,机器学习算法在多种方式上可能有限制:高方差、高偏差和低精度。这表现为不同模型在预测中的不同不确定性分布。集成方法限制了与单个模型相关的方差和偏差错误;例如,bagging 减少了方差而不增加偏差,而 boosting 减少了偏差。

为什么这有帮助:

  • 在不同的模型架构间多样化“观点”。

  • 减少方差,减轻过拟合风险。

技巧:

  • 避免复杂的基模型,这些模型容易对小数据集过拟合。相反,使用具有附加约束的正规化模型,如浅树或线性模型来控制复杂性。

  • 类似于随机森林的 Bootstrap aggregating (bagging) 方法对于小数据集特别有用。通过在数据的自助子集上训练多个模型,你可以减少过拟合同时增加鲁棒性。这对于容易产生高方差算法,如决策树,是有效的。

  • 将不同的基础模型类型(例如,SVM、基于树的模型和逻辑回归)与一个简单的元模型(如逻辑回归)结合,以结合预测。

例如,以下论文突出了集成学习作为提高宫颈细胞学图像分类的方法。在这种情况下,使用了三个预训练的神经网络 – Inception v3、Xception 和 DenseNet-169。这些基础模型的多样性确保了集成从每个模型的独特优势和特征提取能力中受益。这结合了通过一种奖励自信、准确的预测同时惩罚不确定预测的方法来融合模型置信度,最大化了有限数据的效用。结合迁移学习,最终的预测对任何特定模型的错误具有鲁棒性,尽管使用了小数据集。

5.10 过程感知(混合)模型

将领域特定的知识或基于物理的约束整合到机器学习模型中。这嵌入先验知识,减少了模型对大量数据推断模式的依赖。例如,使用偏微分方程与神经网络结合用于流体动力学。

为什么这有帮助:

  • 减少了学习已经理解良好的模式所需的数据。

  • 作为一种正则化形式,即使在数据稀疏或噪声的情况下,也能引导模型到合理的解。

  • 提高了在领域关键环境中的可解释性和信任度。

技巧:

  • 持续验证模型输出在物理/生物学上是有意义的,而不仅仅是数值上有意义。

  • 保持领域约束的分离,但将它们作为输入或约束输入到你的模型损失函数中。

  • 注意平衡基于领域的约束与模型学习新现象的能力。

  • 在实践中,将领域特定知识与数据驱动方法相结合通常需要严肃的合作、专门的代码或硬件。

以这种方式约束模型,需要深入理解你的问题领域,并且通常应用于模型运行的环境被充分理解的问题中,例如物理系统。一个例子是锂离子电池建模,其中将电池动力学领域的知识整合到机器学习过程中。这使得模型能够捕捉到传统物理模型所遗漏的复杂行为和不确定性,确保在电池老化等实际条件下进行物理一致的预测并提高性能。

6. 结论

对我来说,受限于数据的工程项目是一些最有趣的项目之一——尽管失败的风险较高,但它们提供了探索前沿技术和进行实验的机会。这些都是难题!然而,系统地应用本文中涵盖的策略可以大大提高你交付一个稳健、有效的模型的机会。接受这些问题的迭代本质:细化标签,采用增强,并在快速周期中分析错误。简短的试点实验有助于在进一步投资之前验证每种技术的效果。

posted @ 2026-03-28 10:01  布客飞龙III  阅读(45)  评论(0)    收藏  举报