揭开谷歌 AutoML 的神秘面纱
雷锋网 (公众号:雷锋网) 按:本文由「图普科技」编译自 Google's AutoML: Cutting Through the Hype
在推出AutoML时,谷歌首席执行官Sundar Pichai在博客中写道:“设计神经网络是非常耗时的,其对专业知识的极高要求使得只有小部分科研人员和工程师才能参与设计。这就是我们创建AutoML方法的原因,有了它,神经网络也可以设计神经网络。我们希望AutoML能够拥有现在一些博士拥有的能力,并可以在三到五年内使众多开发人员也能通过 AutoML 设计神经网络,满足其特定的需求。”
谷歌首席执行官Sundar Pichai表示,我们都需要设计自己的神经网络
谷歌的人工智能负责人Jeff Dean表示,100倍的计算力可以取代人类机器学习专家,他以需要庞大计算力的神经架构搜索为案例来解释了这一点。(在他的TensorFlow DevSummit大会主旨演讲视频中大约23:50左右)
这引发了许多问题的讨论:众多开发人员需要“设计神经网络,满足其特定的需求”(引自Pichai的愿景),或是否有一种行之有效的方法可以使得神经网络可以广泛适用于同一类问题的解决?巨大的计算能力真的可以取代人类机器学习专家吗?
在评估谷歌的声明时,应当牢记,如果我们被说服,相信有效使用深度学习技术的关键是提高计算能力,谷歌将从中利益,因为在这一领域,谷歌明显遥遥领先。如果这是真的话,我们可能都需要购买谷歌的产品。就其本身而言,这并不意味着谷歌的说法都是错误的,但很好地了解他们的声明背后隐藏的经济动机是有必要的。
在之前的文章中,我介绍了AutoML的历史,解释了什么是神经架构搜索,并指出对于许多机器学习项目,设计或选择架构远不是最困难,最耗时或最痛苦的问题。在今天的帖子中,我想特别关注Google的AutoML本身,这是一个广受关注的产品,并试图解决以下问题:
• 什么是AutoML?
• 什么是迁移学习?
• 神经架构搜索与迁移学习:两种截然相反的方法
• 需要更多证据
• 为什么谷歌的AutoML备受追捧?
• 我们如何解决机器学习专家短缺的问题?
什么是AutoML?
尽管AutoML领域已经发展了很多多年(包括开源AutoML库,研讨会,研究,和比赛),但在2017年5月,Google仍将其神经架构搜索称之为AutoML。在谷歌I/O大会上发布的博客声明中,谷歌首席执行官Sundar Pichai写道:“这就是我们创建AutoML方法的原因,有了它,神经网络也可以设计神经网络。”;Google AI研究人员Barret Zoph和Quoc Le写道:“通过我们的方法(我们称之为“AutoML”)中,神经网络控制器可以提出一个“子”模型架构...”
Google于2018年1月推出机器学习产品- Cloud AutoML。到目前为止,它只有一个公开可用的服务AutoML Vision,AutoML Vision是一种识别或分类图像中对象的API。根据产品页面的描述,Cloud AutoML Vision依赖于两种核心技术:迁移学习和神经架构搜索。既然我们已经介绍过了神经架构搜索,现在让我们看一下迁移学习,了解一下它与神经架构搜索之间的关系。
关于谷歌的AutoML和神经架构搜索的一小部分的头条新闻
注意:Google Cloud AutoML还有一个仍然处于alpha测试状态的拖放式ML产品。我在2个月前申请访问它,但至今还没有收到谷歌的回复。我计划在它发布后开贴写一篇文章。
什么是迁移学习?
迁移学习是一种强大的机器学习技术,通过利用已经在类似的大型数据集上训练过的预训练模型,可以让人们使用较小数据集或较低的计算能力获得最先进的结果。因为通过迁移学习方式学习的模型不需要从头学习,所以与不使用迁移学习的模型相比,它通常可以以更少的数据和计算时间达到更高的准确度。
迁移学习是我们在整个免费的码农实用深度学习课程中使用的核心技术 - 我们的学生不断地将其应用到生产过程中,无论是在自己的创业公司还是财富500强公司。虽然比起神经架构搜索,迁移学习似乎“不那么吸引人”,但有人已经在利用迁移学习技术实现突破性的学术成果,例如Jeremy Howard 和 Sebastian Ruder将迁移学习应用于NLP,在6个数据集上完成了最佳分类。同时,迁移学习技术也是在OpenAI中该领域进一步研究的基础。
神经架构搜索与迁移学习:两种截然相反的方法
迁移学习的基本思路是将神经网络架构泛化以解决相似类型的问题:例如,许多图像与其他类型的图像具有相同的基本特征(例如角,圆形,狗脸或轮子)。 相比之下,神经架构搜索解决问题的基本理念恰恰相反:每个数据集都有一个独特的,高度专门化的架构。
来自Matthew Zeiler和Rob Fergus的例子,图像分类器习得的4个特征:角,圆圈,狗脸和轮子
当神经架构搜索发现新架构时,你必须从头开始学习该架构的权重,而使用迁移学习方法时,你可以直接使用预先训练的模型的现有权重。从这个意义上说,你不能同时使用神经架构搜索和迁移学习解决同一问题:如果你正在学习一个新的架构,你需要为它训练新的权重; 而如果你通过预训练模型迁移学习,则无法对架构进行任何实质性更改。
当然,你可以将迁移学习应用于通过神经架构搜索方法习得的架构(我认为这是一个好主意!)。 这仅需要少数研究人员使用神经架构搜索并将他们找到的模型开源。在可以使用迁移学习解决问题时,没有必要让所有机器学习从业者都使用神经架构搜索方法。 然而,Jeff Dean的主题演讲,Sundar Pichai的博客文章,Google Cloud的宣传材料和媒体报道都表明了相反的观点:每个人都需要能够直接使用神经架构搜索。
神经架构搜索有哪些好处?
神经架构搜索有助于寻找新的架构!谷歌的AmoebaNet是通过神经架构搜索学习的,并且fast.ai对此进行了改进,学习进程加快的同时改变了训练过程中图像的尺寸。AmoebaNet已成为在单台机器上训练ImageNet最便宜的方式!
AmoebaNet设计时没有考虑具有扩展能力的奖励函数,因此它不能像ResNet一样扩展到多台机器,但是针对不同性质的可很好扩展的神经网络在未来是很有可能被自动学习出来的。
需要更多证据
目前还没有证据表明每个数据集最好使用自己的自定义模型建模,而不是微调现有模型。 由于神经结构搜索需要更大的训练集,因此对于较小的数据集来说尤其如此。甚至谷歌自己的一些研究也使用的是可迁移技术,而不是为每个数据集寻找新的架构,例如NASNet(博客文章),它在Cifar10上学习了一个架构模块,然后使用模块为ImageNet创建了一个架构。我还没有听说过任何机器学习比赛获胜者使用的是神经架构搜索。
此外,我们不知道谷歌推广的需要计算力的神经架构搜索方法是否具有显著的优越性。 例如,最近有一些论文,如高效神经架构搜索(ENAS)和可微架构搜索(DARTS),提出了更有效的算法。 DARTS仅需4个GPU工作天数就可学会架构,而NASNet则需1800个GPU工作天数,AmoebaNet则为3150个GPU工作天数(都曾在Cifar-10中学习,精确度相同)。 Jeff Dean是ENAS论文的作者,他在论文中提出了一种计算力低1000倍的技术,这似乎与他在一个月后在TF DevSummit大会上强调使用计算力高100倍的方法不一致。
为什么谷歌的AutoML备受追捧?
鉴于上述限制,为什么谷歌AutoML的有用性还没有经过验证(至少到目前为止),就被如此追捧? 我认为有以下几个原因:
1. 谷歌的AutoML更加突显了一个营利性公司设立学术性研究实验室可能遭遇的一些风险。在这种环境下,人们很容易围绕有趣的学术研究创造产品,而不评估它们是否满足实际需求。许多人工智能初创企业也正是如此,例如MetaMind或Geometric Intelligence,它们被收购时甚至还没有推出一样产品。我对创业公司创始人的建议是不要直接将你的博士论文投入生产,也不要只招聘学术研究人员。
2. 谷歌擅长营销。许多门外汉认为人工智能是一个难以接近和令人生畏的领域,他们认为自己没有办法去评估这些声明,特别是像谷歌这样久负盛名的公司所发表的声明。 许多记者也是如此,甚至不加批判地将谷歌的广告宣传写成了炙手可热的文章。 我会定期与那些不从事机器学习领域的人交谈,他们从未使用过任何Google ML产品,对这些产品十分感兴趣,但又说不出什么名堂。
举一个谷歌吹捧其成就的误导性报道的典型例子:谷歌人工智能研究人员曾发布了一篇名为“使用深度学习技术来重建真正的人类基因组”的文章,将自己的工作与诺贝尔奖获得者的发现相提并论(狂妄自大!),该文章被Wired选中刊登。然而,约翰斯·霍普金斯大学生物医学工程,计算机科学和生物统计学的杰出教授Steven Salzberg驳斥了谷歌的帖子。 Salzberg指出,这项研究实际上并没有重建人类基因组,而“仅仅是对现有软件的一些改进,甚至可能还没有改进多少。”许多其他基因组学研究人员都赞同Salzberg的观点。
谷歌正在进行一些了不起的工作,但如果我们不必筛选如此多的误导性炒作来弄清楚什么是合理的,那么它所做的工作也会更容易得到承认。
3. 如果我们被说服,相信有效使用深度学习技术的关键是提高计算能力,谷歌将从中获益,因为在这一领域,谷歌明显遥遥领先。AutoML通常需要大量的计算,例如要学习AmoebaNet,谷歌需要在450 个K40 GPU上训练7天(相当于3150个GPU工作天数)。
虽然工程师和媒体经常痴迷于计算能力或其他一些更庞大的东西,但历史表明,创新往往是在约束和创造力的基础上产生的。 Google使用庞大的计算力处理海量数据; 我们当前生活在资源有限的受约束的世界中,这种方法真的可以泛化以解决我们面临的问题吗?
创新是以不同的方式来解决问题,而不是把事情做大。 fast.ai最近在斯坦福大学DAWNBench比赛中取得的成功就证明了这一点。
如何解决机器学习专家短缺的问题?
回到Jeff Dean在TensorFlow DevSummit主旨演讲中提出的关于机器学习从业者全球短缺的问题,我们可以另一个角度来解决这个问题。我们可以通过以下几种方法消除使用深度学习技术的最大障碍:
1. 使深度学习更容易使用
2. 为深度学习去神秘化
3. 为资金不足无法使用云GPU的人增加访问权限
使深度学习更容易使用
研究如何使深度学习更容易使用能够产生巨大的影响,能够更快更简单地训练出更好的网络。 现已成为标准做法的一些发现包括:
• Dropout允许对较小的数据集进行训练而不会过度拟合。
• Batch normalization可以加快训练速度。
• Rectified linear units有助于避免梯度爆炸。
一些旨在提高易用性的最新研究包括:
• 学习速率查询器使训练过程更加稳定。
• 超级收敛可加快训练速度,减少了计算资源。
• 现有架构的“Custom heads”可以更轻松地重用架构来解决一系列问题(例如,修改用于分类的ResNet,以便查找边界框或进行样式迁移),
以上发现均未涉及计算能力;相反,所有这些都是使用创造性的方式来解决问题。
为深度学习去神秘化
另一个障碍是许多错误观念让人们相信深度学习不适合他们:错误地认为他们的数据规模太小,他们没有接受正规的教育或没有相关背景,或他们的计算能力不够。很多人相信,只有机器学习领域博士才能够使用深度学习技术,许多公司因无力雇用专家而放弃往这方面发展。然而,事实上,公司不仅可以将他们已有的员工培训为机器学习专家,这甚至是一种更可取的做法,因为你现有的员工已经拥有你从事的领域的专业知识!
我认为,对于与我交谈过的绝大多数人来说,进入深度学习的门槛远远低于他们的预期:仅需一年的编码经验和访问GPU的权限。
增加访问权限:谷歌 Colab Notebooks
虽然云GPU(每小时约50美分)的成本在我们许多人的预算范围内,根据我定期与世界各地学生的联系来看,有些学生完全无法承担任何GPU的使用。 在某些国家/地区,即使他们有钱,银行和信用卡方面的规定也会使他们难以使用AWS等服务。谷歌Colab Notebooks是一个解决方案! Colab Notebooks提供了一个Jupyter笔记本环境,无需设置即可使用,完全在云端运行,并允许用户访问免费GPU(尽管不允许长时间使用GPU)。 它们还可用于创建包含在交互式环境中运行的代码示例的文档。 谷歌Colab Notebooks在实现深度学习大众化方面的作用甚至超过了AutoML; 也许这将成为未来谷歌营销机器的更好选择。
雷锋网版权文章,未经授权禁止转载。详情见。