从回归分析的出现到深度学习的蓬勃发展,这条算法的进化路线与其说是「机器替代人」,不如说是「机器帮助人类完毕我们不擅长的事」。
这份「不擅长」列表里有「不擅长从大量数据中寻找规律」、「不擅长同一时候完毕大量变量的优化」、「不擅长从高维数据中提取特征」。在今天,又有一批研究者在反省人类是否也「不擅长进行模型设计与模型调优」,以及机器怎样能提供帮助。近两年,以谷歌为代表的公司再次将这一类问题以 AutoML 之名推向众人视野之中。试图探讨这一技术是否能让很多其它行业专家能够跨越project与算法的障碍。只利用专业知识和数据积累,就能在机器的帮助下完毕深度学习算法的开发。
在国内,探智立方就是持有这样愿景的一家公司。这家成立于今年年初的公司致力于开发一个有「自主模型设计」能力的平台——DarwinML——以进化算法为基础,找到模型不依赖人工设计的「进化之路」,从而减少人工智能的应用门槛,让各行业的 IT 人员,行业专家能更简便的将人工智能落地于各种适合并须要的场景中。解決人才短缺及技术能力不足的普遍問題。
七月。机器之心採訪了探智立方的两位创始人,CTO 钱广锐和产品总监宋煜,深入了解这个走向实际应用的 AutoML 系统。
机器之心:探智立方希望以 AutoML 解决哪些问题?
宋煜:AutoML 并非一个全新的概念,这两年它获得了广泛的关注,是由于大家看到数据集本身的分布和模型的关系是十分密切的。
把一个论文中效果非常好的模型应用到某一个特殊场景下。模型的表现下降也会十分严重。两三年前。大家很多其它地会以「超參数调优」的形式进行模型改进。
从基于规则的方法到贝叶斯方法,为了找到一个合理的、趋近于最优解的解空间,大家做了各种不同的尝试。有非常多超參调优的自己主动化工具随之应运而生。之后大家发现除了超參之外,有时必须要改变网络结构等等。最后,大家開始思考:机器是不是能够设计一些模型。
之前我们在做模型的优化的时候也感受到,最有限的资源还是人的时间。因此,从去年開始我们尝试把模型优化的过程尽量抽象成一个纯数学问题,然后利用机器的强大计算力。以搜索拟合的方式,在有限的时间空间内来寻找全局最优解。探智立方今天就是以 AutoML 为主要方向,解决实际环境中人工智能相关应用模型自己主动化设计和优化的问题。
机器之心:AutoML 都有哪些类别?探智立方选择的是当中的哪一种?
钱广锐:在业界,从「头」学习的 AutoML 算法大概有三种。除了进化算法之外,还有最早以谷歌为代表的纯强化学习算法。眼下从论文以及实践效果来看,进化算法的效率比强化学习要高些。
除此之外。还有眼下也在探索中的元学习方法。
进化算法本身也有非常多分支,比方「进化策略」和「演化方法」。谷歌採用的是演化做法,OpenAI 用的是「进化策略」算法。
探智立方的「DarwinML 平台」是一个基于「演化」算法类型的 AutoML 系统。
当然,假设是不要求从「头」学习的 AutoML 方法,也有预设一个模型库,从中选择对应的模型进行优化或者迁移的做法。
机器之心:探智立方在 AutoML 中重点关注哪方面的工作?
宋煜:我们和其它偏学术的机构不一样的地方是我们希望从 AutoML 的角度提供模型可解释性。
现在的可解释性研究很多其它是让研究者去将中间的特征提取层权重或激活进行输出,研究每一层的影响是什么。再把自己的观察传达给机器。可是人的时间是有限的,我们希望由机器自己完毕这个过程。
我们希望机器自己总结「特征提取」到底提取了什么。找到为什么一个特定的提取方法和损失函数计算组合作用在特定的数据分布上的时候,能让梯度下降更快,损失更小,然后将这些知识解释成机器能够理解的数据化的表达方式反馈回系统,变成属性。为下一次设计提供指导性意见,提高设计效率。
换言之。我们也在实践进行模型设计的「大脑」可不能够越来越聪明。能不能在为类似的问题或者数据类型设计模型的时候,迅速地将设计时间从「四天达到 80% 准确率」缩短为一天甚至几小时之内达到同等准确率?是否能让最初几代模型不用走太多弯路就能够进入一个和最优解非常相近的解空间里。
钱广锐:现在的学界对 AutoML 的研究大多集中在方法论本身。而我们很多其它关注怎样能够让 AutoML 技术用户实际的数据结合,在项目中落地。
我们开发了「DarwinML 平台」,在帮助大量的用户学习了自己的数据、训练自己的模型的过程中。也让平台越来越聪明,能够更高效地帮用户实际解决这个问题。
机器之心:DarwinML 平台的目标用户群是谁?完毕一个任务须要用户完毕哪些工作?平台完毕哪些工作?
宋煜:DarwinML 平台是一个全生命周期管理平台,这个平台的终于目标,是成为一个自己主动模型开发平台。让业务人员,或者说不是专门从事 AI 研究的人。也能够设计一个符合业务目标的模型出来。
用户要做的就是准备数据,以及进行一些算力和期望效果的选择:使用算力的上限、模型精度要求、最长训练时间等。
对算法有了解和模型设计有经验的用户。也能够就模型设计过程中的參数,比方进化算法的最大演化代数、模型最大的期望深度进行设置,甚至能够动态剔除的模型设计中不须要的「基因」、调节不同变化操作方式的进化算子的比例等。
余下的数据清洗、模型设计、训练、调优、评估、推理,都在平台上自己主动完毕演化。
机器之心:是否能描写叙述一下平台完毕一个任务的过程?
宋煜:首先,「DarwinML 平台」会提取数据的统计信息,依据统计信息设置一个演化的初始条件,包含模型的种群的个数、演化迭代的最大代数。分布式计算资源的分配情况。加上用户设置的算力限制等。
然后平台開始自己主动进行模型设计。
在进化到每一代时,都会对模型进行一次评估,以选择继续演化的方向,同一时候防止种群,也就是全部模型的总体早熟(避免反复使用前期效果比較好的同样或者相近的模型。尽量让选择在解空间里分散化)。
当演化到达客户的准确率或者时间限制要求后。DarwinML 平台会再固定模型结构进行一次參数精调,同一时候进行超參数的局部优化。
最后,在整个过程结束后,以报告的形式将模型的特征、硬件配置、各项表现指标返回给用户。
机器之心:模型的基本组成模块是什么?
钱广锐:我们的平台叫「DarwinML」的原因就是在于其核心算法是进化算法。进化算法的实现基本思想就跟模拟自然界生物进化过程一样。
如同动物从单细胞动物開始。进行生殖时通过 DNA 的交叉变异生成新的个体。我们的模型设计也从第一代的模型种群的初始化開始,保持着种群的大小基本不变,通过逐代演化生成更好的模型。
针对机器学习和深度学习,平台有着同样的演化核心算法,但分别面向机器学习和深度学习的基本构成单元(我们称之为「基因」)有所不同。因此,基因是「DarwinML 平台」设计模型过程中最主要的组成模块。
机器学习的模型「基因」包含一些聚类、Imputer 等数据预处理操作。以及回归、分类等任务相关的四十多个机器学习基本操作,一百二十多个变种。深度学习的「基因」库则更加庞大和复杂,它包含不同的深度学习神经元基因。比方卷积模块、 LSTM 模块、池化、全连接层等等。而当一些「基因」组合在一起的形成性能优异的更「大」的模块时。也会被固定下来。成为一个新的「基因」。
这个拥有超过一百二十个初始化的深度学习基因库,再加上不断演化出现的更复杂的「大」基因库。能够实现设让机器学习、深度学习模型的结构可变性尽可能多、模块尽可能细,让我们能够得以探索一些超出人类想象的领域,发现一些与人类已知经验不同的模型结构。
机器之心:模型的初始生成的过程是什么?
钱广锐:初代种群中的模型有两种来源,一种是 DarwinML 平台依据数据分布情况,从「基因」中随机选择。自己主动生成一些模型,另外我们也支持从用户自己提供的一些「优秀」的初始模型開始演化。
当中模型的初始化生成过程里包含一系列类似「丢骰子」的初始化操作。依据提前定义深度、总体神经元的个数随机生成一系列模型的。当然。DarwinML 平台会也从曾经训练模型的经验里面进行学习,结合用户输入的參数,把初始化问题从一个简单的丢骰子情形变成一个依据数据的特征调整生成分布的问题。比如,系统会依据以往的经验判定。20 层以内的模型可能就能够取得非常好的效果;或者,为了考量模型的性能。须要兼顾部署时的低延迟时,怎样设计一个不超过 50 个神经元模型。
机器之心:是否能描写叙述一下模型的进化过程?
钱广锐:DarwinML平台会把第一代随机生成的模型进行训练、评估。然后进行性能排序。再依据进化算法的「优胜劣汰」法则,选择每个基因能够「遗传」下去的概率:最好的个体理论上会有最大的可能性产生新的子代。来保证产生的个体的质量越来越高。
从一代模型中产生下一代新模型的方法有几种:
一是变异(mutation)操作,将一代模型中的少数几个「基因」替换掉。
或者将模型中的一层总体删掉或者总体复制一次。二是交叉(crossover 或 heredity)操作,比如将两个一代模型分为三部分,把模型 A 的中间部分去掉,用模型 B 的中间部分替换。三是为了保证多样性,继续随机操作(random)生成一些,採用和第一代同样的办法随机生成新模型。
同一时候,DarwinML 平台还引入了基于贝叶斯的、基于蒙特卡洛树搜索(MCTS)和基于强化学习的三种方法来指导遗传算法进行搜索。贝叶斯方法用于计算下一代模型效力变好的概率分布,MCTS 提供依据树搜索产生的结果来设计可能存在的合理模型,而强化学习则不全然局限于模型变化本身,而是依据特定进化过程后、模型的得分、其它的输入信息更新 Q-table。指导生成更合理的模型和演化方向。
进化一代的时间由数据量和算力决定,一个 CIFAR 数据规模大小的深度学习模型 4 个 GPU 上进化一代大约须要 10-20 分钟。一个 400 万条数据的机器学习模型,在 100 个 CPU 核上进化一代大约须要 5-6 小时。
进化代数方面。机器学习模型一般一代在 15-20 个模型左右,不会超过 20 代。深度学习模型通常在 30-40 代。甚至很多其它。一般,模型越复杂,模型种群数量和进化代数就须要很多其它。
机器之心:是否能以可视化的形式展示 DarwinML 平台的进化过程?
宋煜:上图是一个基于 CIFAR-10 数据集的演化过程模型关系图。每个圆圈代表一个模型。圆圈大小代表模型性能,越大代表性能越好;圆圈距离中心的位置代表了模型演进的代数,越靠外的模型是越晚生成的。红色代表模型是由 Random 操作生成的,蓝色代表由 Heredity 操作生成。绿色表示由 Mutation 操作生成。通过这个图,我们能够能够看到,算法非常高效、方向性非常强地向更优方向演进。
同一时候,在图的左下角。我们能够发现。后面的几代模型性能都比較稳定,并且大多都是来自于同一个父母。
在一些复杂的数据中,更加复杂的模型「家族图谱」会清晰地告诉我们模型演化的过程。结合模型的特征。能够更好的研究哪些「优秀」的模块(结构)被一代一代的遗传下去,为模型的可解释性提供数据支持。(下图)
宋煜:例如以下两张图是基于同一个风险分析数据,由 DarwinML 平台自己主动演化设计出来的两个模型计算图。第一个模型 pop3 是第三代里面最好的。第二个模型 pop8 是第八代里面最好的。
pop3 的模型达到了 98% 的准确率,而 pop8 达到了 99% 的准确率。可是相比較而言,pop3 的网络结构复杂的多。
这是一个在演化过程中,通过增加惩处项引导演化过程的样例。即使损失函数或者准确率相近,简单的模型和复杂的模型最后的评分差距也会比較大。惩处项的引入让系统能够设计更高效的网络而不是更复杂的网络。
另外,这是一个分类任务,可是机器在设计模型的过程中增加了回归算法。机器并没有由于终于的目标是分类而限制基因的种类。而是在更广阔的范围内寻找最优解。在这里,机器觉得用回归方法提取特征再交给分类器的效果更好。
对于 Pop8 另一个有意思的现象是,数据预处理手段「分位转化」(Quantile Transformer)被应用在了分类器和 SVC 算法之前,可是没实用在 K 临近算法之前。
这并非一个人工设定的规则。而是机器通过大量训练后总结出来的规则。
以人类project师的视角观察。我们知道将连续的变量转为离散对于分类器和 SVC 算法是有优点的,特别是在数据维度高、分布分散的情况下。是非常好地避免过溢出的手段。可是 K 临近算法的核心是计算距离,因此对数据进行分位转化反而会引入不必要的噪声,导致数据分布变形。
这个是我们事后对模型的分析。而这个模型本身是在演化过程中全然由机器设计出来的,而没有人为预设的信息或者结构存在。
机器之心:DarwinML 系统平台是否有側重的行业?
宋煜:我们希望平台能为各种行业服务,所以我们的应用案例也是跨行业的:我们在金融领域里做风控相关模型、在保险领域里做图像识别模型、在医疗领域里做医疗电子档案和专业术语的语音识别、在制造业进行质检和良品率分析。
DarwinML 平台的目标就是不限行业,全面减少 AI 的技术门槛。不论什么一个行业,只要有充足的数据。业务人员,而非算法专家,就能够让业务「AI 落地」。
我们希望基于 *DarwinML *建立一个完整的人工智能生态圈*,*包含企业客户服务团队,共享云平台及开发人员社区,从各个维度满足企业级客户对人工智能的期望与需求。
机器之心:为什么选择以 AutoML 角度切入来创业?
钱广锐:我在博士阶段的研究工作是和进化算法和高性能计算密切相关。当时的主要工作是使用大规模计算的方法在人类全然未知的高温高压的材料领域材料设计进行探索,我们当时採用了进化算法结合第一性原理计算。开发了至今仍然是世界率先的材料结构预測软件包。在 IBM 阶段,宋煜和我一起设计了一个面向企业级用户的人工智能的平台产品。
宋煜:我的早期背景是高性能计算和底层数据库,后来则设计了能够支持 Torch、Caffe、TensorFlow 等主要深度学习框架的上层建模平台。
在过程中。我们发现模型的设计是最麻烦的地方。在当时。我们使用了很多超參调优的方法,试图在有限的计算力下在短期内找到一个比較好的模型,可是模型设计还是非常麻烦。
我们觉得。在 AI 领域,有两个方向是值得投入大量人力精力去做的:一是损失函数本身的设计,二是怎样在特定的应用领域里使用 AI 模型。除此之外。模型设计和模型调优是耗时又没有太大意义的工作。尽管这是今天数据科学家和算法科学家的主要工作内容,可是久而久之。我们发现模型的类似性非常大。而一旦我们把它概括为一个可微、可求导的数学问题。那么机器的「设计」、「寻找最优」的速度甚至不亚于人。
最后一届 ImageNet 大赛就是一个十分有趣的样例。那一届的优胜模型事实上并非一个拥有新结构的模型,而是海康威视利用大量计算力完毕了一次精调。这证明了在參数调整方面,给定一年的时间限制,机器的能力已经胜过了人。而在超參数调节,乃至模型结构设计方面,道理也是相通的,我们坚信这都是机器能够帮助人完毕,甚至比人做得更好的工作。