
作者 | Francois Chollet
编译 | CDA数据分析师
The future of deep learning
鉴于我们对深网的工作原理,局限性以及研究现状的了解,我们能否预测中期的发展方向?这是一些纯粹的个人想法。请注意,我没有水晶球,所以我预期的很多事情都可能无法实现。这是一个完全投机的职位。我之所以分享这些预测,并不是因为我希望它们将来能被证明是完全正确的,而是因为它们在当前很有趣并且可以付诸实践。
从高层次来看,我看到希望的主要方向是:
此外,请注意,这些注意事项并非到目前为止一直是深度学习的基础的那种监督学习,而是适用于任何形式的机器学习,包括无监督,自我监督和强化学习。标记的来源或训练循环的样子从根本上来说并不重要;机器学习的这些不同分支只是同一构造的不同方面。
模型作为序列模型
正如我们在前一篇文章中指出的那样,我们可以期望在机器学习领域进行必要的转型发展,是从执行纯模式识别并且只能实现局部概括的模型转向具有抽象和 推理能力的模型,实现极端概括。当前具有基本推理形式的AI程序都由人类程序员进行硬编码:例如,依赖于搜索算法,图操作,形式逻辑的软件。例如,在DeepMind的AlphaGo中,大多数“智能”都是由专业程序员设计和硬编码的(例如,蒙特卡洛树搜索);从数据中学习仅发生在专门的子模块(价值网络和政策网络)中。但是在将来,这样的AI系统可能会完全被了解,而无需人工参与。
实现这一目标的途径可能是什么?考虑一种著名的网络:RNN。重要的是,与前馈网络相比,RNN的限制略少。这是因为RNN不仅仅是几何变换:它们是在for 循环内重复应用的几何变换。暂时的for循环本身是由开发人员进行硬编码的:它是网络的内置假设。自然地,RNN的表示能力仍然受到极大限制,主要是因为它们执行的每个步骤仍然只是可微的几何变换,并且它们从一步到一步传递信息的方式是通过连续几何空间中的点(状态向量)进行的。现在,想象一下以类似的方式通过编程原语(例如for循环)来“增强”神经网络,但不仅仅是for具有硬编码几何内存的单个硬编码循环,而是模型所包含的大量编程原语可以随意操作以扩展其处理功能,例如if分支,while语句,变量创建,用于长期内存的磁盘存储,排序运算符,高级数据结构(如列表,图形和哈希表)等等。这样的网络可以代表的程序空间将比当前深度学习模型所代表的程序要广阔得多,并且其中一些程序可以实现更高的泛化能力。
一言以蔽之,我们将摆脱一方面拥有“硬编码算法智能”(手工软件),另一方面不再具有“学习几何智能”(深度学习)的能力。我们将混合使用提供推理和抽象功能的形式化算法模块和提供非正式直觉和模式识别功能的几何模块。整个系统将在几乎没有人参与的情况下学习。
我认为AI的一个相关子领域可能会大有作为,它是程序综合领域,尤其是神经程序综合领域。程序合成包括通过使用搜索算法(可能是遗传搜索,如遗传编程)自动生成简单程序,以探索大量可能的程序。当找到符合所需规范的程序时,搜索将停止,该程序通常以一组输入输出对的形式提供。正如您所看到的,它是否使人联想到机器学习:给定输入和输出对提供的“训练数据”,我们找到了一个将输入与输出匹配并可以归纳为新输入的“程序”。不同之处在于,我们生成的不是在硬编码程序(神经网络)中学习参数值通过离散搜索过程获取源代码。
我绝对希望这个子领域在未来几年内会引起新的兴趣。特别是,我希望在深度学习和程序合成之间出现一个交叉子域,在该领域中,我们不会以通用语言生成程序,而会在其中生成神经网络(几何数据处理)。流)增加了一组丰富的算法的图元,如for循环等等。与直接生成源代码相比,这应该更容易处理和有用,并且它将大大扩展机器学习可以解决的问题的范围-在给定适当的训练数据的情况下,我们可以自动生成的程序空间。象征性AI和几何AI的融合。当代的RNN可以看作是这种混合算法-几何模型的史前祖先。
超越反向传播和可微层
如果机器学习模型变得更像程序,那么它们将几乎不再是可区分的—当然,这些程序仍将利用连续的几何层作为子例程,这将是可区分的,但整个模型则不会。结果,使用反向传播来调整固定的硬编码网络中的权重值,将不再是将来训练模型的首选方法,至少,它不可能是全部。我们需要找出有效地训练不可微系统的方法。当前的方法包括遗传算法,“进化策略”,某些强化学习方法和ADMM(乘数的交替方向方法)。自然,梯度下降无处不在-梯度信息对于优化可微分参数函数总是有用的。
此外,反向传播是端到端的,这对于学习良好的链式转换是一件好事,但由于它没有充分利用深度网络的模块化,因此计算效率低下。为了提高效率,有一个通用的方法:引入模块化和层次结构。因此,我们可以通过引入解耦的训练模块以及它们之间的某些同步机制(以分层方式组织)来使反向传播本身更加高效。这种策略在DeepMind最近关于“合成梯度”的工作中有所体现。我希望在不久的将来,在这些方面还有更多的工作要做。
可以想象到一个未来,其中将使用不会利用梯度的有效搜索过程来训练(增长)全局不可微(但具有可区分部分)的模型,而可利用优势来更快地训练可区分部分。使用一些更有效的反向传播版本的梯度。
自动化机器学习
将来,将学习模型架构,而不是由工匠手工制作。使用更丰富的原语集和类似程序的机器学习模型,学习体系结构会自动并驾齐驱。
当前,深度学习工程师的大部分工作包括使用Python脚本处理数据,然后冗长地调整深度网络的体系结构和超参数,以获得工作模型,甚至达到最新技术水平模型,如果工程师如此雄心勃勃。不用说,这不是最佳设置。但是人工智能也可以提供帮助。不幸的是,数据处理部分很难自动化,因为它通常需要领域知识以及对工程师想要达到的目标的清晰的高级理解。但是,超参数调整是一个简单的搜索过程,在这种情况下,我们已经知道工程师想要实现的目标:它由要调整的网络的损耗函数来定义。设置基本的“ AutoML”已经是常见的做法 系统将负责大多数模型旋钮的调整。我甚至在几年前就成立了自己的公司以赢得Kaggle比赛。
在最基本的层次上,这样的系统将简单地调整堆栈中的层数,其顺序以及每一层中的单元或过滤器数。这通常是使用Hyperopt之类的库完成的。但是,我们也可以野心勃勃,并尝试从头开始学习一种尽可能少的约束的适当架构。这可以通过例如强化学习或遗传算法来实现。AutoML的另一个重要方向是与模型权重一起学习模型体系结构。因为每次我们尝试稍有不同的体系结构都从头开始训练新模型时,效率非常低下,所以真正强大的AutoML系统将能够在通过对训练数据进行反向调整来调整模型的功能的同时,对体系结构进行改进,因此消除所有计算冗余。在我撰写这些内容时,这种方法已经开始出现。
当这种情况开始发生时,机器学习工程师的工作不会消失,而是工程师将在价值创造链中向更高的方向发展。他们将开始投入更多的精力来构建能够真正反映业务目标的复杂损失函数,并深刻理解其模型如何影响部署它们的数字生态系统(例如,使用模型预测并生成模型训练数据的用户) -目前只有最大的公司可以负担的问题。
终身学习和模块化子例程重用
如果模型变得更加复杂并且建立在更丰富的算法原语之上,那么这种增加的复杂性将要求任务之间具有更高的重用性,而不是每当我们有新任务或新数据集时从头开始训练新模型。实际上,很多数据集将包含的信息不足以从头开始开发新的复杂模型,因此有必要利用先前遇到的数据集的信息。就像您每次打开一本新书都不会从头开始学习英语一样,这是不可能的。此外,由于当前任务与先前遇到的任务之间存在大量重叠,因此从头开始对每个新任务进行训练的模型效率非常低下。
另外,近年来反复观察到的一个显着发现是,训练相同的模型以同时执行多个松散连接的任务会得到一个在每个任务上都更好的模型。例如,训练相同的神经机器翻译模型以涵盖英语到德语的翻译和法语到意大利语的翻译,将得到一个在每种语言对上都更好的模型。共同训练图像分类模型和图像分割模型,共享相同的卷积基础,得到的模型在两个任务上都更好。等等。这很直观:总有一些 这些看似脱节的任务之间的信息重叠,因此与仅针对特定任务训练的模型相比,联合模型可以访问有关每个单独任务的更多信息。
我们目前在跨任务的模型重用过程中所要做的就是利用预训练的权重来执行执行常见功能(如视觉特征提取)的模型。您将在第5章中看到了这一点。在将来,我希望它的通用版本是司空见惯的:我们不仅将利用先前学习的功能(子模型权重),还将利用模型架构和训练过程。随着模型变得更像程序,我们将开始重用程序子例程,例如人类编程语言中的函数和类。
想想当今的软件开发过程:一旦工程师解决了特定的问题(例如,Python中的HTTP查询),他们就会将其打包为一个抽象且可重用的库。将来面临类似问题的工程师可以简单地搜索现有库,下载一个库并在自己的项目中使用它。以类似的方式,将来,元学习系统将能够通过在高级可重用块的全局库中筛选来组装新程序。当系统发现自己正在为几种不同的任务开发类似的程序子例程时,如果会想出该子例程的“抽象”可重用版本并将其存储在全局库中。这样的过程将实现抽象能力,是实现“极端泛化”的必要组件:可以说子例程在不同的任务和领域中都有用,可以说它“抽象”了解决问题的某些方面。“抽象”的定义类似于软件工程中的抽象概念。这些子例程可以是几何的(具有预训练表示形式的深度学习模块),也可以是算法的(更接近于当代软件工程师操作的库)。
简而言之,这是我对机器学习的长期愿景:
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在神经网络设计中,“隐藏层个数” 是决定模型能力的关键参数 —— 太少会导致 “欠拟合”(模型无法捕捉复杂数据规律,如用单隐 ...
2025-10-21在特征工程流程中,“单变量筛选” 是承上启下的关键步骤 —— 它通过分析单个特征与目标变量的关联强度,剔除无意义、冗余的特 ...
2025-10-21在数据分析全流程中,“数据读取” 常被误解为 “简单的文件打开”—— 双击 Excel、执行基础 SQL 查询即可完成。但对 CDA(Cert ...
2025-10-21在实际业务数据分析中,我们遇到的大多数数据并非理想的正态分布 —— 电商平台的用户消费金额(少数用户单次消费上万元,多数集 ...
2025-10-20在数字化交互中,用户的每一次操作 —— 从电商平台的 “浏览商品→加入购物车→查看评价→放弃下单”,到内容 APP 的 “点击短 ...
2025-10-20在数据分析的全流程中,“数据采集” 是最基础也最关键的环节 —— 如同烹饪前需备好新鲜食材,若采集的数据不完整、不准确或不 ...
2025-10-20在数据成为新时代“石油”的今天,几乎每个职场人都在焦虑: “为什么别人能用数据驱动决策、升职加薪,而我面对Excel表格却无从 ...
2025-10-18数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15在机器学习入门领域,“鸢尾花数据集(Iris Dataset)” 是理解 “特征值” 与 “目标值” 的最佳案例 —— 它结构清晰、维度适 ...
2025-10-15在数据驱动的业务场景中,零散的指标(如 “GMV”“复购率”)就像 “散落的零件”,无法支撑系统性决策;而科学的指标体系,则 ...
2025-10-15在神经网络模型设计中,“隐藏层层数” 是决定模型能力与效率的核心参数之一 —— 层数过少,模型可能 “欠拟合”(无法捕捉数据 ...
2025-10-14在数字化浪潮中,数据分析师已成为企业 “从数据中挖掘价值” 的核心角色 —— 他们既要能从海量数据中提取有效信息,又要能将分 ...
2025-10-14在企业数据驱动的实践中,“指标混乱” 是最常见的痛点:运营部门说 “复购率 15%”,产品部门说 “复购率 8%”,实则是两者对 ...
2025-10-14在手游行业,“次日留存率” 是衡量一款游戏生死的 “第一道关卡”—— 它不仅反映了玩家对游戏的初始接受度,更直接决定了后续 ...
2025-10-13