绿色检查
链接复制到剪贴板

什么是模型优化?快速指南

了解超参数调整、模型剪枝和模型量化等模型优化技术如何帮助计算机视觉模型更高效地运行。

模型优化是一个旨在提高机器学习模型效率和性能的过程。通过完善模型的结构和功能,优化使模型能够以最少的计算资源、更短的训练评估时间提供更好的结果。

这一过程在计算机视觉等领域尤为重要,因为这些领域的模型通常需要大量资源才能分析复杂图像。在移动设备边缘系统等资源受限的环境中,优化后的模型可以在有限的资源下很好地工作,同时还能保持准确性。

有几种技术常用于实现模型优化,包括超参数调整、模型剪枝、模型量化和混合精度。在本文中,我们将探讨这些技术及其给计算机视觉应用带来的好处。让我们开始吧!

了解模型优化

计算机视觉模型通常具有较深的层次和复杂的结构,非常适合识别图像中的复杂模式,但它们对处理能力的要求也很高。当这些模型部署在硬件有限的设备(如手机边缘设备)上时,可能会面临某些挑战或限制。 

这些设备的处理能力、内存和能源有限,会导致性能明显下降,因为模型很难跟上。模型优化技术是解决这些问题的关键。它们有助于简化模型,减少计算需求,并确保即使在资源有限的情况下仍能有效工作。模型优化可以通过简化模型架构、降低计算精度或移除不必要的组件来实现,从而使模型更轻、更快。

图 1.优化模型的原因(图片由作者提供)。

以下是一些最常见的模型优化技术,我们将在接下来的章节中详细探讨:

  • 超参数调整:它包括系统地调整超参数,如学习率和批量大小,以提高模型性能。
  • 模型修剪:这种技术可去除神经网络中不必要的权重和连接,从而降低其复杂性和计算成本。
  • 模型量化量化包括降低模型权重和激活的精度,通常从 32 位降至 16 位或 8 位,从而大幅减少内存占用和计算需求。
  • 精确调整:也称为混合精度训练,包括对模型的不同部分使用不同的精度格式,并在不影响精度的情况下优化资源使用。

解释:机器学习模型中的超参数

您可以通过调整模型的超参数来帮助模型更好地学习和执行。超参数调整是一种优化这些设置的技术,可以提高模型的效率和准确性。与模型在训练过程中学习的参数不同,超参数是指导训练过程的预设值。

让我们举例说明一些可以调整的超参数:

  • 学习率:该参数控制模型调整内部权重的步长。较高的学习率可以加快学习速度,但有可能会错过最佳解决方案,而较低的学习率可能会更准确,但速度较慢。
  • 批量大小:它定义了每个训练步骤中处理的数据样本数量。批量越大,学习越稳定,但需要更多内存。较小的批次训练速度更快,但稳定性可能较差。
  • 历元:使用该参数可以确定模型查看完整数据集的次数。更多的历元次数可以提高准确率,但也有过度拟合的风险。
  • 内核大小:它定义了 卷积神经网络(CNN)中过滤器的大小。较大的内核可捕捉更广泛的模式,但需要更多处理;较小的内核则侧重于更精细的细节。

超参数调整的工作原理

超参数调整一般从定义每个超参数的可能取值范围开始。然后,搜索算法会探索这些范围内的不同组合,以确定能产生最佳性能的设置。 

常见的调整方法包括网格搜索、随机搜索和贝叶斯优化。网格搜索测试指定范围内每种可能的数值组合。随机搜索随机选择组合,通常能更快地找到有效的设置。贝叶斯优化使用概率模型,根据之前的结果预测有希望的超参数值。这种方法通常可以减少所需的试验次数。 

最后,针对每个超参数组合,对模型的性能进行评估。这一过程不断重复,直到达到预期结果。

超参数与模型参数

在进行超参数调整时,你可能会想知道超参数和模型参数之间有什么区别。 

超参数是在训练前设置的控制模型学习方式的值,如学习率或批量大小。这些设置在训练过程中是固定的,并直接影响学习过程。另一方面,模型参数是模型在训练过程中自己学习的。这些参数包括权重和偏置,它们随着模型的训练而调整,并最终指导模型的预测。从本质上讲,超参数决定了学习过程,而模型参数则是学习过程的结果。

图 2.比较参数和超参数 

为什么模型剪枝在深度学习中很重要

模型剪枝是一种缩减模型大小的技术,它可以去除模型中不必要的权重和参数,从而提高模型的效率。在计算机视觉领域,尤其是深度神经网络,大量的参数,如权重和激活(帮助计算最终输出的中间输出),会增加复杂性和计算需求。剪枝技术通过识别和移除对性能贡献最小的参数来帮助精简模型,从而生成更轻量、更高效的模型。

图 3.模型修剪前后

模型训练完成后,基于幅度的剪枝或灵敏度分析等技术可以评估每个参数的重要性。然后,使用权重剪枝、神经元剪枝或结构化剪枝三种主要技术之一,对重要性低的参数进行剪枝。 

权重剪枝会删除对输出影响最小的单个连接。神经元剪枝会删除输出对模型功能贡献不大的整个神经元。结构化剪枝会删除较大的部分,如卷积滤波器或全连接层中的神经元,从而优化模型的效率。剪枝完成后,对模型进行重新训练,对剩余参数进行微调,确保模型在简化的形式下保持高精度。

用量化技术减少人工智能模型的延迟

模型量化可减少用于表示模型权重和激活的位数。它通常将高精度的 32 位浮点数值转换为较低精度的数值,如 16 位或 8 位整数。通过降低位精度,量化可以显著减少模型的大小、内存占用和计算成本。

计算机视觉领域,32 位浮点数是标准值,但转换为 16 位或 8 位浮点数可以提高效率。量化主要有两种类型:权重量化和激活量化。权重量化降低了模型权重的精度,在缩小尺寸和提高精度之间取得了平衡。激活量化降低了激活的精度,进一步减少了内存和计算需求。

图 4.从 32 位浮点数量化为 8 位整数的示例。

混合精度如何加速人工智能推断

混合精度是一种为神经网络的不同部分使用不同数值精度的技术。通过将较高精度的数值(如 32 位浮点数)与较低精度的数值(如 16 位或 8 位浮点数)相结合,混合精度使计算机视觉模型 能够在不牺牲精度的情况下加速训练并减少内存使用。

在训练过程中,通过在特定层使用较低精度,同时在整个网络需要的地方保持较高精度,来实现混合精度。这是通过铸造和损耗缩放来实现的。根据模型需要,在不同精度之间转换数据类型。损失缩放会调整降低的精度,以防止数值下溢,从而确保稳定的训练。混合精度对大型模型和大批量数据尤其有用。

图 5.混合精度训练同时使用 16 位 (FP16) 和 32 位 (FP32) 浮点类型。

平衡模型精度与效率

既然我们已经介绍了几种模型优化技术,下面就来讨论一下如何根据具体需求决定使用哪种技术。选择取决于可用硬件部署环境的计算和内存限制以及所需的精度水平等因素。 

例如,更小、更快的模型更适合资源有限的移动设备,而更大、更精确的模型则可用于高性能系统。以下是每种技术如何与不同目标相匹配:

  • 剪枝:它是缩小模型大小的理想选择,同时又不会对精度产生重大影响,因此非常适合手机或物联网(IoT)设备等资源受限的设备。
  • 量化:这是缩小模型大小和加快推理速度的最佳选择,尤其是在内存和处理能力有限的移动设备和嵌入式系统上。它适用于可接受轻微精度降低的应用。
  • 混合精度:这种技术专为大规模模型设计,可减少内存使用量,并在 GPU 和TPU等支持混合精度运算的硬件上加速训练。它常用于高效率的高性能任务中。
  • 超参数调整:虽然计算量很大,但对于医学成像自动驾驶等需要高精度的应用来说,却是必不可少的。

主要收获

模型优化是机器学习的重要组成部分,尤其是在现实世界的应用中部署人工智能。超参数调整、模型剪枝、量化和混合精度等技术有助于提高计算机视觉模型的性能、效率和资源利用率。这些优化使模型速度更快、资源消耗更少,非常适合内存和处理能力有限的设备。优化后的模型也更容易在不同平台上扩展和部署,从而使人工智能解决方案既有效又能适应广泛的用途。

访问Ultralytics GitHub存储库,加入我们的社区,了解更多有关人工智能在制造业农业中的应用。

Facebook 徽标Twitter 徽标LinkedIn 徽标复制链接符号

在此类别中阅读更多内容

让我们共同打造人工智能的未来

开始您的未来机器学习之旅