什么是神经网络的量化?

时间:2023-12-06
  小型机器学习神经网络的内存约束
  在理解量化之前,有必要讨论一下为什么神经网络通常会占用如此多的内存。

  神经网络由一系列层中的一系列互连神经元组成。如图 1 所示,标准神经网络由互连的神经元层组成,每个神经元都有自己的权重、偏差和与其关联的激活函数。

  图 1. 神经元之间的每个连接都有自己的权重,而每个神经元都有自己的偏置和激活函数。
  图 1. 神经网络中神经元的示例。神经元之间的每个连接都有自己的权重,而每个神经元都有自己的偏置和激活函数。图片由V7 Labs提供
  这些权重和偏差通常称为神经网络的“参数”。
  每个神经元也有自己的“激活”,这个数字决定了该神经元的活跃程度。神经元的激活基于其权重和偏差值以及所使用的激活函数。
  权重和偏差是在训练期间进行调整的参数,并且通过扩展,神经元的激活也是如此。
  这些值、权重、偏差和激活是神经网络物理存储在内存中的大部分内容。标准是将这些数字表示为 32 位浮点值,这样可以实现高精度,并终提高神经网络的准确性。
  这种准确性就是神经网络往往占用大量内存的原因。对于具有数百万个参数和激活的网络(每个参数和激活都存储为 32 位值),内存使用量会迅速增加。
  例如,50 层 ResNet 架构包含大约 2600 万个权重和 1600 万个激活。通过使用 32 位浮点值来表示权重和激活,整个架构将需要 168 MB 的存储空间。
  什么是神经网络的量化?
  量化是降低权重、偏差和激活精度的过程,从而消耗更少的内存。
  换句话说,量化的过程就是采用神经网络的过程,神经网络通常使用32位浮点数来表示参数,并将其转换为使用更小的表示形式,例如8位整数。

  例如,从 32 位变为 8 位将使模型大小减少 4 倍,因此量化的一个明显好处是显着减少内存。

  图 2 显示了一个示例。
  量化通过降低权重、偏差和激活的精度来缩小神经网络。
  图 2.量化通过降低权重、偏差和激活的精度来缩小神经网络。图片由 高通公司提供
  量化的另一个好处是它可以降低网络延迟并提高能效。
  由于可以使用整数而不是浮点数据类型执行操作,因此网络速度得到了提高。这些整数运算在大多数处理器内核(包括微控制器)上需要较少的计算。
  总体而言,由于计算量减少和内存访问减少,功率效率得到了提高。
  尽管有这些好处,但量化的代价是神经网络可能会失去准确性,因为它们不能地表示信息。然而,根据损失的精度、网络架构和网络训练/量化方案,量化通常会导致非常小的精度损失,特别是在权衡延迟、内存使用方面的改进时和功率。
  如何量化机器学习模型
  在实践中,有两种主要的量化方法:
  训练后量化
  量化感知训练
  顾名思义,训练后量化是一种神经网络完全使用浮点计算进行训练,然后进行量化的技术。
  为此,一旦训练结束,神经网络就会被冻结,这意味着它的参数不能再更新,然后参数就会被量化。量化模型终被部署并用于执行推理,而无需对训练后参数进行任何更改。
  虽然这种方法很简单,但它可能会导致更高的精度损失,因为所有与量化相关的误差都是在训练完成后发生的,因此无法补偿。
  量化感知训练(如图 3 所示)通过在训练期间使用前向传递中的量化版本来训练神经网络来补偿与量化相关的误差。
  量化感知训练的流程图。
  图 3.量化感知训练的流程图。图片由Novac 等人提供
  这个想法是,与量化相关的误差将在训练期间累积在模型的总损失中,训练优化器将相应地调整参数并减少总体误差。
  量化感知训练的优点是比训练后量化损失低得多。
上一篇:使用 EMI 屏蔽减少电子设计中的辐射
下一篇:DRAM(动态随机存取存储器)简介

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料