滚动新闻 | RSS订阅 | 网站地图 |
你好,游客 登录 注册 搜索

性能超过人类炼丹师,AutoGluon 低调开源

发布时间:2020-01-14 10:12:54  来源:机器之心 企鹅号   采编:郭椿砾  背景:

  自动机器学习效果能有多好?比如让 MobileNet1.0 backbone 的 YOLO3 超过 ResNet-50 backbone 的 faster-rcnn 六个点?AutoGluon 的问世说明,人类炼丹师可能越来越不重要了。

  近日,亚马逊正式推出了开源代码库 AutoGluon。开发者依靠仅仅几行代码,就可以编写出 AI 嵌入应用程序。

  一个多月前,AutoGluon 在 GitHub 已经悄悄上线,但最近几天才正式公开发布。

  开发者「Justin ho」抢先体验了一下 AutoGluon,以下是他的心得体会:

  「ResNet-50 backbone + FasterRCNN 骑脸怎么输嘛。」

  但,最终测试集成绩非常出人意料,AutoGluon 通过 NAS 搜索的结果直接高了六个点。

  对此,李沐表示:

  知乎用户 @Justin ho。

  李沐在知乎上回应:

  AutoML 使用大概 15 倍于单次训练的代价,得到的结果可能比手调的要好。这个主要是对于 CV 而言,尤其是 detection 模型,预计 GluonCV 里面模型很快赢来一大波提升。

  AutoGluon 取了一个巧,我们目前只支持 GluonCV 和 GluonNLP 里面的任务,和额外的 Tabular 数据(因为一个小哥之前有过经验)。所以我们可以把以前的很有经验东西放进去来减小搜参空间,从而提升速度。

  当然 AutoGluon 还是早期项目,我本来想是让团队再开发一些时间再公开。还有太多有意思的应用、算法、硬件加速可以做的。非常欢迎小伙伴能一起贡献。

  AutoGluon:新特性

  图解 AutoGluon。

  AutoGluon 支持易使用和易扩展的 AutoML,并专注于涵盖图像、文本或表格数据的深度学习和实际应用。AutoGluon 适用于机器学习初学者和专家,能够使他们:

  通过几行代码即可快速地为数据构建深度学习原型方案;

  利用自动超参数微调、模型选择/架构搜索和数据处理;

  无需专家知识即可自动使用深度学习 SOTA 方法;

  轻松地提升现有定制模型和数据管道,或者根据用例自定义 AutoGluon。

  支持功能

  现在 AutoGluon 已经支持了以下一些应用:

  表格预测:基于数据表中一些列的值预测其他列的值;

  图像分类:识别图像中的主要对象;

  对象检测:借助图像中的边界框检测多个对象;

  文本分类:基于文本内容做出预测。

  除了这些之外,AutoGluon 还可以进行神经架构搜索,使用起来较为简便。

  怎样使用 AutoGluon 呢?官方文档中提供了示例代码,机器之心进行了节选:

  示例代码

  表格预测

  对于用表格形式(存储为 CSV 文件等)来表示的标准数据集来说,AutoGluon 可以自动根据其他列的值来预测某一列值。只需要调用一次 fit(),就可以在标准的监督学习任务(包括分类和回归)中实现很高的准确性,而无需数据清洗、特征工程、超参数优化、模型选择等等繁琐的流程。

  首先,导入 AutoGluon 中预测表格的相关 api。

  import autogluon as agfrom autogluon import TabularPrediction as task

  加载数据(这里使用官方教程提供的数据集)。

  train_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')train_data = train_data.head(500) # subsample 500 data points for faster demoprint(train_data.head())

  表格 train_data 中的每一行都对应单独的训练样本。在官方教程提供的数据集中,每一行对应单个人,并且表格列包含各种统计特征。

  我们先来用这些特征预测一下某个人的收入是否超过 5 万美元,相关信息记录在该表的 class 列中。

  然后进行训练:

  dir = 'agModels-predictClass' # specifies folder where to store trained modelspredictor = task.fit(train_data=train_data, label=label_column, output_directory=dir)

  加载测试集并测试:

  test_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')y_test = test_data[label_column] # values to predicttest_data_nolab = test_data.drop(labels=[label_column],axis=1) # delete label column to prove we're not cheatingprint(test_data_nolab.head())

  图像分类

  和表格预测任务类似,AutoGluon 可以自动对图像进行分类,并使用 GPU 进行训练。

  首先加载图像分类 api:

  import autogluon as agfrom autogluon import ImageClassification as task

  然后只需要短短几行代码就可以构建一个图像分类器(数据集为教程自带数据集):

  classifier = task.fit(dataset,epochs=10,ngpus_per_trial=1,verbose=False)

  打印训练结果中最好的:

  print('Top-1 val acc: %.3f' % classifier.results['best_reward'])

  对单一图像进行测试,这里的 ag.get_gpu_count() 用于检测是否有 GPU,如有则大于 0。

  # skip this if training FashionMNIST on CPU.if ag.get_gpu_count() > 0: image = 'data/test/BabyShirt/BabyShirt_323.jpg' ind, prob = classifier.predict(image)print('Theinputpictureisclassifiedas[%s],withprobability%.2f.'%(dataset.init().classes[ind.asscalar()],prob.asscalar()))

  在测试集上测试并打印结果:

  test_acc = classifier.evaluate(test_dataset)print('Top-1 test acc: %.3f' % test_acc)

  神经架构搜索

  对于 AutoML 的框架来说,神经架构搜索是很重要的一个应用。近来,流行的 NAS 方法,如 ENAS 和 ProxylessNAS 都通过构建一个超网络(supernet)并在不同的架构之间共享权重,从而加速搜索速度。

  ProxylessNAS 架构。

  AutoGluon 也提供了相应的功能。

  以「为硬件设备搜索合适的神经网络架构」为例:

  首先,导入相关 api。

  import autogluon as agimport mxnet as mximport mxnet.gluon.nn as nn

  然后使用 MXNet 框架构建一个 CNN 的基础架构:

  class Identity(mx.gluon.HybridBlock): def hybrid_forward(self, F, x): return xclass ConvBNReLU(mx.gluon.HybridBlock): def __init__(self, in_channels, channels, kernel, stride): super().__init__() padding = (kernel - 1) // 2 self.conv = nn.Conv2D(channels, kernel, stride, padding, in_channels=in_channels) self.bn = nn.BatchNorm(in_channels=channels) self.relu = nn.Activation('relu') defhybrid_forward(self,F,x): returnself.relu(self.bn(self.conv(x)))

  构建一个 ENAS 单元用于架构搜索:

  from autogluon.contrib.enas import *@enas_unit()class ResUnit(mx.gluon.HybridBlock): def __init__(self, in_channels, channels, hidden_channels, kernel, stride): super().__init__() self.conv1 = ConvBNReLU(in_channels, hidden_channels, kernel, stride) self.conv2 = ConvBNReLU(hidden_channels, channels, kernel, 1) if in_channels == channels and stride == 1: self.shortcut = Identity() else: self.shortcut=nn.Conv2D(channels,1,stride,in_channels=in_channels) defhybrid_forward(self,F,x): returnself.conv2(self.conv1(x))+self.shortcut(x)

  使用序列代码块(Sequential Block)创建 ENAS 网络。

  mynet = ENAS_Sequential( ResUnit(1, 8, hidden_channels=ag.space.Categorical(4, 8), kernel=ag.space.Categorical(3, 5), stride=2), ResUnit(8, 8, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=2), ResUnit(8, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=2), ResUnit(16, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=1, with_zero=True), ResUnit(16, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=1, with_zero=True), nn.GlobalAvgPool2D(), nn.Flatten(), nn.Activation('relu'), nn.Dense(10, in_units=16),)mynet.initialize()#mynet.graph

  定义奖励函数:

  reward_fn = *lambda* metric, net: metric * ((net.avg_latency / net.latency) ** 0.1)

  最后开始训练即可:

  scheduler = ENAS_Scheduler(mynet, train_set='mnist',reward_fn=reward_fn, batch_size=128, num_gpus=1,warmup_epochs=0, epochs=1, controller_lr=3e-3,plot_frequency=10, update_arch_frequency=5)scheduler.run()

  AutoGluon 使用怎么样

  目前 AutoGluon 网站已经有众多教程了,开发者能用它快速处理各种结构化与非结构化数据。对于资深开发者,AutoGluon 还提供了一系列定制化的指南,我们能学会如何使用 AutoGluon 的 API 自动提升预测性能。

  当然,由于 AutoGluon 目前仍在完善中,有些开发者表示,目前 AutoGluon 文档主要包含了核心流程,还有一些额外的工具没有详细介绍。

  在知乎评论中,很多开发者表示 AutoGluon 在视觉任务上的效果很好,甚至如果采用 AutoGluon 自带的 YOLOV3(mobilenet1.0 backbone),它的效果还要优于手动调参的 FasterRCNN(resnet50 backbone)。

  这是非常令人惊讶的,毕竟 YOLOV3 是一种单阶段的检测器,它更擅长推理速度。而 FasterRCNN 这种二阶段检测器,虽然推理速度没那么快,但效果一般要更好。更不用说 AutoGluon 采用的骨干网络只是 MobileNet 1.0,它的表达能力远没有 ResNet 50 强。综合这两种因素,AutoGluon 超过手动效果,就显得非常令人惊讶了。

  之前李沐就曾表示 AutoGluon 的使用代价差不多是单次训练的 15 倍,所以在 15 次尝试中,我们还真不一定能找到超越 AutoGluon 的整套超参。不过也有开发者认为要是有一个比较好的搜索空间,随机搜索 15 次也能找到比较好的超参。李沐说:「AutoGluon 15 次 Search 的结果差不多类似于 Random Search 30 次,但前提是 Search Space 构造的比较好,不要太大与太小。」

  目前很多开发者与研究者都已经在尝试 AutoGluon 的效果,有些简单调参工作既然机器做得更好,那么为什么不交给它们呢?算法工程师该做的,应该是理解业务与数据,并作出新的调整与创新。

  参考链接:https://github.com/awslabs/autogluon

  https://www.amazon.science/amazons-autogluon-helps-developers-get-up-and-running-with-state-of-the-art-deep-learning-models-with-just-a-few-lines-of-code

  https://venturebeat.com/2020/01/09/amazons-autogluon-produces-ai-models-with-as-little-as-three-lines-of-code/


本文来源:机器之心 企鹅号

本文评论
下一个十年,Al会淘汰掉目前一半的工作吗?
人工智能的发展固然会对现有工作岗位产生“替代效应”,但也会产生增加就业的“需求效应”和“创新效应”,且后两者的强...
日期:01-14
性能超过人类炼丹师,AutoGluon 低调开源
自动机器学习效果能有多好?比如让 MobileNet1.0 backbone 的 YOLO3 超过 ResNet-50 backbone 的 faster-rcnn 六个点?AutoGluon 的问世说明,人类炼丹师可...
日期:01-14
带眼睛的扫地机器人见过吗?除了能看会跑,还有超大吸力
本文由腾讯数码独家发布
  当代年轻人都在积极寻找能提高生活品质的家用电器,扫地机器人绝对算是其中之一。不管你是养猫养狗,还是单纯懒得打扫...
日期:01-14
Jeff Dean 的年终汇报:细数谷歌 AI 的重大突破
对于谷歌的研究团队来说,2019 年是令人兴奋的一年。Google Research 通过多种方式推动技术研究工作,包括基础计算机科学研究成果和出版物,以及多项研究...
日期:01-14
最适合和家人一起打卡的AI网红展:你有多久没有陪伴父母了?
“自从有了小度,我妈叫我也是小赵小赵”,“爷爷每次用小度,都要用请字开头”,“有了小度以后,爸妈一拌嘴就去找它评理&rdq...
日期:01-13
日韩经营者最重视AI,中国多样化
(观察者网讯)据日本经济新闻1月9日报道,该媒体于2019年11月28日—12月16日与中国《环球时报》、韩国《每日经济新闻》共同实施了“中日韩经营...
日期:01-10
索尼电视:AI芯片让画质领先行业 75寸8K电视有望正式普及
腾讯数码讯 如果说去年索尼在CES上的发布会是总裁兼CEO吉田宪一郎上任之后对外发布的索尼公司在未来几年的整体愿景,那么在今年CES 2020年的发布会上,针...
日期:01-10
写假新闻、劝主人自杀,AI“出格”谁的罪?
机器人写的文章,该有著作权吗?智能音箱出BUG劝主人自杀,该追究谁的责任?AI批量创作假新闻、AI换脸、自动驾驶事故……以前只存在于科幻小说...
日期:01-09
面对超级人类,你准备好了吗?
人工智能不会成为新物种,却可能导致人类内部崛起一个新种族,这个种族就是超级人类
日期:01-09
越来越强的AI芯片,击碎了云电脑的美梦
说到个人计算设备上的人工智能(AI),稍有关注消费电子市场的朋友们可能马上就会想到已经红火了数年的AI智能手机,以及如今已经司空见惯的“语音助手...
日期:01-09
Facebook封禁Deepfake AI换脸视频
北京时间1月8日早间消息,Facebook表示,将禁止发布由人工智能深度操纵的视频。这是该公司为打击平台上假信息而做出的一系列调整中的最新一步。
日期:01-09
英特尔描绘PC未来:有AI,几秒就能做以前几分钟的事
1月8日消息,据国外媒体报道,在今年的国际消费电子展(CES)上,英特尔描绘了一个搭载其最新芯片的、融入AI的折叠屏PC未来。
日期:01-08
美国要限制AI软件出口,专家:将更大激发中国自主研发能力
美国若放弃中国市场,会因市场萎缩导致利润不足、竞争力下降,反而有利于中国以及欧洲、日本、韩国等竞争对手。美国科技公司、学术界和决策者也曾呼吁美...
日期:01-06
担心AI智能软件被竞争对手获取,美国公布最新AI出口管制措施
美国官方想阻止美国公司帮助中国等竞争对手制造更好的人工智能产品,这项措施涵盖了可以被传感器、无人机和卫星用来自动识别军事和民用目标的软件。
日期:01-06
美国政府宣布限制AI软件出口 下周一生效
1月5日消息,据国外媒体报道,美国政府将采取措施限制人工智能(AI)软件的出口,避免敏感技术落入竞争对手手中。
日期:01-06
日本政府计划今年召开国际会议讨论限制AI武器
1月5日消息,据国外媒体报道,日本政府近日决定,为了制定限制使用人工智能(AI)的武器的国际规则,将在今年召开国际会议。
日期:01-06
日本政府计划今年召开国际会议讨论限制AI武器
日本政府近日决定,为了制定限制使用人工智能(AI)的武器的国际规则,将在今年召开国际会议。国际会议将在东京召开。外媒称,这是为了使日本在限制方式的...
日期:01-06
AI美颜到50mm人像镜头:vivo眼中的“真实”是什么样的
什么是“真实”?是不加修饰的超级特写、还是没有后期的直出照片?其实绝对的真实是不存在的,无论是专业的摄影还是平时的自拍,都或多或少都存...
日期:01-04
时间就是金钱 讯飞智能录音笔让AI助你成为“百万富翁”
“时间就是金钱,效率就是生命”,这是国人非常熟知的一句口号。它简明扼要的说明了时间与效率对于一个人的重要性。的确,生命不过短短数十年...
日期:01-04
韩国首尔将安装3000个AI摄像头:可判断是否有尾随
1月3日消息 韩国电子与电信研究所称,将在今年7月前在首尔瑞草区率先安装3000个可预测犯罪的AI摄像头。
日期:01-04