「剪」出最有效率的神经网路

分类:M嗨生活 400赞 2020-06-11 713次浏览
「剪」出最有效率的神經網路

剪枝(pruning)是一种常见的技巧,藉由去除神经网路中冗余的参数,使得运算速度快上数倍,并降低对资料储存量的需求,同时保持瘦身后模型的準确度与原模型相当。在某些情况下,剪枝后的模型在重新训练后,甚至能超越原本的模型。这在有速度要求(例如高帧数的即时物件辨识)或有硬体条件限制(例如在手机上运行模型)的情境中很有帮助,最新的研究让我们更了解剪枝的意义与价值。

乐透假说

典型的剪枝分为三个步骤,分别是训练、剪枝还有微调。在训练阶段,我们一般会选取一个较大的模型,使得在训练完成后能够去除掉冗余的参数得到较小的模型,且不会造成準确率骤降。下一步,剪枝:针对各参数或参数组的重要性进行排序,并移除比较不重要的参数。最后,微调:弥补剪枝后造成的性能降低而再次训练。

MIT计算机科学与人工智慧实验室的研究人员凭藉这样的观察提出「乐透假说」(the lottery ticket hypothesis):只要是一个密集的、随机初始化的前馈神经网路,都包含了数个子网路可以经过独立的训练,在相似的训练时间得到相似準确度。以剪枝的角度来说,就是在经过一般训练流程的神经网路中,都可以透过剪枝得到一个有相似準确度的子网路,就像在彩券堆中找到那张中了乐透头彩的彩券。

剪枝的意义与价值

在典型的剪枝流程里,微调这个步骤是基于现有的参数再次训练。然而,实验结果表明,我们可以拿剪枝后的模型直接重新进行训练,大部分情况下都会得到比微调更好的结果,甚至会超越剪枝前模型的表现。

下表整理了不同微调与训练方法,在不同资料集中的表现。

「剪」出最有效率的神经网路

(来源:Liu et al. 2019.)

Unpruned代表未剪枝的模型,Prune ratio代表剪掉的比例,Fine-tuned是微调的模型, Scratch-E是剪枝后重新训练且叠代次数相同,Scratch-B是剪枝后重新训练且训练时间与计算资源相同。可以看到Scratch-B在许多情况都有较高的準确率,甚至很多时候能超越未剪枝模型的準确率。

这样的结果告诉我们:剪枝的价值不在于把训练得到的参数留下来,而在于留下剪枝后的网路架构。剪枝可以被视为一种寻找优秀模型架构的方法,并可以视计算资源选择微调或是重新训练剪枝后的新模型。

参考资料

(本文由教育部补助「AI报报─AI科普推广计画」执行团队编译)