
作者 | 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
在AI渗透率超85%的2025年,企业生存之战就是数据之战,CDA认证已成为决定企业存续的生死线!据麦肯锡全球研究院数据显示,AI驱 ...
2025-07-2035岁焦虑像一把高悬的利刃,裁员潮、晋升无望、技能过时……当职场中年危机与数字化浪潮正面交锋,你是否发现: 简历投了10 ...
2025-07-20CDA 数据分析师报考条件详解与准备指南 在数据驱动决策的时代浪潮下,CDA 数据分析师认证愈发受到瞩目,成为众多有志投身数 ...
2025-07-18刚入职场或是在职场正面临岗位替代、技能更新、人机协作等焦虑的打工人,想要找到一条破解职场焦虑和升职瓶颈的系统化学习提升 ...
2025-07-182025被称为“AI元年”,而AI,与数据密不可分。网易公司创始人丁磊在《AI思维:从数据中创造价值的炼金术 ...
2025-07-18CDA 数据分析师:数据时代的价值挖掘者 在大数据席卷全球的今天,数据已成为企业核心竞争力的重要组成部分。从海量数据中提取有 ...
2025-07-18SPSS 赋值后数据不显示?原因排查与解决指南 在 SPSS( Statistical Package for the Social Sciences)数据分析过程中,变量 ...
2025-07-18在 DBeaver 中利用 MySQL 实现表数据同步操作指南 在数据库管理工作中,将一张表的数据同步到另一张表是常见需求,这有助于 ...
2025-07-18数据分析师的技能图谱:从数据到价值的桥梁 在数据驱动决策的时代,数据分析师如同 “数据翻译官”,将冰冷的数字转化为清晰的 ...
2025-07-17Pandas 写入指定行数据:数据精细化管理的核心技能 在数据处理的日常工作中,我们常常需要面对这样的场景:在庞大的数据集里精 ...
2025-07-17解码 CDA:数据时代的通行证 在数字化浪潮席卷全球的今天,当企业决策者盯着屏幕上跳动的数据曲线寻找增长密码,当科研人员在 ...
2025-07-17CDA 精益业务数据分析:数据驱动业务增长的实战方法论 在企业数字化转型的浪潮中,“数据分析” 已从 “加分项” 成为 “必修课 ...
2025-07-16MySQL 中 ADD KEY 与 ADD INDEX 详解:用法、差异与优化实践 在 MySQL 数据库表结构设计中,索引是提升查询性能的核心手段。无论 ...
2025-07-16解析 MySQL Update 语句中 “query end” 状态:含义、成因与优化指南 在 MySQL 数据库的日常运维与开发中,开发者和 DBA 常会 ...
2025-07-16如何考取数据分析师证书:以 CDA 为例 在数字化浪潮席卷各行各业的当下,数据分析师已然成为企业挖掘数据价值、驱动决策的 ...
2025-07-15CDA 精益业务数据分析:驱动企业高效决策的核心引擎 在数字经济时代,企业面临着前所未有的数据洪流,如何从海量数据中提取有 ...
2025-07-15MySQL 无外键关联表的 JOIN 实战:数据整合的灵活之道 在 MySQL 数据库的日常操作中,我们经常会遇到需要整合多张表数据的场景 ...
2025-07-15Python Pandas:数据科学的瑞士军刀 在数据驱动的时代,面对海量、复杂的数据,如何高效地进行处理、分析和挖掘成为关键。 ...
2025-07-15用 SQL 生成逆向回滚 SQL:数据操作的 “后悔药” 指南 在数据库操作中,误删数据、错改字段或误执行批量更新等问题时有发生。 ...
2025-07-14t检验与Wilcoxon检验的选择:何时用t.test,何时用wilcox.test? t 检验与 Wilcoxon 检验的选择:何时用 t.test,何时用 wilcox. ...
2025-07-14