第 14 节 算法的设计和优化(第1页)

如前所述,深度学习的成功是依靠大量深度神经网络层取得的(主要是达到了很高的准确度)。这些最先进的神经网络使用非常深的模型(主要是 CNN),在训练期间会达到几十亿次计算,模型和数据的存储量达到几十兆字节到几百兆字节。例如,ResNet50 的运行有 77 亿次计算,权重和激活的存储量分别为 25.5 MB 和 10.1 MB,数据格式为 int8。这种复杂性给 AI 的广泛部署带来了巨大挑战,特别是在资源受限的边缘侧环境中。这就需要压缩模型中的大量搜索计算,最大限度地减少内存占用和计算,同时尽可能地保持模型精度。

算法优化旨在通过采用数值的位宽缩减、模型压缩和增加稀疏性来降低计算成本。这方面的进展可以分为两个方面,其中一方面以二值网络为代表,以蒙特利尔大学的约书亚·本吉奥(Yoshua Bengio)教授为核心。2015~2017 年间,人们对二值(1 位)网络和三值(2 位)网络的研究取得了明显的进展。另一方面是研究如何把基于服务器的高精度模型引入移动和可穿戴设备。例如在 ImageNet 中,目标误差率的提高被抑制到小于 1%,功耗降至 100mW 或 10mW 甚至更低,以实现「永远开启」的操作。

现在研究人员已经提出了很多方法来降低 DNN 的能耗。大多数工作要么是设计更有效的算法,要么是设计优化的硬件。专用硬件平台针对典型数据流进行了优化,并利用了网络稀疏性及大多数神经网络的固有错误恢复能力。人们尽可能在硬件实现中利用 DNN 的高度并行性,使用群集训练和被训练了的修剪来缩减模型规模,并提出针对其压缩方案进行优化的硬件加速器 [11] 。其他最近的硬件实现提出了利用稀疏性的解决方案,要么在稀疏操作期间加速,要么提高能效。一些工作通过使用降低数值精度的算子来利用 DNN 对噪声和变化的原有容错度进行扩展,这降低了乘积累加之类算术运算的功耗并压缩了模型的内存占用,代价是可能损失输出精度。

设计高效的深度学习算法可以有很多种方法,这些方法有的已经作为成熟的产品被实现并得到了大量应用,有的还停留在实验室样片阶段。虽然这些方法在理论上减小了操作规模、减少了操作数量、降低了存储成本,但是通常需要专门的硬件来将这些理论上的好处转化为能效和处理速度方面可实测的改进。下面介绍一些这类方法。

降低数值
(本章节未完结,点击下一页翻页继续阅读)