在 Google I/O 大会上,谷歌公布了最新的机器学习算法——AutoML,随即,Quoc Le 与 Barret Aoph 大神在 Google Research Blog 上发布了一篇名为《采用机器学习探索神经网络架构》的文章。雷锋网进行了编译,并做了不改动原意的编辑和修改。
「在谷歌团队,我们成功地将深度学习模型应用于非常多的领域,从图像识别、语音识别到机器翻译等等。自然,这些工作离不开一整支工程师与科学家团队的努力。人工设计机器学习模型的过程实际上绝非坦途,因为所有可能组合模型背后的搜索空间非常庞大——一个典型的十层神经网络可能有~1010 种可能的神经网络组合。问题也接踵而至,为了应对这样庞大的数量级,神经网络的设计不仅耗时,而且需要机器学习专家们累积大量的经验。」
如图是 GoogleNet 的架构。神经网络的设计需要从最初的卷积架构开始,进行多年的细心调试
为了让机器学习模型的设计变得更加简单,谷歌团队一直希望能让这一过程自动化。此前谷歌也有做不少尝试,包括 evolutionary algorithms 与 reinforcement learning algorithms 等算法已经呈现了比较好的结果。而 Quoc Le 与 Barret Zoph 在此文中所展现的,是谷歌大脑团队目前在强化学习上得到的一些尝试与早期结果。
在团队一个名为「AutoML」的项目中(如图所示),左边有一个名为「控制器」(the controller)的 RNN,它设计出一个「child」的模型架构(雷锋网觉得可以称之为「雏形/子架构」),而后者能够通过某些特定任务进行训练与评估。随后,反馈的结果(feedback)得以返回到控制器中,并在下一次循环中提升它的训练设定。这一过程重复上千次——生成新的架构、测试、再把反馈输送给控制器再次学习。最终,控制器会倾向于设计那些在数据集中能获得更高准确性的架构,而反之亦然。
谷歌团队将这一方法应用于深度学习的两大数据集中,专注图像识别的 CIFAR-10 与语言建模的 Penn Treebank。在两个数据集上,系统自行设计的模型性能表现与目前机器学习专家所设计的领先模型不相上下(有些模型甚至还是谷歌成员自己设计的!)。
猜猜哪个是人类设计的神经网络架构,哪个是机器设计的?
让机器自行选择架构(machine-chosen architecture),与人类在设计神经网络的时候有一些共通之处,比如都采用了合并输入,并借鉴了此前的隐藏层。但其中也有一些亮点,比如机器选择的架构包含乘法组合 ( multiplicative combination),如右图最左边(机器设计)的蓝色标签为「elem_mult」。对于循环神经网络而言,出现组合的情况并不多见,可能因为人类研究者并没有发现明显的优势。有意思的地方在于,此前人类设计者也提议过机器采用的乘法组合,认为这种方法能够有效缓解梯度消失/爆炸问题。这也就意味着,机器选择的架构能够对发现新的神经架构大有裨益。
此外,机器还能教会人类为何某些神经网络的运行效果比较好。上图右边的架构有非常多的渠道,梯度可以向后流动,这也解释了为何 LSTM RNNs 的表现比标准 RNN 的性能要好。
「从长远看来,我们对于机器所设计的架构进行深入的分析和测试,这能够帮助我们重新定义原本自身对架构的看法。如果我们成功,这意味着将会启发新的神经网络的诞生,也能让一些非专家研究人员根据自己的需要创造神经网络,让机器学习造福每一个人。」
参考文献:
[1] Large-Scale Evolution of Image Classifiers, Esteban Real, Sherry Moore, Andrew Selle, Saurabh Saxena, Yutaka Leon Suematsu, Quoc Le, Alex Kurakin. International Conference on Machine Learning, 2017.
[2] Neural Architecture Search with Reinforcement Learning, Barret Zoph, Quoc V. Le. International Conference on Learning Representations, 2017.
via research.googleblog,雷锋网编译