MIT算法针对神经网络设计自动化,优化的模型速度加快200倍

2019年03月25日 由 老张 发表 567902 0
AI领域的一个新领域涉及使用算法自动设计神经网络,比人类工程师开发的系统更加准确和高效。但是这种所谓的神经结构搜索(NAS)技术在计算上成本很高。

谷歌最近开发的最先进的NAS算法在一组GPU上运行,需要48000 GPU时间才能生成单个卷积神经网络。谷歌拥有并行运行数百个GPU和其他专用硬件的资金,但这对许多其他研究机构来说是遥不可及的。

麻省理工学院的研究人员描述了一种NAS算法,当运行在一个巨大的图像数据集时,该算法能针对目标硬件平台直接学习专门的卷积神经网络,仅需200 GPU时间,可以使这些类型的算法得到更广泛的使用。

研究人员表示,资源匮乏的研究人员和公司可以从节省时间和成本的算法中受益。论文作者之一、麻省理工学院电子工程与计算机科学助理教授、微系统技术实验室研究员Song Han表示,总体目标是让AI民主化。“我们想让专家和非专家都能通过在特定硬件上快速运行的自动化解决方案,高效地设计神经网络架构。”

Han补充说,这种NAS算法永远不会取代人类工程师。“我们的目的是减轻设计和改进神经网络架构所带来的重复性和繁琐的工作。”

“路径级”二值化和修剪


研究人员开发了一些方法来删除不必要的神经网络设计组件,减少计算时间,只使用一小部分硬件内存来运行NAS算法。另一个创新确保每个输出的CNN在特定的硬件平台(CPU,GPU和移动设备)上运行效率高于传统方法设计的平台。在测试中,研究人员用手机测得的CNN速度是传统黄金标准模块的1.8倍,准确度与之相当。

CNN的架构由具有可调参数的计算层(过滤器)以及这些过滤器之间可能的连接组成。过滤器处理正方形网格中的图像像素,例如3x3,5x5或7x7,每个滤镜覆盖一个正方形。过滤器基本上在图像上移动,并将其覆盖的像素网格的所有颜色合并成单个像素。不同的层可能具有不同大小的过滤器,并且以不同的方式连接以共享数据。输出是一个压缩的图像,来自所有过滤器的组合信息,可以通过计算机更容易地进行分析。



由于可供选择的可能架构的数量即搜索空间如此之大,因此应用NAS在海量图像数据集上创建神经网络在计算上令人望而却步。工程师通常在较小的代理数据集上运行NAS,并将他们学习的CNN架构转移到目标任务。然而,这种推广方法降低了模型的准确性。此外,相同的输出架构也适用于所有硬件平台,这导致了效率问题。

研究人员直接在ImageNet数据集中的一个图像分类任务上训练并测试了他们的新NAS算法。
他们首先创建了一个搜索空间,其中包含所有可能的候选CNN路径,即层和过滤器如何连接到处理数据。这使得NAS算法可以自由地找到最优的体系结构。

这通常意味着所有可能的路径必须存储在内存中,这将超过GPU内存限制。为了解决这个问题,研究人员利用了一种称为“路径级二值化”的技术,该技术一次只存储一个采样路径,并节省了一个数量级的内存消耗。团队将这种二值化与“路径级修剪”相结合,这种技术传统上可以在不影响输出的情况下学习神经网络中的哪些神经元可以被删除。然而,研究人员NAS算法并没有丢弃神经元,而是删除了整个路径,这完全改变了神经网络的结构。

在训练中,所有路径最初都被赋予相同的选择概率。该算法跟踪路径,一次只存储一个,以记录其输出的准确性和损失。然后,它调整路径的概率以优化准确性和效率。最后,该算法修剪掉所有低概率路径并仅保留具有最高概率的路径,这就是最终的CNN架构。

硬件识别


Han表示,另一项重要创新是使NAS算法具有硬件感知能力,这意味着它将每个硬件平台上的延迟用作优化架构的反馈信号。例如,为了测量移动设备上的延迟,谷歌等大公司将使用大量移动设备,这非常昂贵。研究人员建立了一个模型,只使用一部手机即可预测延迟。

对于所选网络的每一层,该算法都对该延迟预测模型的体系结构进行采样。然后,它使用这些信息来设计一个尽可能快地运行的体系结构,同时实现高精度。在实验中,研究人员发现CNN在移动设备上的运行速度几乎是黄金标准模型的两倍。

一个有趣的结果是,他们的NAS算法设计的CNN架构长期以来被认为效率太低,但是在研究人员的测试中,它们实际上针对某些硬件进行了优化。例如,工程师基本上停止使用7x7滤波器,因为它们的计算成本比多个较小的滤波器高。

然而,利用研究人员的NAS算法发现,具有一些7x7滤波器层的架构在GPU上运行最佳。这是因为GPU具有高并行性,这意味着它们可以同时计算许多计算,因此一次处理一个大过滤器比一次处理多个小过滤器效率更高。

Han指出,“这违背了以前的人类思维,搜索空间越大,你可以找到的内容就越多。”
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消