资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

AutoML : 更有效地设计神经网络模型

作者:AI研习社-译站
2020/09/14 10:53

AutoML : 更有效地设计神经网络模型

字幕组双语原文:AutoML : 更有效地设计神经网络模型

英语原文:AutoML: Creating Top-Performing Neural Networks Without Defining Architectures

翻译:雷锋字幕组(chenx2ovo


自动化机器学习,通常被称为AutoML,是自动化构建指神经网络结构。AutoML通过智能架构的操作,可以让大家更方便、更快速的进行深度学习的研究。

在本文中,我们将介绍AutoML的以下内容:

关于AutoKeras的一个简短介绍

是不是很激动,让我们正式开始叭!

安装

在安装前,请先确保你安装了以下包:

在命令行中,运行下列两个命令。这样就能正确安装AutoKeras。注意,不能在Kaggle笔记本中运行,最好在本地环境中运行。

AutoML : 更有效地设计神经网络模型

作为测试,在编码环境中运行import autokeras以确保一切正常。 

结构化数据的分类/回归任务

我们从著名的iris数据集开始,该数据集可以从sklearn的几个简单的示例数据集中导入。导入的数据是一个字典,有两个键值对组成,"data "和 "target"。

然而,由于target是分类标签(三个类别),我们需要对它进行虚拟编码。由于结果是一个pandas DataFrame,并且需要一个NumPy数组,我们在pd.get_dummies之后调用.values(独热编码)。

AutoML : 更有效地设计神经网络模型

 调用X.shape得到(150,4),调用y.shape得到(150,3)。这是说明X中包含了150行4列,y中有3个不同的类别(因此有3列)。为了评估我们的模型,我们将把数据分成训练集和测试集。

AutoML : 更有效地设计神经网络模型

 查看数组的尺寸是一个很好的做法:


太好了!一切都很顺利。我们可以开始使用Autokeras了。

导入Autokeras通常没有问题。StructuredDataClassifier是一个在 "结构化数据 ",或者说是带有列和标签的标准二维数据上工作的搜索对象。max_trials参数表示要测试的模型的最大数量;在iris数据集上,由于数据集规模较小,这个参数可以设置较高一些。通常在达到max_trials之前搜索就会结束(它作为一个上限)。

AutoML : 更有效地设计神经网络模型

对于回归问题,使用StructuredDataRegressor。

我们可以通过调用.fit()来启动搜索过程。verbose是一个参数,可以设置为0或1,这取决于你是否希望模型输出训练相关信息,比如潜在网络的架构和每个epoch的搜索情况。然而,每个潜在架构都有数百个epoch,所以开启这一项可能会占用空间并减慢训练速度。

AutoML : 更有效地设计神经网络模型

建议设置verbose=1,来显示整个训练的过程。因为整个搜索过程至少会持续几分钟才能完成。如下面示例的输出:

AutoML : 更有效地设计神经网络模型

如果你愿意的话,可以观察搜索到架构随着时间的推移而不断变化,以及哪些元素会进入最终的神经网络。这一过程很有意思。

在我的本地环境中,在没有GPU加速的情况下,总共花了1小时左右才跑完15次试验。

一旦你的模型被拟合,我们就可以评估它的性能或进行预测。一般来说,这一过程速度较快,所以verbose可以设置为0。

AutoML : 更有效地设计神经网络模型

为了查看模型结构的更多细节并保存它,我们需要使用model = search.export_model()对其进行导出。这里的model是一个标准的TensorFlow/Keras模型,而不是AutoKeras对象。

调用model.summary()可以打印出搜索到的最佳架构。

AutoML : 更有效地设计神经网络模型

保存模型权重,使用model.save(‘filepath/weights.h5’).

图像分类/回归

图像分类和回归的工作原理很像标准结构化数据的分类和回归,但他们所使用的神经网络的建立使用了卷积神经网络的元素,比如卷积层、最大池化和扁平化。其中所有的参数都是可学习的。

例如,我们在MNIST数据集上实验,从28乘28的图像中找到一个卷积神经网络来识别数字。Keras数据集提供了一种方便的方法来检索这些数据,但需要将y变量转换为虚变量。

AutoML : 更有效地设计神经网络模型

我们看一下这些数据的尺寸:


很强!AutoKeras还可以处理四维数据(多通道的彩色图像)。我们可以用ImageClassifier创建一个搜索对象(或者创建ImageRegressor用于回归任务)。

AutoML : 更有效地设计神经网络模型

*如果您正在运行多个搜索,请在定义搜索对象时添加一个参数overwrite=True (ak.object(overwrite=True, max_trials=x))。否则会出现错误。

评估、预测和导出模型的过程与结构化分类器和回归器一样。需要注意的是,对图像数据进行神经架构搜索会花费更长的时间。

文本分类/回归

AutoKeras不需要任何文本矢量化操作,这很方便,因为当前有很多方法可以完成这一操作,而且每一种方法的实现都很漫长。在AutoKeras中这一操作这是由模型学习的。

我们使用20个新闻组数据集,它由属于20个不同类别的若干新闻摘录组成。为了节省时间和计算开销,我们只选择导入其中的四个类别,并且调大了测试集划分规模(整个数据集的一半)。

AutoML : 更有效地设计神经网络模型

X_train和X_test分别是由1128个原始文本字符串组成的数组,y_train和y_test分别是形状(1128, 4)的数组。

请注意,AutoKeras可以处理可变长度的字符串!输入的每个字符串不需要长度相同。

接下来,让我们建立我们的文本分类器/回归器。

AutoML : 更有效地设计神经网络模型

*如果您正在运行多个搜索,请在定义搜索对象时添加一个参数overwrite=True (ak.object(overwrite=True, max_trials=x))。否则会出现错误。

评估、预测和导出与结构化分类器和回归器一样进行。

值得一看的是提出的网络。NLP和深度学习之间的融合可以说是非常先进,像嵌入、空间还原等复杂的元素不需要明确调用就可以实现,这很神奇。

AutoML : 更有效地设计神经网络模型

有了AutoKeras,深度学习更容易被所有人使用!


雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。

团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。

如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。

AutoML : 更有效地设计神经网络模型

雷锋网雷锋网

长按图片保存图片,分享给好友或朋友圈

AutoML : 更有效地设计神经网络模型

扫码查看文章

正在生成分享图...

取消
相关文章