社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

Yoshua Bengio:深度学习的未来需要“探索高级认知的归纳偏置”

AI科技评论 • 4 年前 • 490 次点击  


编译 | Mr Bear
本文介绍了Yoshua Bengio及其学生Anirudh Goyal近期发表的一篇论文,该论文围绕“归纳偏置”概念,展开了对当下人工智能研究现状的讨论,并提出了富有启发性的观点:不同的深度学习架构基于不同的归纳偏置,探索更大范畴的归纳偏置,是实现人工智能研究进步的关键。
该论文篇幅长达43页,讨论的主题有:
  1. 深度学习是否收敛?
  2. 归纳偏置是什么
  3. 基于高级认知的归纳偏置是通向分布外泛化系统的途径
  4. 因果依赖的声明性知识
  5. 高级认知的生物学启示与表征
  6. 近期与扩展归纳偏置相关的工作
  7. 未来的研究方向
  8. 回顾过去:与经典符号AI的关系
AI科技评论编译了“归纳偏置是什么”以及“未来的研究方向”两部分的内容,希望对读者有所启发。

论文:Inductive Biases for Deep Learning of Higher-Level Cognition
地址:https://arxiv.org/pdf/2011.15091.pdf
我们不妨做出一个有趣的假设:可以通过一些原理(而非广博的启发式方法)来解释人类和动物的智能。
如果这个假设成立,那么我们就可以更容易地理解人类本身的智能并且构建智能机器。正如在物理学中的那样,这些原理并不足以预测像大脑这样的复杂系统的行为,我们可能需要通过大量的计算来模拟类人智能。
上述假设意在指出:研究人类和动物利用的归纳偏置,既可以帮助我们清晰地认识这些原理,又可以为人工智能研究和神经科学理论提供启发。
实际上,深度学习已经利用了一些关键的归纳偏置,而本文考虑的归纳偏置则涉及更大的范畴,重点关注主要涉及更高级的和对顺序化的意识的处理。
辨清这些特定原理的目的在于,它们可能会帮助我们构建更加强大的人工智能系统,这些系统能受益于人类更加灵活的、可以处理训练数据分布之外的情况的能力,以及人类系统化的泛化能力。然而,这正是当下最先进的机器学习系统与人类智能之间一个非常大的鸿沟。

1

归纳偏置是什么

在机器学习领域中,有一个著名的定理:「天下没有免费的午餐」。简而言之,在所有函数的空间上的一些偏好的集合(归纳偏置)需要具备泛化能力。并没有完全通用的学习算法,任何学习算法都隐式或显式地会在某些分布上具有较好的泛化性能,而在另外某些分布上泛化性较差。
通常而言,给定一个特定的数据集和损失函数,学习问题会存在许多可能的解(例如,参数分配),它们会在训练数据点上表现出同样好的性能。给定一个有限的训练集,将模型泛化到新的输入上的唯一方法是:依赖我们寻找的一些有关解的假设。
旨在达到人类水平的性能的人工智能研究的问题是:确定与人类对周围世界的观察最相关的归纳偏置。广义地说,归纳偏置会促使学习算法优先考虑具有某些属性的解。表 1 列出了一些已经被用于各种各样的神经网络中的归纳偏置,以及相应的性质。
表 1:现代深度学习中的归纳偏置示例

从归纳偏置到算法

人们可以通过很多方式对这些偏置进行编码(例如,显式的正则目标、架构约束、参数共享、对于优化方法选择的隐式影响,或对于贝叶斯模型中先验分布的选择)。
举例而言,我们可以通过多种方法构建神经网络输出的平移不变性:
(1)用卷积、池化替换矩阵乘法;
(2)对使用各种输入的变换得到的网络预测结果求平均(特征平均);
(3)在使用了这些变换增强后的数据集上进行训练(数据增强)。
然而,有一些归纳偏置可以被很容易地编码到学习算法中(例如,使用卷积),函数的偏好有时是隐含的,并不是学习系统的设计者有意而为之。有时,如何将归纳偏置变为机器学习方法并不是十分直观,而这往往正是机器学习论文的核心贡献。

将归纳偏置作为数据

我们可以将归纳偏置、先验知识,以及内置的结构看做「伪装的训练数据」,而我们也可以通过更多的数据来弥补对强有力的先验的缺失。
有趣的是, 不同的归纳偏置可能等价于更多(可能是指数级的更多的数据)或更少的数据:我们猜想基于某种组合方式(例如,分布式表征、深度、注意力)的归纳偏置可能具有更大的优势(它们可以更好地适用于待学习的函数)。
在很大的数据集上,归纳偏置的优势可能较小,这说明迁移学习(新的目标数据分布只包含很少的示例)给出了一种很好的评估归纳偏置的优势及其实现的设定。

归纳偏置和易学性

有趣的是,我们观察到归纳偏置在泛化方面会带来优势,也具有更易于优化的优势(例如,注意力、残差连接),这两种优势之间是具有联系的。
这种观察是有道理的,我们可以将训练过程看做对训练集的一种泛化。在一种强的归纳偏置下,前一半训练集的数据就已经很强地限制学习器应该对后一半训练集的数据做出的预测。也就是说,当我们遇到这些示例时,它们的预测误差就已经很低了,因此训练会收敛得更快。

关于世界如何运行的归纳偏置

值得注意的是,在某些强化学习问题(例如,学习如何下国际象棋或围棋)中,相应领域的运行规则是十分简单的,人们可以很容易地构建一个近乎完美的模拟器,并因此在无需审视真实世界的条件下生成规模无限的数据集。
在这种情况下,最主要的限制性因素是计算资源,而非数据。模拟器是一种生成式的世界模型,在大多数游戏中,「世界」是十分简单的。
然而,在许多真实世界场景下(例如,涉及到图像或自然语言时),我们并没有很好的对环境的模拟器,而要学习这样的环境(或足够的方面)是很困难的任务。
尽管真实世界非常复杂,通过考虑人类可以理解的世界的各个层面,可以知道:我们可以通过某种方式将人类关于世界的知识分解成一些小的部分,这些部分可以被独立地发现,然后通过新的方式组合起来。尽管我们遇到的数据分布有所变化,这些事件还是会遵循因果律和物理定律等稳定律发生。
对于世界的生成式的因果关系理解有助于对未见过的新领域的泛化。生成式模型使我们可以根据单个示例学习,这是因为我们可以将该示例嵌入到背景知识的结构化构造中。
人类有一种显著的能力,那就是对于反事实世界的模拟。这种世界永远不会成为现实,但是却可以存在于人类的意识中。我们可以通过在抽象层面上对世界进行模拟来想象我们的行为会导致的结果,这种模拟在某些假定的过去或未来发生的行为下展开。或者,我们可以通过模拟可能导致当前世界存在的事件来推断出原因。
显然,这种能力取决于我们对于周围世界运行方式的直观理解。然而,有趣的是,这种人类内在的模拟机制与物理仿真或现代的种种基于模型的 RL 系统大相径庭:它们并没有考虑世界中全部的状态,仅仅考虑了少数选用的与模拟相关的变量和属性。
这种人类在其可以表达的思维中对于依赖和因果推理步骤的稀疏性是另一种我们希望添加到深度学习工具中的归纳先验。

能动性、顺序化的决策以及非平稳的数据流

经典的机器学习框架建立在独立同分布(i.i.d)假设之上,即测试数据与训练数据拥有相同的数据分布。这是一个非常重要的假设!如果该假设不成立,那么我们就无法讨论对与来自于同一分布的新示例进行泛化。
不幸的是,这是一个非常强的假设,在现实中往往并不成立(尤其是对于那些在某个环境中一次做出一个决策的智能体来说,这些智能体在该环境中也会得到观测结果)。
智能体观测结果的分布可能会由于多种原因发生变化:智能体在环境中行动(干预),其它智能体在环境中进行干预,智能体进行学习和探索并在此期间访问状态空间的不同部分,在上述过程中发现新的部分,从而导致非平稳性。
尽管顺序化的决策普遍存在于现实生活中,但是在某些情况下,考虑这种非平稳性似乎是不必要的(例如,静止图像中的目标识别)。
然而,如果我们想要构建对于分布变化鲁棒的学习系统,就有必要在分布变化的环境中训练它们!
当然,对于某些机器学习应用而言,数据是顺序且非平稳的(例如,历史记录)。甚至,有时学习器本身也是一个智能体或者与其它智能体交互的智能体(例如,机器人、自动驾驶或对话系统)。
这意味着我们也许需要弃用这些大量在监督学习框架中出现的数据集,转而构建非平稳的、可控的环境,将它们作为学习器的训练基础和对比基准。尽管这使得对于学习算法的评估和对比任务变得十分复杂,但它还是有必要的,我们相信这一构想可以行得通。

迁移学习和持续学习

由于上述原因,研究人员逐渐对迁移学习和持续学习场景开始感兴趣,而不是使用固定的数据分布并且寻找一个在该分布上效果良好的归纳偏置。
在迁移学习和持续学习的场景下,我们可能需要面对无穷无尽的任务流,学习器必须从过去的经验和任务中提取信息,从而提升在未来的、目前未见过的任务上的学习速度(即样本复杂度,而非目前标准的「渐进性能」)。
假设学习器面对着任务 A、B、C,我们希望该学习器在新的任务 D 上取得好的表现。但是在缺乏任何假设的条件下,学习器几乎不可能在 D 上运行良好。
然而,如果在迁移的目标任务(D)以及源任务(A、B、C)之间有一些共享的结构,就有可能进行泛化,或者从源任务向目标任务迁移知识。
因此,如果我们希望针对知识迁移进行有意义的讨论,我们就需要考虑关于学习器将面对的数据分布的种类的假设,即:
(a)它们之间有何共同点,在经历的环境之间有哪些稳定和静止的部分;
(b)当我们考虑一种顺序化的决策场景时,从一个环境变换到另一个环境下,它们将如何变化或者会发生怎样的改变?
这种划分会让人想起有关元学习的工作,我们可以将学习分为「慢学习」(世界中稳定和静止的层面)和「快学习」(世界中针对特定任务的层面)。
这涉及到学习的两种时间尺度,我们通过一个外循环进行对元参数的元学习,并通过一个内循环进行对常规参数的常规学习。
实际上,我们也可以使用更多的时间尺度。假设我们由慢到快分别有:表示演化的外循环、关于文化学习的循环(在不同的代之间稍微稳定一些)、关于个体人类的学习、一生中关于特定任务以及新环境的学习、对于运动控制和规划的内循环(为了像采摘水果这样的即时目标采用策略)。
理想状态下,我们希望构建对于世界的某种理解,它尽可能地将学习转移为较慢且更加稳定的部分,以至于内部的学习循环可以更快地成功,并且需要更少的数据就可以适应环境。

系统性泛化与分布外泛化

在本文中,我们重点关注分布外(OOD)泛化的目标,即泛化到用于采样训练的观测数据的特定数据分布之外。
一种更为通用的构想 OOD 的方法是,在面对新任务或变化的分布时,使用样本复杂度的概念。零样本情况下的 OOD 泛化是一种极端的情况,而在元学习环境下常常被研究的更为通用的情况是,涉及 K 样本的泛化(使用新分布中的 K 个示例)。
尽管 OOD 泛化的概念以及 OOD 样本复杂度指出了我们想要实现的目标(并且暗示了我们可能如何衡量它),但是它们并没有说明如何实现这一目标。而这正是系统性泛化的概念的有趣之处。
系统性泛化这一现象最初被语言学领域的学者所研究,因为它是语言的核心性质,指的是:现有概念(例如,单词)的新型组合的意义可以根据合成的概念的意义系统性地推导出来。
上述特性在语言中是显而易见的,但是人类在其它的环境下也受益于这种特性,例如:通过将组合组成某种新物体的不同部分的属性来理解该物体。
系统性的泛化甚至使我们可以更容易的泛化到在训练数据分布下具有零概率的新组合上。这种零概率的组合并不是仅仅未出现在现在的训练数据中,即使我们从训练数据分布中看到了无限量的训练数据,也不会看到任何符合这种特殊组合的样本。
例如,当你第一次看到一个科幻小说的场景时,这种场景也许在现实生活中不可能出现,甚至将世界上数十亿人的经历聚合起来都不会出现这种场景,但是你仍然可以想象这种反事实并且对其进行思考(例如,在开头就预测该场景的结局)。
Bahdanau 等人对系统性泛化进行了一系列实证研究,其中在训练分布中出现了语言概念的组合的特殊形式,而测试分布中并不存在这些特殊形式。实验结果表明,当下的方法的性能会受到影响,而人类则可以很轻松地回答这些问题。
人类可以使用归纳偏置提供各种各样的组合,使其可以从有限的组合集合泛化到更大的概念组合集合上。实际上,深度学习已经受益于分布式表征的组合优势,这也是神经网络之所以效果如此好的关键之处。
研究者们关于「为什么分布式表征可以带来潜在的指数级优势」、「分布式表征是否与底层的数据分布的特性相吻合」等话题进行了许多争论。
深度神经网络的另一个有效的组合形式来源于其本身的深度(即对函数的组合),在某些恰当的假设下,这同样带来了可以证明的指数级优势。然而,我们认为深度学习应该更好地考虑另一种组合:由语言学家定义的「系统性」,还应该考虑近年来一些机器学习论文提到的系统性泛化。
当前的深度学习模型往往会对训练分布产生过拟合。如果我们只关注与训练集分布相同的测试集,则无法清晰地发现这一现象。由于我们希望学习智能体能够以一种系统的方式进行分布外泛化,所以我们需要改变评价学习成功的方式。
只有当新环境与智能体之前见过的环境存在足够多的共享成分或结构时,进行这种评价才有意义。对于智能体而言,在新环境与之前见过的环境之间需要有某些关于分布变化的假设,此时就需要一些恰当的关于分布(例如,共享成分)以及分布如何变化(例如,通过智能体的环境)的归纳偏置。
近期与扩展归纳偏置相关的工作
以下将部分介绍Bengio团队近年来发表的一些有关归纳偏置的研究工作以及最新的研究前沿,更多相关工作请参考原文。

1. 循环独立机制 (Goyal et al., 2019)

循环独立机制(RIM)受到了以下思想的启发:将知识分解成可交换的小模块、稀疏因子图假设、有助于因果知识模块化的归纳偏置。

2. 通过学习结合自顶向下和自底向上的信息(Mittal et al., 2020)

我们们对深度循环网络进行了探究,使用注意力机制动态地将自底向上和自顶向下的信号结合起来。基于 RIM 的结构的模块性以及将注意力机制用于控制信息交换的措施进一步限制了信息的共享和通信。注意力和模块化共同引导了自底向上和自顶向下的信息流,导致感知任务和语言任务得到了可靠的性能提升,尤其是提升了其对于干扰和噪声数据的鲁棒性。该研究建立在与 RIM 相同的归纳偏置之上,但是加入了需要结合自顶向下和自底向上的信息流的归纳偏置。

3. 目标文件和模式 (Goyal et al., 2020)

除了 RIM 中已经利用过的归纳偏置,目标文件和模式的架构还包含了关于共用知识(规则、模式)的归纳偏置。它可以在不同的对象上实例化,将不同版本的通用知识应用到不同的对象上。

 
2

未来的研究方向

本文中提出的思想尚处于萌芽阶段,只有少数的论文开展了一些必要的探讨细节的工作。该领域仍然存在许多有待解决的问题和可能的研究路径。例如:
  • 与本文中讨论的思想相一致的最大的挑战仍然是:同时学习一个大型的编码器(将低级像素映射到高级因果变量上)以及这些高级变量的大型因果模型。一种理想的解决方案是基于模型的强化学习,其中因果模型可以学习到随机的系统动力学。Bengio 等人于 2019 年小规模地(使用两个因果变量)对此进行了实验,并使用了一个保证其雅可比矩阵不包含奇异值 1 的编码器,从而避免了编码器的潜在坍塌(collapse)。为了避免编码坍塌,一种可能的解决方案是在高层次上使用对比损失(例如,Hjelm 等人于 2018 年发表的 Deep Infomax)。
  • 另一个重大的挑战是,将声明式的指示表征(如结构化的因果模型)和推理机制(可能通过类似 RIM 及其变体中的注意力和模块化实现)统一在一个架构中。在人类的认知中,有大量关于将基于规则的行为巩固为快速的习惯性技能的数据,这些数据可以作为人类的灵感(例如,也许可以使用海马体的回放来训练类似于大脑皮层的模块,从而使其与声明式的知识保持一致)。关于变分自编码器的一些研究也可以为我们提供灵感(此时编码器作为推理机器,解码器作为因果模型)。
  • 目前,大多数深度学习模型使用的是固定的参数共享和固定的内存访问模式,这非常适用于依赖单指令多数据流(SIMD)并行机制的现代计算硬件(例如,GPU 和 TPU)。然而,基于注意力的计算形式也许需要动态、不规则的、稀疏的内存访问和参数共享机制,而这与 GPU 并不太相适应,使得我们难以在一个 mini-batch 中的示例之间进行并行计算。想要解决该问题,需要我们在神经网络架构、底层编程、硬件设计等方面有所创新。在模型引导的并行性方面,Goyal 等人于 2020 年发表的 SCOFF 方法展现出了一定的发展前景,其中大部分计算任务被分散到各个专家模块上,而有意识的处理所占的计算开销只有很小的一部分。
  • 人类进行规划的方式与当下被基于模型的强化学习(或者像基于蒙特卡洛树搜索和值函数的 AlphaZero 这样的混合方法)采用的方式有很大区别。人类似乎会利用以下的归纳偏置:(1)因果因子图的稀疏性(2)在抽象空间中的推理序列可能非常短。这意味着,在人们做出规划时,他们并不会构建包含所有状态的轨迹,而是会构建只考虑状态的某些层面(变量)的「部分状态轨迹」。此外,人们并不会在每一个离散的时间步上展开未来的轨迹,而是会直接学习如何将时间距离较远的事件联系起来,这与 Ke 等人于 NeurIPS 2018 上发表的论文「Sparse attentive backtracking: Temporal credit assignment through reminding」中对信用分配问题的思考相似。在新的规划方法中探究这些归纳偏置是十分有趣的,这些方法可能比标准方法更为高效。当我们做出规划时,我们可以考虑新的情况的可能性,如果模型遗漏了因果结构的某些重要方面,它可能就不会很好地泛化到这些具有新的变化的场景下,而规划也可能从根本上会高估或低估一些新的可能性。
  • 我们希望在模块和数据点上的计算具有一定的稀疏性。同样地,这很难在 mini-batch 上实现,因为 mini=batch 是充分利用 GPU 的优势的必要条件。高效地优化这些计算是一件极具挑战的事,但是却可以极大地推动研究向前发展。
  • 扩展到大量的模块上:大脑可能是由大量的独立模块组成的,而目前模块化深度学习方面的工作处理的模块则要比大脑少得多。研究新的可以有助于扩展到巨大规模的模块上的算法、架构是十分有趣的。
  • 宏观和微观模块:通常在 GWT 中考虑的模块都是一些高级模块,例如:人脸识别、步态识别、目标识别、视觉例程(visual routine)、听觉语音感知、听觉对象识别、触觉对象识别等。上述这些都是宏观模块,而不是将视觉输入划分成单个目标的模块(即微观模块)。我们所做的大部分工作重点关注微观模块。如何构建一个模块化的层次结构,从而满足大规模和精细规模的知识和计算的模块化方式是一个值得探究的问题。
 

点击“阅读原文”,直达直播页面

由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/100185
 
490 次点击