【让调参全部自动化】自动机器学习,神经网络自主编程(代码与诀窍) 2017-07-08 15:02来源:新智元 原标题:【让调参全部自动化】自动机器学习,神经网络自主编程(代码与诀窍) 新智元推荐 来源:KDnuggets,Medium 作者:Matthew Mayo,Thibault Neveu 编译:文强 【新智元导读】自动机器学习(AutoML)是近来很活跃的研究方向。KDnuggets 的主编 Matthew Mayo 写了一篇文章介绍了 AutoML 的概念,以及为什么要做自动机器学习。本文后附 AI 软件工程师 Thibault Neveu 发表在 Medium 的文章,介绍他如何训练神经网络自动编程。 在过去几年,自动机器学习(AutoML)成了一个研究的热点。在继续接下来的话题之前,我们先简单介绍什么是 AutoML,它为什么重要。然后,我们将介绍一个训练神经网络自动编程的项目,附上代码,你可以自己练习。 看着神经网络自己编程是件很令人兴奋的事情,我们强烈推荐你自己动手实践。 首先,什么是自动机器学习(AutoML)? AutoML 不是自动数据科学(automated data science)。当然,两者有所重叠,但机器学习只是数据科学中众多工具的一种,而且机器学习用在预测很好,但描述性分析等任务里根本不会用到机器学习。 不过,就算是预测任务,数据科学涵盖的也不仅仅是实际的预测模型。数据科学家 Sandro Saitta 在讨论 AutoML 与自动数据科学间的潜在混淆时曾经说过: 误解来自于整个数据科学过程(参见例如CRISP-DM)与数据准备(特征提取等)和建模(算法选择、超参数调整等)的子任务之间的混淆。…… 在阅读有关自动数据科学和数据科学竞赛的工具的消息时,没有行业经验的人可能会感到困惑,开奖,认为数据科学只是建模,并可以完全自动化。 他是对的,这不仅仅是一个语义问题。此外,数据科学家和自动机器学习支持者 Randy Olson 指出,有效的机器学习设计需要我们: 总是调整模型的超参数 总是尝试许多不同的模型 始终为数据探索大量的特征表征 综上,我们可以认为 AutoML 是算法选择、超参数调优、迭代建模和模型评估的任务。当然,这个定义并不完全精准,但让我们先从这里开始。 为什么要做 AutoML? AI 研究员和斯坦福大学博士生 S.Zayd Enam 在一篇名为《为什么机器学习“难”》的博客中写道(加粗强调部分是原文就有的): 机器学习仍然是一个相对“困难”的问题。毫无疑问,通过研究推进机器学习算法的科学是困难的。它需要创造力、实验和韧性。实现现有的算法和模型去适应新的应用程序时,机器学习仍然是一个难题。 注意,虽然 Enam 主要指的机器学习研究,但他也讲到现有算法在用例中的实现(见加粗部分)。 接下来,Enam 继续阐述了机器学习的难点,着重于算法的本质(强调也是原文就有的): 困难的一个方面涉及要靠直觉去想用什么工具解决问题。这需要知道可用的算法和模型以及每个算法和模型的利弊和约束。…… 困难在于机器学习在根本上是很难调试的问题。机器学习需要调试的话有两种情况:1)算法不起作用,或2)算法运行不够好……很少有算法一次就行,因此最终大部分时间都用于构建算法。 然后,Enam 从算法研究的角度阐述了这个问题。如果一个算法不起作用,或者做得不够好,而且选择和优化的过程是迭代的,这就给自动化提供了机会,从而有了自动机器学习上场的余地。 我在之前的一篇文章里曾经写过,AutoML 的本质是: 正如 Sebastian Raschka 所描述的那样,计算机编程是关于自动化的,而机器学习是“将自动化自动化”,然后自动机器学习是“自动化自动化自动化”。 编程通过管理重复的任务来减轻我们的劳动;机器学习让计算机学习如何最好地执行这些重复的任务;而自动机器学习让计算机学习如何优化学习如何执行这些任务的结果。 以前我们需要花大力气调整参数和超参数,而自动机器学习系统可以通过多种不同的方法,学习如何以最佳的方式来调整这些结果。 (责任编辑:本港台直播) |