中文

PocketNN:基于直接反馈对齐与口袋激活函数在纯 C++ 中实现仅整数神经网络训练与推理

机器学习 2022-05-05 v6 人工智能

摘要

标准深度学习算法使用浮点实数实现。这对在没有专用浮点单元(FPU)的低端设备上实现它们构成了障碍。因此,tinyML 领域的研究者考虑了仅使用整数运算即可在低端设备上训练和运行深度神经网络(DNN)的机器学习算法。本文提出 PocketNN,一个轻量且自包含的纯 C++ 概念验证框架,仅使用整数进行 DNN 的训练与推理。与其他方法不同,PocketNN 直接对整数操作,无需任何显式量化算法或定制定点格式。这得益于口袋激活函数(一类为仅整数 DNN 设计的激活函数)以及一种新兴的称为直接反馈对齐(DFA)的 DNN 训练算法。与标准反向传播(BP)不同,DFA 独立训练每一层,从而避免了使用仅整数运算时 BP 所带来的整数溢出这一关键问题。我们使用 PocketNN 在两个知名数据集 MNIST 和 Fashion-MNIST 上训练了一些 DNN。实验表明,用我们的 PocketNN 训练的 DNN 在 MNIST 和 Fashion-MNIST 数据集上分别达到了 96.98% 和 87.7% 的准确率。这些准确率非常接近使用浮点实数运算 BP 训练的等价 DNN,准确率下降分别仅为 1.02%p 和 2.09%p。最后,我们的 PocketNN 对低端设备具有高兼容性与可移植性,因为它是开源的且以纯 C++ 实现而无任何依赖。

关键词

引用

@article{arxiv.2201.02863,
  title  = {PocketNN: Integer-only Training and Inference of Neural Networks via Direct Feedback Alignment and Pocket Activations in Pure C++},
  author = {Jaewoo Song and Fangzhen Lin},
  journal= {arXiv preprint arXiv:2201.02863},
  year   = {2022}
}

备注

Accepted in tinyML Research Symposium '22, March 2022, San Jose, CA (TinyML 2022). 7 pages, 4 figures, 2 tables. [v6] title is reverted to the original version