深度学习中缩放数据、模型大小和性能2025 年 6 月 25 日 | 阅读 8 分钟 引言深度学习神经网络的行为是通过在示例数据上进行训练来学习的,以便将输入映射到输出。 最初,模型的权重默认是小的随机值。它将在训练时使用一个优化算法来调整这些权重,该算法取决于模型与实际值之间的预测差异有多大。 由于模型是从小权重开始,并通过预测误差进行学习,因此输入和输出数据的尺度具有重要意义。如果学习要快速且稳定,缩放输入变量至关重要。在回归问题中,未缩放的目标值也会出现同样的情况,这可能导致训练崩溃。 在训练神经网络之前,会使用归一化和标准化技术来避免这些问题。 你的数据尺度很重要这是为了表达深度学习神经网络的设计,以提供从输入变量到输出变量的映射。 然而,输入变量可以具有不同的尺度和分布,特别是当它们以不同的测量单位(英尺、公里或小时)表示时。由于尺度上的差异,这会使学习过程变得困难。 例如,变量中大的数值范围(数百或数千)会导致模型中大的权重值。对于具有高权重的模型,它们往往不稳定,学习性能差,对输入变化更敏感,导致更高的泛化误差。 为了解决这个问题,以有意义的方式缩放输入变量至关重要。 缩放输入变量通过输入(或可见)层输入到网络中的特征称为输入变量。 通常建议将这些输入值保持相对较小,范围在 0 到 1 之间,或标准化为均值为 0、标准差为 1。 如何缩放输入取决于问题和变量,也可能根本不需要。例如,你可能会处理价格或温度序列。 如果变量具有近似正态分布,通常的选择是标准化。然而,通常首选归一化,特别是当值具有宽或非常窄的范围时,例如,在数百或数十,或者低至 0.0001。 如果你的输入值不是那么小(例如在 0-1 的数量级),并且数据的分布范围不大(标准差接近 1),那么你可能根本不需要缩放它们。 现实世界的问题往往很复杂,因此并非总有一个明显的、最合适的缩放方法。为了安全起见,在不确定时,总是对输入数据进行归一化。如果你有能力,可以训练具有原始、标准化和归一化数据的模型并比较结果,以了解哪种效果最好。 缩放输出变量输出变量是网络旨在预测的目标。 确保输出变量的尺度与网络输出层中使用的激活(或传递)函数对齐非常重要。 对于输出是连续实值的回归问题,通常线性激活函数是最佳选择。 如果输出变量遵循正态分布,那么对其进行标准化(零均值和单位方差)是合适的。否则,建议使用归一化——将值缩放到固定范围,如 0 到 1——以保持训练的稳定性和有效性。 数据缩放方法在准备过程中,两种主要的缩放数据的方法是归一化和标准化。所有这些都可以借助sci-kit-learn库轻松实现。 数据归一化归一化是为了使所有值都转换到 0 到 1 的范围内。 你需要知道(或可以估计)你的数据可能采取的最小值和最大值才能进行归一化。通常,你可以从你的数据集中估计这些值。 归一化的公式是 sci-kit-learn 库中的 MinMaxScaler 可以归一化你的数据集。 以下是应用 MinMaxScaler 及类似方法的首选技术: 使用可用的训练数据拟合缩放器 在此步骤中,将根据训练集确定最小值和最大值。这可以通过 `.fit()` 方法完成。 将缩放应用于训练数据。 拟合后,根据 `.transform()` 方法将缩放应用于训练数据。然后,可以使用缩放后的数据来训练模型。 将缩放应用于未来的数据。 为了进行预测,请使用相同的已拟合缩放器对任何新数据进行归一化。因此,它确保了训练和预测阶段之间的缩放一致性。 默认情况下,MinMaxScaler 将特征缩放到 [0, 1] 的范围;但是,你可以使用 `feature_range` 参数更改此范围。你只需要传递一个元组,其中包含所需尺度的最小值和最大值。 语法 数据标准化标准化数据集是指将所有变量进行移位,使其均值为 0,方差为 1。此过程通常称为“白化”。 数据居中意味着减去均值并基于标准差进行缩放。与归一化一样,标准化可能有用,有时也是必需的,特别是当特征的尺度差异很大以及任何对尺度敏感的算法时。 因此,标准化通常假定数据呈高斯(钟形)分布。虽然在没有此假设的情况下进行数据标准化仍然可行,但结果并不总是可靠。 为了标准化一个值,你通常需要估计均值和标准差,通常是从训练数据中估计。接下来,你将应用以下公式: 语法 缩放深度学习模型的技术数据预处理和增强 在缩放深度学习模型时,良好的预处理非常重要。这有助于归一化技术,如归一化、类别平衡和增强,以便在干净、多样化和代表性的数据上进行训练。 分布式训练 分布式训练分布在多个GPU或机器上,通过并行化计算来加速学习过程。这种方法可以使用 TensorFlow 等框架来实现,它支持这种方法来有效地处理大规模模型和数据集。 迁移学习 可以使用迁移学习对相关任务使用预训练模型,以使用一种微调的形式在你的数据上执行特定任务。其回报是减少了训练时间和所需资源,即使数据有限也能获得良好的性能。 模型剪枝 剪枝从模型中移除不必要的权重/神经元,以降低复杂性并提高效率。因此,生成了一个更小、更快、对准确性影响微乎其微的模型。 混合精度训练 混合精度训练在更有效的地方使用较低精度(FP16)计算,在更需要的地方使用较高精度(FP32)计算——模型性能损失不大,但速度更快,内存使用更少。 缩放深度学习模型的优势性能增强 随着深度学习模型学习复杂模式的能力增强,可以学习到更复杂的模式,从而提高准确性并更好地泛化到新数据。 支持大型数据集 随着数据集规模的增加,缩放后的模型能够更好地处理增加的复杂性和数据量,使其成为大数据应用的更好解决方案。 更快的训练和推理 通过分布式训练和硬件加速等技术,可以大大缩短训练和推理时间,从而实现更快的实验和迭代。 减少过拟合 剪枝和正则化有助于缩放模型,降低其复杂性,并防止其过拟合,从而提高模型的测试性能。 迁移学习的好处 使用预训练模型可以利用大型数据集的学习特征,从而实现更快的开发,而无需从头开始构建/训练新特征。 高效的资源利用 由于它们可以使用小型硬件训练大型模型,因此混合精度训练和梯度累积可以优化内存和计算。 缩放深度学习模型时的注意事项和考虑因素增加复杂性 许多缩放操作会增加架构和操作的复杂性,并使模型更难调试和理解。我们需要提高性能收益,同时也要看到开销。 数据质量和预处理 模型越大,对输入的质量就越敏感。严格的数据处理非常重要,因为不一致的预处理或差的数据质量会导致处理性能显著下降。 超参数优化 由于需要调整的超参数数量更易于管理,人们往往更容易处理较小尺寸的模型。因此,高效的搜索策略变得至关重要。 计算需求 需要更多的处理能力和更多的内存,甚至可能需要专用硬件。为了避免瓶颈,必须确保基础设施能够支持额外的负载。 延迟和模型大小 对大型模型的推理也可能减慢其速度,因此可能成为实时或低延迟应用程序的问题。这可能涉及性能与效率的权衡。 过拟合风险 缩放有助于对抗欠拟合,但大型模型如果正则化不当,也会过拟合到噪声。应明智地使用 Dropout 或权重衰减等技术。 可解释性损失 不那么透明的模型更复杂。如果对可解释性感兴趣,请询问规模是否支持可解释性目标。 结论缩放深度学习模型的目的是整合数据预处理、架构改进以及硬件优化。研究人员和数据科学家可以应用讨论的技术,从而大大受益于管理更大的数据集、更快的训练和更好的模型性能。 但是,需要考虑的是计算成本和性能提升之间存在权衡。通过周密的规划和选择正确的策略,缩放是实现更好结果并使模型能够解决更高级的现实世界问题的手段。 下一主题机器学习中的 FOCL 算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。