谷歌AutoML真那么万能?深度学习需“去神秘化”
编者按:今天,深度学习专家François Chollet在推特上发布了这么一段话:
不久之后,AutoML就会发现他们将面临和强化学习一样的问题:人们会用非常具体的(有缺陷的)方法来解决许多宽泛的问题。
谷歌在AI First战略下,发布了自主编写机器学习代码的工具AutoML,目的是让更多人能够以简单的操作就能使用机器学习。AutoML然而这项工具真的如此强大吗,还是说只是广告打得响?fast.ai创始者之一Rachel Thomas就自己的理解分析了AutoML的现在以及未来。以下是论智的编译。
在提出谷歌AutoML之前,CEO Sundar Pichai写了这么一段话:
目前,设计神经网络非常费时,并且需要专家只在科学和工程领域中的一小部分进行研究。为了解决这一问题,我们创造了一种名为AutoML的工具,有了它,神经网络可以设计神经网络。我们希望AutoML能做到目前博士们可以达到的水平,三至五年之后,我们希望它能为众多开发者设计不同功能的新的神经网络。
谷歌AI的负责人Jeff Dean表示,100倍的计算力可能会替代机器学习专家,对计算有大量需求的神经架构搜索是他唯一举出的例子。
这就引出了一系列问题:开发者们需要“设计不同功能的神经网络”吗?神经网络是否能用有效的方法解决类似的问题呢?巨大的计算力真的可以替代机器学习专家吗?
在评价谷歌的言论之前,我们要知道谷歌之所以一直强调高效使用深度学习的关键是更多的计算力,是因为这与它的利益相关,因为在计算力这个方面,谷歌足以吊打其他人。如果这是真的,那我们可能都需要购买谷歌的产品了。就其本身而言,这并不意味着谷歌的说法是错误的,但是我们最好意识到他们言论之下的经济动机。
在我们之前的文章中,我们介绍了AutoML的历史,解释了什么是神经架构搜索,并且指出对许多机器学习项目来说,设计或选择一种架构并非耗时、最痛苦的部分。在今天的文章中,我要详细讲解谷歌的AutoML,该产品受到了许多媒体的关注。大致内容如下:
什么是谷歌AutoML?
什么是迁移学习?
神经架构搜索 vs 迁移学习:两种相反的方法
需要更多证据
媒体为什么对谷歌AutoML大加赞赏
我们如何能解决机器学习专家短缺的问题?
什么是谷歌AutoML
虽然AutoML领域已经发展了好几年,在2017年5月,谷歌在它的神经架构搜索中加入了AutoML这个术语。在谷歌开发者大会上,Sundar Pichai表示:“这就是我们为什么创造AutoML这一工具,它证明了让神经网络设计神经网络是可能的。”同时,谷歌AI的研究者Barret Zoph和Quoc Le也表示:“我们的方法(AutoML)中,一个控制器神经网络可以生成一个子模型架构……”
2018年1月,谷歌云宣布将AutoML最为机器学习产品的一部分。目前,AutoML中有一个公开可用的产品——AutoML Vision,这是一款可识别或者对图中目标物体进行分类的API。根据该产品的详情页面,我们得知Cloud AutoML Vision依靠两种核心技术:迁移学习和神经架构搜索。由于在上一篇文章中我们已经解释过神经架构搜索,现在我们重点关注迁移学习,看看它是如何和神经架构搜索联系在一起的。
什么是迁移学习?
迁移学习利用预训练模型,可以让人们用少量数据集或者较少的计算力得到顶尖的结果,是一种非常强大的技术。预训练模型此前会在相似的、更大的数据集上进行训练。由于模型无需从零开始学习,它可以比那些用更少数据和计算时间的模型得到更精确的结果。
迁移学习是项重要的技术,很多世界500强公司都用到了这种技术。虽然迁移学习看起来不如神经架构搜索那么“性感”,但是它却创造过很多学术界进步的成果,例如Jeremy Howard和Sebastian Ruder将迁移学习应用到NLP中的应用,在6个数据集上达到了最佳分类效果,同时也成为了OpenAI在这一领域的研究基础。
神经架构搜索 vs 迁移学习:两种不同的方法
迁移学习之下的基础理念是,神经网络结构会对相同种类的问题进行泛化:例如,很多图片都有基础特征(比如角度、圆圈、狗狗的脸、车轮等等),这些特征构成了图片的多样性。相反,提升神经架构搜索的效率是因为,每个数据集都是独一无二的,它的结构非常个性化。
当神经架构搜索发现了一种新结构,你必须从零开始学习该结构的权重。但是有了迁移学习,你可以从预训练模型上已有的权重开始训练。这也意味着你无法在同一个问题上同时使用迁移学习和神经架构搜索:如果你要学习一种新的结构,你可能需要为此训练一个新权重;但如果你用迁移学习,可能无需对结构进行实质性改变。
当然,你可以将迁移学习运用到一个经过神经架构搜索的结构上(我觉得这是个不错的想法)。这只需要几个研究者用神经架构搜索和开源的模型即可。如果可以用迁移学习,并不是所有机器学习从业者都要在问题上使用神经架构搜索,然而,Jeff Dean、Sundar Pichai以及谷歌和媒体的报道都表示:每个人都应该直接用神经架构搜索。
神经架构搜索的好处是什么?
神经架构搜索很适合用来寻找新的结构!谷歌的AmoebaNet就是通过神经架构搜索学习来的,另外fast.ai很多技术进步也都得益于神经架构搜索。
AmoebaNet不是根据奖励函数设计的,不具备缩放的能力,所以他不如ResNet那样可以根据多种机器进行调整。但是一个可以缩放的神经网络可以在未来学习并优化。
需要更多证据
没有证据表明每个数据集最好在它自己的模型上建模,而不是在现有模型上微调。由于神经架构搜索需要大型训练集,这对小型数据集来说可能不太友好。即使是谷歌自己的一些研究也会用迁移技术而不是为每个数据集寻找一种新结构,例如NASNet。
目前我还不知道有哪些使用神经架构搜索赢得了某项竞赛的案例,也不知道某种需要大量元计算的方法领先其他方法的情况。例如,最近的两篇论文——Efficient Neural Architecture Search(ENAS)和Differentiable architecture search(DARTS)提出了更有效率的算法。DARTS仅仅用4个GPU就达到了NASNet 1800个GPU和AmoebaNet 3150个GPU得到的效果。Jeff Dean是ENAS作者之一,提出了比之前少1000倍的计算力。
为什么还要吹捧谷歌AutoML呢?
有了上述那么多种限制,为什么还要还有很多人在宣传谷歌AutoML的有用性呢?我认为有以下几种解释:
1. 谷歌的AutoML真实反映了一些学术研究机构掺杂了盈利机构之后的危机。很多科学家都想创建有关热门学术研究领域的产品,但并不评估它能否满足实际需求。这也是很多AI创企的现状,我的建议是不要试图将博士论文变成产品,并且尽量不要雇佣纯学术研究人员。
2. 谷歌很擅长营销。人工智能对很多门外汉来说门槛较高,以至于他们没办法评估某种主张,尤其是谷歌这样的巨头。很多记者也随波逐流,争相报道谷歌的新技术、新成果。我经常跟哪些不在机器学习界工作的人谈论谷歌的成果,他们即使没有用过谷歌机器学习产品,但表现得也很兴奋,可是如果仔细深究又讲不出个所以然来。
谷歌造成的新闻误导其中一个案例是谷歌AI研究人员宣布“他们创建了一种深度学习技术,能够重建人类基因组”,并且他们还将这项技术与诺贝尔获胜者做了对比,Wired对此进行了报道。在这之后,约翰霍普金斯大学生物统计学家、生物工程教授Steven Salzberg就批判了谷歌的这篇文章。Salzberg指出,这项研究实际上并没有重建人类基因组,而且“在现有软件上仅有微小提升,甚至还不如现有软件”。其他很多基因研究者对Salzberg的说法表示了赞同。
谷歌确实有很多伟大的成果,但是我们在欣赏的同时也要注意鉴别。
3. 谷歌因为利益相关,说服我们高效利用深度学习的关键是更强的计算力,因为谷歌在计算力方面非常有优势。AutoML通常需要大量计算,例如为了学习AmoebaNet需要用450个K40 GPU训练7天。
如何解决机器学习专家短缺的问题?
为了解决全球机器学习从业者短缺的问题,我们可以采取的有以下几种方法:
让深度学习更易使用
给深度学习去神秘化
让资金不够充足的人也能用到云GPU
让深度学习更易使用
为了让深度学习更易使用,很多研究已经使其能够更快、更轻易地训练更好的网络。典型的案例有:
Dropout能让模型在更小的数据集上训练,并且不存在过度拟合
批归一化使训练速度更快
线性整流函数(ReLU)避免了梯度爆炸
其他提高使用简易程度的研究包括:
学习速率探测器使训练过程更稳定
Super convergence加速了训练时间,并且需要更少的计算资源
“Custom heads”对现有的架构来说,可以在很多问题上重复使用。
给深度学习去神秘化
另外一个障碍是,很多人总认为深度学习离他们很远,或者觉得他们的数据集太小、并未接受过深度学习训练或者计算力不够等等。还有一种观点认为,只有到了机器学习的博士阶段才能用到深度学习,或者很多公司根本无法负担招聘一位深度学习专家。
但是在我的经历中,进入深度学习的门槛远比他们想象中的低,只要你有一年的编程经验以及一个GPU。
提供更多资源:谷歌Colab Notebooks
虽然云GPU的花费普通人还能负担得起(每小时大约50美分,约合人民币3.4元),但是很多学生表示确实有点贵。在某些国家因为规定,他们无法使用像AWS这样的服务,现在谷歌Colab Notebook可以解决这个问题,它提供了Jupyter notebook环境,无需设置即可使用,在云上运行并给用户使用免费的GPU。谷歌Colab Notebook将会为深度学习做出更多努力,也许这也是谷歌在机器学习未来发展的一个更好的目标。
原文地址:www.fast.ai/2018/07/23/auto-ml-3/