【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020( 三 )


本文插图

是什么影响了收敛稳定性
根据以上的观察和初步启发 , 我们希望通过理论的分析和推导 , 对量化训练的收敛稳定性进行建模 。 根据Adam等相关论文的经验和优化理论中的Regret analysis , 不失一般性地定义R(T)为
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

其中f是损失函数 , t是训练轮数 , T是训练总轮数 , 为t轮的权重 , 是最优权重 。
基于以下两个朴素的假设:
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

通过推导证明可以得到:
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

其中
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

为t轮的学习率 , d为权重的维度 ,
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

为t轮的量化误差 ,
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

是t轮的量化后梯度 。 为了确保网络能够稳定收敛 ,
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

在T变大时需要能够达到足够小 。 通过上式可以发现 , 在T趋于无穷大时 , 第(1)项可以忽略不计 , 主要考虑减小第(2)项和第(3)项 。 我们发现 , 第(2)项与量化误差正相关 , 第(3)项与学习率以及量化后的梯度大小有关 。
因此我们不难得到两个直观的提升训练收敛稳定性的策略:

  • 通过调节量化函数中的截断减小量化误差
  • 通过适当调低学习率来提高量化训练精度

【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

主要方法
依据以上分析 , 我们针对量化误差和学习率提出了基于方向自适应的梯度截断和误差敏感的学习率调节两个方法来解决量化训练带来的精度损失问题 。 同时 , 为了减少量化操作带来的额外开销 , 本文还提出了周期更新和量化卷积融合的方法 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

1、基于方向自适应的梯度截断:调整截断值 , 让梯度方向保持正确
为了最小化量化误差 , 之前有很多研究提出优化截断值的方法 , 其中就有研究提出通过假设数据分布直接求解最优截断值 。 但是已有的研究都针对于权重量化的截断值进行优化 。 就如本文观察所显示 , 梯度的分布特征与权重区别较大 , 无法直接使用 。 本文通过KS检验发现梯度的分布并不符合常见的高斯分布、拉普拉斯分布和学生t分布 , 因此很难通过假设梯度分布来直接求解最优的截断值 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

基于以上的分析 , 本文采用梯度下降的方法来自适应地学习最优截断值 , 常见的目标函数有均方误差函数 , 但是由于梯度的分布特征 , 均方误差的大小会受到梯度的影响 , 影响优化过程;同时对于梯度来说 , 均方误差并不能很好地体现梯度的量化误差对于优化过程的影响 , 因此本文提出使用能够体现梯度方向的余弦距离来衡量梯度的量化误差 , 并以余弦距离为目标函数来优化求解最优截断值 。 余弦距离定义如下:
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020


推荐阅读