智能应用 影音
TERADYNE
DForum0515

如何设计低耗能、高功效深度学习网络(三)

网络知识蒸馏是将已经训练好的神经网络推理能力转移到某个全新设计的网络,避免掉耗时的重新训练过程。(Image by Gerd Altmann from Pixabay)

延续深度学习网络精简设计的主题,我们必须在正确率不打折的情况下,设计出兼具低运算复杂度、低耗电、低参数量的智能算法。目前的设计原则是将「冗余」的运算予以精简。这些庞大运算以及冗余由何而来,可以参考前文。本文中介绍剩下的两种精简设计策略。

网络知识蒸馏(knowledge distillation),是将已经训练好的神经网络推理能力转移到某个全新设计的网络,避免掉耗时的重新训练过程,又有人称为Teacher Student Learning,全新待训练的网络称为「学生网络」。训练原理是规范学生网络在某些层级的网络推理输出(能力)与既有的(老师)网络相同。

采用大量数据、长时间训练成一个效能强大的网络之后,因为应用情境的限制,时常必须局限网络的深度、运算数量等,就可以利用这样的方式转移既有的运算能力,达到精简的目的。目前有一些云运算的公司使用这种方式来精简网络,甚至因为资源配置的关系,刻意优化网络来使用CPU运算。

这有额外工程上的好处:加快各种版本的网络设计。比如说已经存在了一个参数庞大以及正确率高的网络,但是因为产品线的关系,必须时常将智能应用实现在多个不同运算平台上。利用这种方式即可将既有网络性能,移转到新的(可能运算能力较低的)神经网络,经验上可以大大避免重新训练的漫长时间,而加快产品部署。

网络模型剪枝(network pruning)是将网络中数值趋近零的网络连结予以剪除,因其对推理的结果影响不大。此方式可行的原因在于,经过观察,相当部分的网络参数接近零,意谓这些连结对于网络输入以及输出的影响性很小,于是直接移除。一般的作法是将训练好的网络依次剪除少部分,然后再进行fine tuning(少量训练),将推理的能力分散到剩下的神经连结中。这样的程序可以持续好几个轮回,直到符合精简条件。

这作法是非常多运算平台使用的网络精简方式,效果也相当显着。主要的限制是,系统或是硬件架构必须支持稀疏矩阵运算,因为剪除之后网络数值结构不再为稠密矩阵,必须采用稀疏矩阵运算才能发挥功效。另外网络剪枝也时常会搭配参数简化,例如将网络由浮点运算置换为整数运算,额外降低参数精度以及加速。

这系列文章讨论的四种网络精简原则可以彼此混用。而且这些为设计深度学习的基底网络,可以再加上其他网络元件满足各种应用例如数值预测、人脸识别、物件侦测、影像识别等。

另一个角度,精简设计也可以视为查找适合的神经网络设计。所以近来也有人使用autoML的方式(参考前文)来优化精简运算,几个应用情境看起来也颇有成效。对于克服边缘计算的严苛条件,似乎指日可待。

徐宏民(Winston Hsu)现任富智捷(MobileDrive)技术长暨副总经理以及台大信息工程学系教授。哥伦比亚大学电机博士,专精于机器学习、大规模影像视讯查找与识别。为讯连科技研发团队创始成员,慧景科技(thingnario)共同创始人,NVIDIA AI Lab计划主持人;曾任IBM华生研究中心客座研究员、美国微软研究院客座研究员。习惯从学术及产业界的角度检验技术发展的机会;十余年产学合作及新创经验。曾获2018 IBM Research Pat Goldberg Memorial Best Paper Award 、2018伪装人脸识别冠军、杰出信息人才奖、吴大猷先生纪念奖等国内外研究奖项。