论文地址:https://arxiv.org/pdf/1607.02241.pdf
1 摘要
总所周知,以极低的数值精度来训练深度神经网络,尤其是深度卷积神经网络是具有挑战的。随机梯度下降算法由于存在数值精度有限的算术而导致出现噪声的梯度更新时变得不稳定。随机进位是一种易于接受的解决方案,它可以帮助训练低精度定点网络。然而,据我们所知,对带有噪声梯度更新的训练神经网络的不稳定性来源尚未进行深入研究。这项工作是试图在低数值精度和训练算法稳定性之间建立理论联系。在此过程中,我们还将提出并通过实验验证能够提高定点深度卷积网络训练性能的方法。
2 综述
相关工作 | 优点 | 局限 | 论文 |
---|---|---|---|
使用低精度的数据类型fine-tune预训练的浮点模型 | - | 当网络参数和特征的精度太低时,训练算法很容易发散。 | |
随机进位 | - | 缺少理论依据 |
本文中,我们尝试在以有限的数值精度表示形式训练DCN时,提供有关数值不稳定性的根本原因的理论见解。
这项工作将专注于微调固定点上的预训练浮点DCN。 尽管大多数分析还适用于从头开始训练定点网络的情况,但某些讨论可能仅适用于定点微调方案。
3 低精度与反向传播
在本节中,我们将研究使用低精度权重和激活时网络训练阶段的不稳定性来源。 这项努力的结果将为减轻问题提供可能的途径。
3.1 有效的激活函数
在前向中激活值的计算可以写成如下:
请注意,这里我们假设激活和权重均为全精度值。 现在考虑只有权重是低精度定点值的情况。 从向前看的角度来看,公示(1)仍然成立。
但是当我们在等式(1)中引入低精度的激活值时,等式(1)将无法准确地表述激活值地传播。为了看到这一点,我们考虑多定点形式的进行评估,如下图所示:
在图3-1中,描述了三个操作:
- 步骤一,计算,假设w和g(a)都是8-bit整型,其积是16-bit值。
- 步骤二,计算,累加器的大小大于16位,以防止溢出。
- 步骤三,对的输出进行舍入并截断以产生8-bit激活值。
步骤3是量化步骤,其降低了根据(1)计算出的值的精度,同时保持了层1的所需定点精度。 本质上,假设为ReLU,则网络中的功能所经历的有效激活功能如图2(b)所示,而不是2(a)。