谷歌开源AdaNet:基于TensorFlow的AutoML框架
ccwgpt 2024-10-17 08:10 31 浏览 0 评论
选自arXiv,作者:Mikel Artetxe,机器之心编译,参与:路雪、李亚洲。
谷歌开源了基于 TensorFlow 的轻量级框架 AdaNet,该框架可以使用少量专家干预来自动学习高质量模型。据介绍,AdaNet 在谷歌近期的强化学习和基于进化的 AutoML 的基础上构建,快速灵活同时能够提供学习保证(learning guarantee)。重要的是,AdaNet 提供通用框架,不仅能用于学习神经网络架构,还能学习集成架构以获取更好的模型。
- 相关论文: AdaNet: Adaptive Structural Learning of Artificial Neural Networks
- 论文地址:http://proceedings.mlr.press/v70/cortes17a/cortes17a.pdf
- Github 项目地址:https://github.com/tensorflow/adanet
- 教程 notebook:https://github.com/tensorflow/adanet/tree/v0.1.0/adanet/examples/tutorials
结合不同机器学习模型预测的集成学习在神经网络中得到广泛使用以获得最优性能,它从其悠久历史和理论保证中受益良多,从而在 Netflix Prize 和多项 Kaggle 竞赛等挑战赛中取得胜利。但是,因其训练时间长、机器学习模型的选择要求领域专业知识,它们在实践中并不那么常用。而随着算力、深度学习专用硬件(如 TPU)的发展,机器学习模型将越来越大,集成技术也将越发重要。现在,想象一个工具,它能够自动搜索神经架构,学习将最好的神经架构集成起来构建高质量模型。
刚刚,谷歌发布博客,开源了基于 TensorFlow 的轻量级框架 AdaNet,该框架可以使用少量专家干预来自动学习高质量模型。AdaNet 在谷歌近期的强化学习和基于进化的 AutoML 的基础上构建,快速灵活同时能够提供学习保证(learning guarantee)。重要的是,AdaNet 提供通用框架,不仅能用于学习神经网络架构,还能学习集成架构以获取更好的模型。
AdaNet 易于使用,能够创建高质量模型,节省 ML 从业者在选择最优神经网络架构上所花费的时间,实现学习神经架构作为集成子网络的自适应算法。AdaNet 能够添加不同深度、宽度的子网络,从而创建不同的集成,并在性能改进和参数数量之间进行权衡。
AdaNet 适应性地增长集成中神经网络的数量。在每次迭代中,AdaNet 衡量每个候选神经网络的集成损失,然后选择最好的神经架构进入下一次迭代。
快速易用
AdaNet 实现了 TensorFlow Estimator 接口,通过压缩训练、评估、预测和导出极大地简化了机器学习编程。它整合如 TensorFlow Hub modules、TensorFlow Model Analysis、Google Cloud』s Hyperparameter Tuner 这样的开源工具。它支持分布式训练,极大减少了训练时间,使用可用 CPU 和加速器(例如 GPU)实现线性扩展。
AdaNet 在 CIFAR-100 上每个训练步(x 轴)对应的准确率(y 轴)。蓝线是训练集上的准确率,红线是测试集上的性能。每一百万个训练步开始一个新的子网络,最终提高整个集成网络的性能。灰色和绿色线是添加新的子网络之前的集成准确率。
TensorBoard 是 TensorFlow 最好的功能之一,能够可视化训练过程中的模型指标。AdaNet 将 TensorBoard 无缝集成,以监控子网络的训练、集成组合和性能。AdaNet 完成训练后将导出一个 SavedModel,可使用 TensorFlow Serving 进行部署。
学习保证
构建神经网络集成存在多个挑战:最佳子网络架构是什么?重复使用同样的架构好还是鼓励差异化好?虽然具备更多参数的复杂子网络在训练集上表现更好,但也因其极大的复杂性它们难以泛化到未见过的数据上。这些挑战源自对模型性能的评估。我们可以在训练集分留出的数据集上评估模型表现,但是这么做会降低训练神经网络的样本数量。
不同的是,AdaNet 的方法是优化一个目标函数,在神经网络集成在训练集上的表现与泛化能力之间进行权衡。直观上,即仅在候选子网络改进网络集成训练损失的程度超过其对泛化能力的影响时,选择该候选子网络。这保证了:
- 集成网络的泛化误差受训练误差和复杂度的约束。
- 通过优化这一目标函数,能够直接最小化这一约束。
优化这一目标函数的实际收益是它能减少选择哪个候选子网络加入集成时对留出数据集的需求。另一个益处是允许使用更多训练数据来训练子网络。
AdaNet 目标函数教程:https://github.com/tensorflow/adanet/blob/v0.1.0/adanet/examples/tutorials/adanet_objective.ipynb
可扩展
谷歌认为,创建有用的 AutoML 框架的关键是:研究和产品使用方面不仅能够提供合理的默认设置,还要让用户尝试自己的子网络/模型定义。这样,机器学习研究者、从业者、喜爱者都能够使用 tf.layers 这样的 API 定义自己的 AdaNet adanet.subnetwork.Builder。
已在自己系统中融合 TensorFlow 模型的用户可以轻松将 TensorFlow 代码转换到 AdaNet 子网络中,并使用 adanet.Estimator 来提升模型表现同时获取学习保证。AdaNet 将探索他们定义的候选子网络搜索空间,并学习集成这些子网络。例如,采用 NASNet-A CIFAR 架构的开源实现,把它迁移到一个子网络,经过 8 次 AdaNet 迭代后提高其在 CIFAR-10 上的当前最优结果。此外,获得的模型在更少参数的情况下获得了以下结果:
在 CIFAR-10 数据集上,NASNet-A 模型的表现 vs 结合多个小型 NASNet-A 子网络的 AdaNet 的表现。
通过固定或自定义 tf.contrib.estimator.Heads,用户可以使用自己定义的损失函数作为 AdaNet 目标函数的一部分来训练回归、分类和多任务学习问题。
用户也可以通过拓展 adanet.subnetwork.Generator 类别,完全定义要探索的候选子网络搜索空间。这使得用户能够基于硬件扩大或缩小搜索空间范围。子网络的搜索空间可以简单到复制具备不同随机种子的同一子网络配置,从而训练数十种具备不同超参数组合的子网络,并让 AdaNet 选择其中一个进入最终的集成模型。
相关推荐
- 用Steam启动Epic游戏会更快吗?(epic怎么用steam启动)
-
Epic商店很香,但也有不少抱怨,其中一条是启动游戏太慢。那么,如果让Steam启动Epic游戏,会不会速度更快?众所周知,Steam可以启动非Steam游戏,方法是在客户端左下方点击“添加游戏”,然...
- Docker看这一篇入门就够了(dockerl)
-
安装DockerLinux:$curl-fsSLhttps://get.docker.com-oget-docker.sh$sudoshget-docker.sh注意:如果安装了旧版...
- AYUI 炫丽PC开发UI框架2016年6月15日对外免费开发使用 [1]
-
2016年6月15日,我AY对外发布AYUI(WPF4.0开发)的UI框架,开发时候,你可以无任何影响的去开发PC电脑上的软件exe程序。AYUI兼容XP操作系统,在Win7/8/8.1/10上都顺利...
- 别再说C#/C++套壳方案多了!Tauri这“借壳生蛋”你可能没看懂!
-
浏览器套壳方案,C#和C++有更多,你说的没错,从数量和历史积淀来看,C#和C++确实有不少方式来套壳浏览器,让Web内容在桌面应用里跑起来。但咱们得把这套壳二字掰扯清楚,因为这里面学问可大了!不同的...
- OneCode 核心概念解析——Page(页面)
-
在接触到OneCode最先接触到的就是,Page页面,在低代码引擎中,页面(Page)设计的灵活性是平衡“快速开发”与“复杂需求适配”的关键。以下从架构设计、组件系统、配置能力等维度,解析确...
- React是最后的前端框架吗,为什么这么说的?
-
油管上有一位叫Theo的博主说,React是终极前端框架,为什么这么说呢?让我们来看看其逻辑:这个标题看起来像假的,对吧?React之后明明有无数新框架诞生,凭什么说它是最后一个?我说的“最后一个”不...
- 面试辅导(二):2025前端面试密码:用3个底层逻辑征服技术官
-
面试官放下简历,手指在桌上敲了三下:"你上次解决的技术难题,现在回头看有什么不足?"眼前的候选人瞬间僵住——这是上周真实发生在蚂蚁金服终面的场景。2025年的前端战场早已不是框架熟练...
- 前端新星崛起!Astro框架能否终结React的霸主地位?
-
引言:当"背着背包的全能选手"遇上"轻装上阵的短跑冠军"如果你是一名前端开发者,2024年的框架之争绝对让你眼花缭乱——一边是React这位"背着全家桶的全能选...
- 基于函数计算的 BFF 架构(基于函数计算的 bff 架构是什么)
-
什么是BFFBFF全称是BackendsForFrontends(服务于前端的后端),起源于2015年SamNewman一篇博客文章《Pattern:BackendsFor...
- 谷歌 Prompt Engineering 白皮书:2025年 AI 提示词工程的 10 个技巧
-
在AI技术飞速发展的当下,如何更高效地与大语言模型(LLM)沟通,以获取更准确、更有价值的输出,成为了一个备受关注的问题。谷歌最新发布的《PromptEngineering》白皮书,为这一问题提供了...
- 光的艺术:灯具创意设计(灯光艺术作品展示)
-
本文转自|艺术与设计微信号|artdesign_org_cn“光”是文明的起源,是思维的开端,同样也是人类睁眼的开始。每个人在出生一刻,便接受了光的照耀和洗礼。远古时候,人们将光奉为神明,用火来...
- MoE模型已成新风口,AI基础设施竞速升级
-
机器之心报道编辑:Panda因为基准测试成绩与实际表现相差较大,近期开源的Llama4系列模型正陷入争议的漩涡之中,但有一点却毫无疑问:MoE(混合专家)定然是未来AI大模型的主流范式之一。...
- Meta Spatial SDK重大改进:重塑Horizon OS应用开发格局
-
由文心大模型生成的文章摘要Meta持续深耕SpatialSDK技术生态,提供开自去年9月正式推出以来,Meta持续深耕其SpatialSDK技术生态,通过一系列重大迭代与功能增强,不断革新H...
- "上云"到底是个啥?用"租房"给你讲明白IaaS/PaaS/SaaS的区别
-
半夜三点被机房报警电话惊醒,顶着黑眼圈排查服务器故障——这是十年前互联网公司运维的日常。而现在,程序员小王正敷着面膜刷剧,因为公司的系统全"搬"到了云上。"部署到云上"...
- php宝塔搭建部署thinkphp机械设备响应式企业网站php源码
-
大家好啊,欢迎来到web测评。本期给大家带来一套php开发的机械设备响应式企业网站php源码,上次是谁要的系统项目啊,帮你找到了,还说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制测试了一下...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 用Steam启动Epic游戏会更快吗?(epic怎么用steam启动)
- Docker看这一篇入门就够了(dockerl)
- AYUI 炫丽PC开发UI框架2016年6月15日对外免费开发使用 [1]
- 别再说C#/C++套壳方案多了!Tauri这“借壳生蛋”你可能没看懂!
- OneCode 核心概念解析——Page(页面)
- React是最后的前端框架吗,为什么这么说的?
- 面试辅导(二):2025前端面试密码:用3个底层逻辑征服技术官
- 前端新星崛起!Astro框架能否终结React的霸主地位?
- 基于函数计算的 BFF 架构(基于函数计算的 bff 架构是什么)
- 谷歌 Prompt Engineering 白皮书:2025年 AI 提示词工程的 10 个技巧
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)