作者 | 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-01-23“用户旅程分析”概念 用户旅程图又叫做用户体验地图,它是用于描述用户在与产品或服务互动的过程中所经历的各个阶段、触点和情 ...
2025-01-22在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-22在数据分析领域,Excel作为一种普及率极高且功能强大的工具,无疑为无数专业人士提供了便捷的解决方案。尽管Excel自带了丰富的功 ...
2025-01-17在这个瞬息万变的时代,许多人都在寻找能让他们脱颖而出的职业。而数据分析师,作为大数据和人工智能时代的热门职业,自然吸引了 ...
2025-01-14Python作为一门功能强大的编程语言,已经成为数据分析和可视化领域的重要工具。无论你是数据分析的新手,还是经验丰富的专业人士 ...
2025-01-10完全靠数据决策,真的靠谱吗? 最近几年,“数据驱动”成了商界最火的关键词之一,但靠数据就能走天下?其实不然!那些真正成功 ...
2025-01-09SparkSQL 结构化数据处理流程及原理是什么?Spark SQL 可以使用现有的Hive元存储、SerDes 和 UDF。它可以使用 JDBC/ODB ...
2025-01-09在如今这个信息爆炸的时代,数据已然成为企业的生命线。无论是科技公司还是传统行业,数据分析正在深刻地影响着商业决策以及未来 ...
2025-01-08“数据为王”相信大家都听说过。当前,数据信息不再仅仅是传递的媒介,它成为了驱动经济发展的新燃料。对于企业而言,数据指标体 ...
2025-01-07在职场中,当你遇到问题的时候,如果感到无从下手,或者抓不到重点,可能是因为你掌握的思维模型不够多。 一个好用的思维模型, ...
2025-01-06在现代企业中,数据分析师扮演着至关重要的角色。每天都有大量数据涌入,从社交媒体到交易平台,数据以空前的速度和规模生成。面 ...
2025-01-06在职场中,许多言辞并非表面意思那么简单,有时需要听懂背后的“潜台词”。尤其在数据分析的领域里,掌握常用术语就像掌握一门新 ...
2025-01-04在当今信息化社会,数据分析已成为各行各业的核心驱动力。它不仅仅是对数字进行整理与计算,而是在数据的海洋中探寻规律,从而指 ...
2025-01-03又到一年年终时,各位打工人也迎来了展示成果的关键时刻 —— 年终述职。一份出色的年终述职报告,不仅能全面呈现你的工作价值, ...
2025-01-03在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-03在数据分析的江湖里,有两个阵营总是争论不休。一派信奉“大即是美”,认为数据越多越好;另一派坚守“小而精”,力挺质量胜于规 ...
2025-01-02数据分析是一个复杂且多维度的过程,从数据收集到分析结果应用,每一步都是对信息的提炼与升华。可视化分析结果,以图表的形式展 ...
2025-01-02在当今的数字化时代,数据分析师扮演着一个至关重要的角色。他们如同现代企业的“解密专家”,通过解析数据为企业提供决策支持。 ...
2025-01-02数据分析报告至关重要 一份高质量的数据分析报告不仅能够揭示数据背后的真相,还能为企业决策者提供有价值的洞察和建议。 年薪 ...
2024-12-31