本文概述
由于srcmini, Coursera, Udacity等组织不断努力研究如何有效地, 灵活地将机器学习的知识带给普通民众, 因此机器学习并不是一个非常普遍的名词。凭借其平台的优势, 如今在几乎没有任何先决条件的情况下开始这一领域的确非常容易。但是, “自动机器学习”一词最近在流行的数据科学教育论坛上成为头条新闻。值得称赞的是, 像Google, H2O.ai等许多组织在这一领域开展工作。与机器学习相比, 这不是一个很常见的话题。因为机器学习涉及自动化部分本身;因此自然而然地成为第一个引起关注的问题-“机器学习也可以自动化吗?”
你将在本教程中找到许多类似问题的答案。本教程包括以下内容:
- 了解标准的机器学习管道
- 机器学习管道如何实现自动化?
- 自动化机器学习简介
- 用于自动机器学习的Python库
- auto-keras简介
- 使用auto-keras的AutoML案例研究
- 关于该主题的进一步阅读
让我们开始吧。
资料来源:IBM Data Hub
了解标准的机器学习管道
当你以数据科学家的身份解决问题时, 你的标准工作流程如下所示:
- 数据采集
- 数据预处理
- 初始化可能适合该问题的机器学习模型
- 训练模型
- 测试模型
- 调整模型参数
- 再次测试模型
- 交流结果
第二步, 数据预处理在上下文中非常广泛, 因为它本质上是上述管道中最耗时的任务之一, 并且包含许多子任务, 例如数据清理, 数据转换, 功能选择等。步骤从3开始to 7仅适用于一种机器学习模型。优秀的从业人员仅凭一种模式就不会停下来。他将尝试在不同模型上进行实验以比较其结果, 并最终确定问题的最佳模型。因此, 这是另一套非常耗时的任务-确定选择哪种模型?
关于机器学习任务中的调试过程的以下引用再合适不过了, 必须牢记:
“针对机器学习的调试在两种情况下发生:1)你的算法无法正常工作或2)你的算法无法正常运行。[…]第一次算法很少能正常工作, 因此最终被大部分时间都花在构建算法上。” -扎伊德·埃南(S. Zayd Enam)
因此, 到目前为止, 你必须对标准的机器学习工程任务有一个简短的了解?最终, 你将必须决定哪种模型最适合解决你的问题, 并且还需要说明为什么它是最佳的。有时, 你将处于尝试的可能性太多的情况下, 但是截止日期还不算太远。 -了解问题的实质吗?让我们了解更多。
机器学习管道如何实现自动化?
在本节中, 你将继续为问题和情况(与可能性和截止日期成反比)确定最佳模型的概念。
在本教程的开始, 你遇到了一个问题”机器学习也可以自动化吗?”这个问题一点也不傻。甚至伟大的塞巴斯蒂安·拉施卡(Sebastian Raschka)在他的一次采访中都将自动化机器学习描述为”自动化自动化的自动化”。
从你刚刚研究的数据科学任务的标准工作流程中重新访问步骤5-调整模型的超参数。假设你已经为后续步骤准备好数据, 并且刚刚启动了分类器$ X $。现在, 假设$ X $接受5个不同的超参数。因此, 你将必须尝试使用相同的分类器$ X $, 但要使用不同的超参数值集, 这绝对不是一件容易的事。现在来了更麻烦的部分。在尝试了各种组合之后, 你发现结果还不够好。因此, 你决定再测试四个分类器(每个分类器具有6个不同的超参数)。你能想象这会花多长时间吗?即使在那之后, 如果你没有获得良好的结果呢?对它的调查仅是另一个耗时的过程。
因此, 自动化机器学习的真正想法就是来自这个问题。
“如果必须使用各种算法和许多不同的超参数配置来构建大量的机器学习模型, 那么该模型构建可以自动化, 模型性能和准确性的比较也可以自动化。” -KDNuggets
你现在有一个理由, 为什么最近在流行的数据科学教育论坛上, “自动机器学习”一词成为头条新闻。现在, 你将在下一部分中学习有关自动机器学习的更多信息。
自动化机器学习简介
本质上, 为不同的机器学习模型调整超参数的任务也很可能很耗时。用更具体的计算机科学术语来说, 超参数的调整是一个搜索过程, 在这种情况下可能非常详尽。那么, 如果此过程本身可以自动化怎么办?嗯, 这就是自动化机器学习的基本功能。 “自动化机器学习是解决数据科学家短缺的直接解决方案, 因为它可以通过加快工作周期, 提高模型准确性甚至最终取代对数据科学家的需求, 来极大地提高数据科学家的性能和生产率。” -物联网的自动机器学习
你现在已经掌握了有关自动化机器学习的足够知识, 并准备好将其付诸实践。但是首先, 让我们看看进行自动化机器学习的一些广泛使用的Python库是什么。
用于自动机器学习的Python库
有许多Python库可用于执行自动机器学习。他们都试图实现或多或少的相同目标, 即自动化机器学习过程。以下是一些用于自动机器学习的最广泛使用的Python库:
- 自动Sklearn
- TPOT
- 自动硬
- H2O.ai
- 谷歌的AutoML
这些库中的每一个都有自己的方法来解决”自动化自动化的自动化”过程。但是对于本教程, 你将使用”自动缩放”。为什么要等呢?我们开始做吧。
auto-keras简介
” Auto-Keras是一个用于自动化机器学习的开源软件库。”(来源)由Texas A&M University的DATA Lab和社区贡献者开发。根据auto-keras的官方网站, “这种自动化机器学习的最终目标是为数据科学或机器学习背景有限的领域专家提供易于访问的深度学习工具。Auto-Keras提供了自动搜索架构和深度学习模型的超参数”。
资料来源:Auto-Hard
要安装自动keras, 只需运行以下命令。
注意:目前, Auto-Keras仅兼容:Python 3.6。
!pip install autokeras
现在你已经成功安装了Auto-Keras, 是时候进行一些快速实现了。
对于此案例研究, 你将使用非常流行的MNIST数据集。 keras具有内置的此数据集。因此, 你无需单独下载。你将通过加载auto-keras的ImageClassifier模块开始。你还将从keras模块加载MNIST数据集。
from keras.datasets import mnist
from autokeras import ImageClassifier
你从keras.datasets模块加载了MNIST数据集, 还从auto-keras导入了ImageClassifier。现在, 你将数据集分为训练和测试拆分。
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1, )) # (1, ) denotes the channles which is 1 in this case
x_test = x_test.reshape(x_test.shape + (1, )) # (1, ) denotes the channles which is 1 in this case
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
你已经分离出训练和测试拆分, 现在将使用x_train和y_train适合ImageClassifier。你将在x_test和y_test上测试其性能。
# Instantiate the ImageClassifier class
clf = ImageClassifier(verbose=True, augment=False)
# Fit the train set to the image classifier
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
# Summarize the results
y = clf.evaluate(x_test, y_test)
print(y * 100)
就像上面一样简单。只需4到5行代码, 你就可以快速进行实验。好吧, 这并不是那么快。上面的代码需要花费大量时间才能执行。不错的运行深度学习实验的配置无疑会为你提供帮助。 Google Colab也是一个很好的起点。
现在, 让我们更多地了解你在以上代码中使用的参数。你将为此参考auto-keras的文档, 以下是文档中的相关摘录:
- 在ImageClassifier()中:
- verbose:是否将搜索过程打印到输出的布尔值。
- 扩充:一个布尔值, 指示数据是否需要扩充。如果未定义, 则它将使用Constant.DATA_AUGMENTATION的值, 默认情况下为True。
- 在fit()方法中:
- time_limit:搜索的时间限制(以秒为单位)。
- final_fit():找到最佳架构后的最终培训。
- retrain:是否重新初始化模型权重的布尔值。
Auto-keras是一个不断发展的库, 仍处于其预发行版本中。根据官方网站, 它支持以下主要模块:
- 监督:所有监督任务的基类。
- 贝叶斯:一种用于贝叶斯优化的GaussianProcessRegressor。
- 搜索:所有搜索器类的基类。每个搜索器类都可以覆盖其搜索功能以实现其策略。
- 图:表示Keras模型的神经结构图的类。 Graph从Keras模型中提取神经结构图。图中的每个节点都是层之间的中间张量。每层都是图形中的一条边。值得注意的是, 多个边缘可以指代同一层。 (例如, “添加”层将两个张量添加到一个张量中。因此, 它与两个边相关。
- 预处理器:可以格式化数据的类。此类提供了将数据的分类标签转换为向量的方法。
- model_trainer:用于训练模型的类。此类可以使用给定的数据加载器训练Pytorch模型。度量, loss_function和模型必须彼此兼容。请在属性中查看详细信息。
尾注
你已经做到了最后。在本教程中, 你总体上研究了机器学习的过程, 并学习了如何使其自动化。你快速浏览了可用于执行AutoML的库。你使用了auto-keras, 并了解了它提供了什么样的高级抽象, 以及使用auto-keras有多么容易。
本教程可能会给你一个否定的想法, 那就是当AutoML完全可靠时, 它可以替代许多数据科学家。真?再想一想。 AutoML实际上使数据科学家摆脱了为问题选择最佳模型的反复过程的负担。在此过程中, 数据科学家可能会更加专注于数据本身, 这是至关重要的。兰迪·奥尔森(Randy Olson)的这次采访涵盖了有关此主题的一些美丽见解。确保你阅读它, 然后会再次感到沮丧。如果你不确定机器学习从业者所做的工作, 只需检查一下这篇文章即可。
自动化机器学习领域确实正在取得进展。例如, NAS代表神经体系结构搜索, 它是一种搜索最佳神经网络体系结构的算法。以下是一些资源链接, 这些资源展示了AutoML的最新使用案例:
- 通过进化设计:如何使用AutoML进化神经网络
- AutoML挑战:机器学习竞赛的一次飞跃
- Google的AI可以创造出比机器学习者更好的机器学习代码
- Auto-Keras, 或如何用4行代码创建深度学习模型
使用了一些参考:
- Auto-Keras, 或如何用4行代码创建深度学习模型
- 自动分享:Google AutoML的杀手er
如果你有兴趣了解有关深度学习的更多信息, 请参加srcmini的” Python深度学习”课程。
评论前必须登录!
注册