当前位置: 首页 > 科技观察

使神经网络更快、更小、更高效的模型优化技术MorphNet

时间:2023-03-16 21:17:01 科技观察

想要针对特定??任务调整您的神经网络吗?这件事并没有想象的那么简单。深度神经网络(DNN)是一块好砖,但移动它可能会耗费大量计算资源和时间。现在,GoogleAI发布了MorphNet。他们使用流行的图像分类神经网络InceptionV2对其进行了测试,发现在不牺牲准确性的情况下,神经网络变得更快、更小且计算成本更低!什么是MorphNet?MorphNet是一种神经网络模型优化(细化)技术,它使用现有架构针对特定任务进行优化。换句话说,这是一个迁移学习问题。迁移学习的难点在于找到不变量。模型需要处理很多与之前训练的任务相似但不完全相同的任务,这会大大降低模型的性能甚至崩溃。MorphNet的成功在于,只要将针对类似问题构建的神经网络作为输入,就可以创建更小、更快、更适合新任务的新架构。MorphNet通过循环收缩和扩展两个阶段来优化神经网络。收缩阶段在收缩阶段,MorphNet识别低效神经元并应用稀疏正则化器来修剪它们。需要注意的是,MorphNet会根据目标资源计算一个神经元的损失,因此在训练过程中,优化器可以感知资源损失,从而识别哪些神经元是高效的,哪些可以使用。删除。有些不明白?那么我们来看看下面的例子,看看MorphNet是如何计算一个神经网络的计算成本(比如FLOPs,即每秒的浮点运算次数):假设一个神经网络层表示为矩阵乘法,它有2个输入(Xn)、6个权重(a、b、…、f)和3个输出(Yn;神经元)。这意味着评估这一层需要6次乘法。MorphNet将乘法数字视为输入数字和输出数字的乘积。在左边的例子中,虽然有两个权重为零,但仍然需要进行所有的乘法计算。但是中间的例子显示了结构的稀疏性,MorphNet能够识别出它的输出数量是2,并且这一层的乘法次数从6减少到4。遵循这个想法,MorphNet可以确定增量成本网络中的每个神经元生成一个更有效的模型,如右侧的模型。ExpansionPhase在扩展阶段,MorphNet使用一个宽度乘数来统一扩展所有层的大小。比如扩张50%,那么对于低效层,从100个神经元收缩到10个后,只会重新扩张到15个;对于重要层,神经元只会从100扩展到80,然后重新扩展到120,并获得更多资源供您使用。也就是说,MorphNet的净效应是将计算资源从网络的低效部分重新分配到更高效的部分。△MorphNet如何优化AI模型?GoogleAI团队使用MorphNet训练InceptionV2网络模型。△图片取自论文MorphNet论文。基线方法是使用宽度乘数通过统一减少每个卷积的输出数量来平衡精度和计算功耗(红色)。MorphNet方法直接针对计算功耗,在缩小模型时生成更好的权衡曲线(蓝色)。在相同的精度下,MorphNet方法的计算功耗降低了11%到15%。MorphNet在InceptionV2的优化上表现不错,MorphNet也很容易用于其他网络模型。△图片摘自MorphNet论文。模型大小/FLOPs已成功压缩,质量几乎没有损失。果然是谷歌出品,一定是精品。这么好用的东西,谷歌自己早就用过了。谷歌AI团队表示,MorphNet已经应用于谷歌多个生产规模的图像处理模型。PortalMorphNet现已开源。GitHub地址:https://github.com/google-research/morph-net论文地址:https://arxiv.org/pdf/1711.06798.pdf