使用随机量化算法量化深度神经网络

原文链接

作者:

  • Yinpeng Dong (dyp17@mails.tsinghua.edu.cn) 计算机科学与技术系,清华大学,北京,中国
  • Renkun Ni (rn9zm@virginia.edu) 美国弗吉尼亚大学
  • Jianguo Li (jianguo.li@intel.com) 英特尔实验室的中国北京,中国
  • Yurong Chen(yurong.chen@intel.com) 英特尔实验室的中国北京,中国
  • Jun Zhu (dcszj@mail.tsinghua.edu.cn) 计算机科学与技术系,清华大学,北京,中国
  • Hang Su (suhangss@mail.tsinghua.edu.cn) 计算机科学与技术系,清华大学,北京,中国

摘要

由于嵌入式应用对存储需求和计算能力较为苛刻,使得使用较少位数表示深度神经网络势在必行。不过,这样会使得精度有所损失。本文的目的是使用随机量化(SQ)算法来将DNN网络使用低位数表示。我们使用这种量化方式是基于以下的观察。现有的训练算法在将每一次迭代中都近似地将实数值/滤波器汇总在一起,并使用低位表示。有些数值/滤波器的量化损失比较小,但有些却十分大,这会导致训练时梯度指向不合适的方向,这回导致精度显著下降。另外,SQ量化将一部分数值/滤波器量化为低位表示,这里量化误差与随机概率成反比(其他未量化的值保持全精度)。每次迭代中,量化和全精度的部分会根据相关的梯度进行更新。SQ率会随着整个网络的量化而增加。这个过程中会对量化的误差进行补偿,并且使低位表示的DNN获取较好的精度。我们用实验展示了SQ算法,可以在各种数据集和网络结构下保证(并提高)不同位数表示的DNN网络的精度。