|
深度神经网络 (DNN) 在解决图像分类、文本识别和语音转录 等实际相关难题方面表现出了显著的效果。然而,为给定问题设计合适的 DNN 架构仍然是一项艰巨的任务。鉴于可能的架构的搜索空间很大,从头开始为特定应用设计网络在计算资源和时间方面可能非常昂贵。神经架构搜索和 AdaNet等方法使用机器学习来搜索设计空间以找到改进的架构。另一种方法是针对类似问题采用现有架构,并一次性针对手头的任务对其进行优化。
在这里,我们描述了 MorphNet,这是一种用于神经网络模型细化的复杂技术,它采用了后一种方法。MorphNet 最初在我们的论文“ MorphNet:快速简单的资源受限深度网络结构学习”中提出,它以现有神经网络为输入,并生成一个更小、更快、性能更好的新神经网络,可针对新问题量身定制。我们已将该技术应用于 Google 规模的问题,以设计更小、更准确的生产服务网络,现在我们已向社区开源了MorphNet 的 TensorFlow 实现,以便您可以使用它来提高模型的效率。
工作原理MorphNet 通过收缩和扩展
阶段 的循环来优化神经网络。在收缩阶段,MorphNet 识别效率低下的神经元并通过应用稀疏正则化器将它们从网络中修剪掉,使得网络的总损失函数包含每个神经元的成本。但是,MorphNet 不是应用每个神经元的统一成本,而是根据目标资源计算神经元成本。随着训练的进行,优化器在计算梯度时会意识到资源成本,从而了解哪些神经元是资源高效的,哪些可以删除。 例如,考虑 MorphNet 如何计算神经网络的计算成本(例如FLOPs)。为简单起见,让我们将神经网络层视为矩阵乘法。在这种情况下,该层有 2 个输入 ( x n )、6 个权重 ( a , b ,..., f ) 和 3 个输出 ( y n
;神经元)。使用标准教科书的行乘列方法,可以算出评估这一层需要 6 次乘法。
神经元的计算成本。
MorphNet 将其计算为输入计数和输出计数的乘积。请注意,尽管左侧的示例显示了权重稀疏性,其中两个权重为 0,但我们仍然需要执行所有乘法来评估此层。但是,中间的示例显示了结构化稀疏性,其中神经元y n的行中的所有权重均为 0。MorphNet 识别出此层的新输出计数为 2,并且此层的乘法次数从 6 次下降到 4 次。使用这个想法,MorphNet 可以确定网络中每个神经元的增量成本,以产生一个更有效的模型(右),其中神经元y 3已被移除。
在扩展阶段,我们使用宽度乘数均匀扩展所有层大小。例如,如果我们扩大 50%,那么一个从 100 个神经元开始缩小到 10 个的低效层将只会扩大回 15 个,而一个只缩小到 80 个神经元的重要层可能会扩大到 120 个,并拥有更多资源可供使用。净效应是将计算资源从网络效率较低的部分重新分配到网络可能更有用的部分。
人们可以在缩小阶段后停止 MorphNet,简单地削减网络以满足更严格的资源预算。这会导致网络在目标成本方面更高效,但有时会导致准确性下降。或者,用户也可以完成扩展阶段,这将匹配原始目标资源成本,但准确性会提高。我们稍后将介绍此完整实现的一个示例。
为什么是 MorphNet?
MorphNet 提供了四个关键价值主张:
有针对性的正则化: MorphNet 对正则化采取的方法比其他稀疏正则化方法更有目的性。具体而言,MorphNet 诱导更好稀疏化的方法旨在减少特定资源(例如每次推理的 FLOP 或模型大小)。这可以更好地控制 MorphNet 诱导的网络结构,这些结构可能会因应用领域和相关约束而有显著差异。例如,下图左侧面板展示了一个基线网络,其中常用的ResNet-101架构在JFT上进行训练。当以 FLOP(中间,FLOP 减少 40%)或模型大小(右,权重减少 43%)为目标时,MorphNet 生成的结构有很大不同。在优化计算成本时,网络较低层的高分辨率神经元往往比较高层的低分辨率神经元被修剪得更多。当以较小的模型尺寸为目标时,修剪权衡则相反。
MorphNet 是少数可以针对特定参数进行优化的解决方案之一。这使得它能够针对特定实现的参数进行优化。例如,可以通过结合特定于设备的计算时间和内存时间,以原则性的方式将延迟作为一阶优化参数。
可扩展性: MorphNet 可在一次训练中学习新结构,当您的训练预算有限时,这是一种很好的方法。MorphNet 还可以直接应用于昂贵的网络和数据集。例如,在上面的比较中,MorphNet 直接应用于 ResNet-101,该网络最初是在JFT上进行训练的,花费了数百个 GPU 月。
可移植性: MorphNet 生成的网络是“可移植的”,因为它们旨在从头开始重新训练,并且权重与架构学习过程无关。您不必担心复制检查点或遵循特殊的训练方法。只需像平常一样训练您的新网络即可!
变形网络
作为演示,我们将 MorphNet 应用于在ImageNet上训练的Inception V2,目标是 FLOP(见下文)。基线方法是使用宽度乘数通过均匀缩小每个卷积的输出数量(红色)来权衡准确度和 FLOP。MorphNet 方法直接以 FLOP 为目标,并在缩小模型时产生更好的权衡曲线(蓝色)。在这种情况下,与基线相比,FLOP 成本降低了 11% 至 15%,而准确度相同。
此时,您可以选择其中一个 MorphNet 网络来满足较小的 FLOP 预算。或者,您可以通过将网络扩展回原始 FLOP 成本来完成循环,以相同成本实现更高的准确度(紫色)。再次重复 MorphNet 收缩/扩展循环会导致准确度再次提高(青色),总准确度提高 1.1%。结论
我们
已将 MorphNet 应用于 Google 的几个生产规模图像处理模型。使用 MorphNet 可显着减少模型大小/FLOP,而质量几乎没有损失。我们邀请您尝试 MorphNet - 开源 TensorFlow 实现可以在这里找到,您也可以阅读MorphNet 论文了解更多详细信息。
致谢
这个项目是核心团队的共同努力,包括:Elad Eban、Ariel Gordon、Max Moroz、Yair Movshovitz-Attias 和 Andrew Poon。我们还要特别感谢我们的合作者、住院医生和实习生:Shraman Ray Chaudhuri、Bo Chen、Edward Choi、Jesse Dodge、Yonatan Geifman、Hernan Moraldo、Ofir Nachum、Hao Wu 和 Tien-Ju Yang 对该项目做出的贡献。
|
|