
延续深度学习網絡精简设计的主题,为了符合商业价值(特别是边缘计算的庞大机会),我们必须在正确率不打折的情况下,设计出兼具低运算复杂度、低耗电、低参数量的智能算法。目前的设计原则是将「冗余」的运算予以精简。原因是近来很多研究显示目前的深度学习網絡设计中夹杂了冗余的参数以及运算。这些庞大运算由何而来,可以参考前文。依照这几年的研究,我们将其整理为四种精简设计策略,在本文中先介绍其中两种。
首先,最直觉的为专注于运算资源配置的「金字塔原则」。因卷积运算量正比于输入影像(或是特征图)的大小以及频道数(详细参考上文),此原则为避免庞大數據量(影像或是特征图)进入复杂或是层数过多的卷积运算。这就是为什么这几年几个性价比较高的卷积網絡(如inception系列、ResNet、SqueezNet等),其主要构成的卷积区块中都会先使用1x1的卷积运算将输入特征图的频道数降低为原来的一半或是四分之一。
这样的原则也可善用特定领域的独特知识。例如视讯中主要的信息大都集中在画面中央,所以事件侦测时可以专注在主要的画面范围而降低输入的影像尺吋。或是智能手机为了自动侦测拍照模式得了解所处的情境(食物、室内、风景、人物等),只需使用缩小的画面即可达到非常好的效果(因为侦测全局情境)。
第一个达到實時影像语义分割的的ICNet,则是发现同时分析不同分辨率的照片可以大大增加正确率,及平衡计算以及效能。该团队让较大的影像通过较少的卷积层而较小的影像则利用更多的层数来撷取更高的语意,再将这些信息汇集进行最终分割判断。这些都是善用金字塔原则以维持效能并降低整体运算量,这样的原则容易扩展到其他应用。
其次为「低秩逼近法 (low-rank approximation)」,这个设计策略具有较严谨的理论支持。一般而言,深度網絡中各层的运算可以转化为矩阵乘法(严格来说为多维的tensor),而其中的矩阵因为有不少「冗余」,可以利用低秩的矩阵来表示,也就是大矩阵可以利用两个较小矩阵相乘来逼近。所以每一层原为庞大矩阵相乘的卷积运算,可以转化为两个小卷积运算,因此可以大大降低运算量。
这个策略已可采用不同的数学模型实现,一般可以达到精简数倍左右的运算,并已落实在移動设备中。其中被最多人采用的是MobileNet系列的基底網絡;经过实验,在边缘计算平臺中,为目前性价比最高(运算速度以及正确率综合考量)的卷积網絡。
本文中所提两个时常被采用的设计准则,设计完成之后大部分不用再大规模更动網絡架构。我们在下文将再讨论另两个产业界也时常使用的精简網絡设计原则以及应用实例。