目前智能应用的普及来自近年机器学习技术的精进,其中最大的突破在于深度学习网络。给予适当的类神经网络架构以及足够的训练数据下,在各种智能应用中都有突破性的发展。而付出的代价则是庞大的参数模型以及运算量。举例来说,常用的深度学习网络参数大约数百(千)万个(浮点)参数,每次推论运算约需数个G-FLOPs,可以想像对于运算资源的需求十分庞大。
所以部署这些算法在应用场域时,低耗能、高功效的设计是产品化的必要条件。特别在机会庞大的智能终端应用,如手机、自驾车、穿戴装置、机器人、IoT设备,有更高的精简需求。不仅如此,在云端或是服务器等级的服务中,这也是必要条件,因为每个智能服务所允许的运算时间可能只有几个毫秒,运算资源有限,电力耗损也是重要的优化指标。
精简网络设计,不只在推论时缩短运算时间、降低耗能,在训练阶段更能大大缩短训练时程,对于斤斤计较的产品开发周期,十分重要。可以想见,这是智能产品落地相当关键的步骤。
为使应用符合商业价值,我们必须设计出在正确率不打折的情况下,兼具低运算复杂度、低耗电、低参数量的智能算法。这里讨论的设计准则独立于硬件加速之外,因此精简的智能网络设计,加上目前百家争鸣的深度学习硬件加速(CPU、GPU、ASIC、FPGA等)更会相得益彰。
在应用上,最为关键的元件为卷积网络,为目前处理影像、视讯的必备元件,另一个有趣的趋势是使用卷积网络来处理语音、文字的数据,因可以共享硬件加速。但是卷积网络却是耗费最多运算资源的!
每一层卷积网络的运算量取决于输入(影像或是特徵图)频道个数、卷积核心个数、大小、以及输出特徵图的表面积。为了降低运算量,最简单的方式是减少这些配置的数目,但是随之而来是正确率大幅下降,所以必须有理论支持的作法。
精简网络设计的核心演算法,在过去三十几年机器学习研究中已着墨不少,其原则是将「冗余」的运算,予以精简。原因是近来很多研究显示目前的深度学习网络设计中夹杂了冗余的参数以及运算。所以过去常用的数据降维、特徵转换、稀疏编码、迁移学习等都可以在此活用。
依照这几年的研究,我们将其整理为四种精简设计方向:金字塔原则、低秩逼近法(low-rank approximation)、网络知识蒸馏(knowledge distillation),网络模型剪枝(network pruning)等。这些方法彼此间是互补的,实务上也会混用,以达到最大的功效。
结合我们过去参与几个深度学习技术落地的经验以及与国际团队的讨论所得,我们希望利用接下来的专文继续分享如何设计精简(低耗能、高功效)的深度学习网络,协助国内资通讯产业在产品智能化的过程中少走冤枉路。
徐宏民(Winston Hsu)现任富智捷(MobileDrive)技术长暨副总经理以及台大信息工程学系教授。哥伦比亚大学电机博士,专精于机器学习、大规模影像视讯查找与识别。为讯连科技研发团队创始成员,慧景科技(thingnario)共同创始人,NVIDIA AI Lab计划主持人;曾任IBM华生研究中心客座研究员、美国微软研究院客座研究员。习惯从学术及产业界的角度检验技术发展的机会;十余年产学合作及新创经验。曾获2018 IBM Research Pat Goldberg Memorial Best Paper Award 、2018伪装人脸识别冠军、杰出信息人才奖、吴大猷先生纪念奖等国内外研究奖项。