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

来源:AI科技评论 

编译: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智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

头发剪短了要快速生发_怎样生发效果最好最快?四个方法快速长出头发!

脱发问题导致很多人头发稀少、头发细软油腻,这些症状,让患者时常感到十分的痛苦,因为他们每天都要面临被调侃和取笑的尴尬,不仅个人形象全无,更是饱受严重的自卑心理,甚至因为脱发问题,总是给人…

AI求解薛定谔方程,兼具准确度和计算效率,登上《自然-化学》

来源:机器学习研究组订阅号即使并非物理学界人士,我们也对薛定谔这个名字并不陌生,比如「薛定谔的猫」。著名物理学家埃尔温 薛定谔是量子力学奠基人之一,他在 1926 年提出的薛定谔方程(Schrdinger equation&#xff…

redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建

当你试图解决一个你不理解的问题时,复杂化就产成了。—Andy BootheRedis集群安装部署Redis是一个运行在内存的非关系型数据库,因为其速度快(效率高),支持数据的持久化(安全),事务操作的原子性(所有操作的原子性),使得其在高并发场…

千禧年大奖难题之始与未终

来源:数学文化撰文:Arthur Michael Jaffe、薛博卿“千禧年大奖难题”的诞生千禧之际,万象更新,数学界的柔风细雨中惊响起初夏的雷鸣。七个重要的数学问题!七百万美元的巨额奖金!克雷数学研究所公布的大奖难…

linux mysql 5.6.14_CentOS 6.4下编译安装MySQL 5.6.14

配置用户MySQL启动成功后,root默认没有密码,我们需要设置root密码。设置之前,我们需要先设置PATH,要不不能直接调用mysql修改/etc/profile文件,在文件末尾添加PATH/usr/local/mysql/bin:$PATHexport PATH关闭文件&…

全世界最前沿的125个科学问题

来源:世界先进制造技术论坛在庆祝Science创刊125周年之际,Science公布了125个最具挑战性的科学问题。了解前沿科学研究方向,对你的成长或许有所帮助。简单归纳统计这125个问题,其中涉及生命科学的问题占46%,关系宇宙和…

解读阿里官方代码规范

2017年开春,阿里对外公布了「阿里巴巴Java开发手册」从头到尾浏览了一遍这份手册之后,感觉很棒。虽然其中的某些观点笔者不能苟同,但大部分的规范还是值得绝大多数程序员学习和遵守的。 笔者将对这份代码规范中的一些细节做一些解读&#xff…

知识图谱下一站:认知智能

来源:华东师大ICA本文系首届“认知智能”研讨会讨论部分会议纪要。首届“认知智能”研讨会,由华东师范大学计算机学院主办,于12月8日在华东师范大学中山北路校区办公楼小礼堂成功举办。会中多位专家学者进行了学术报告,并围绕认知…

mysql常见错误解决方法_mysql常见错误解决办法

解决mysql利用二进制日志恢复数据报错:ERROR 1781 (HY000) at line 16: SESSION.GTID_NEXT cannot be set to UUID:NUMBER when GLOBAL.GTID_MODE OFF.解决办法:配置gtid选项配置前:mysql> show global variables like ‘gtid_mode‘;ERR…

win10 git bash 闪退

使用ghost重装了win10 专业版后。安装git,尝试重装了n个版本的git,右键git bash here 直接闪退,直接进入安装目录打开git-bash.exe依旧闪退, git右键点击Git Bash Here闪退并会在当前目录下生成mintty.exe.stackdump文件。 右键GIT GUI here错…

智慧城市产业图谱(2020年)

来源:中国信息通信研究院(转载请注明来源)编辑 :蒲蒲推进新型智慧城市,是党中央、国务院推动我国新型工业化、信息化、城镇化和农业现代化同步发展做出的重大决策,有利于深化新一代信息通信技术与城市发展的…

制造业人工智能8大应用场景

资料来源:软件定义世界(SDX)文:e-works孙亚婷 郑倩 来源:数字化企业人工智能的概念第一次被提出,是在20世纪50年代,距今已六十余年的时间。然而直到近几年,人工智能才迎来爆发式的增…

mysql数据库基础 博客园_MySQL数据库基础

数据库的一些概念题:DB DBMS 和DBS三者之间的关系DBS(数据库系统) 包含DB(数据库)和DBMS(数据库管理系统)DB:是指datebase(数据库)DBS:是指datebase systerm (数据库系统)DBMS:是指datebase mangement systerm(数据库管理系统)区别:数据库就是…

回忆杀:2020年出自MIT的十大顶级热门研究

来源:学术头条 编译:阳光编审:王新凯尽管 2020 年是我们大多数人都希望去忘记的一年,但它仍然具有许多值得庆祝的研究突破。虽然新冠疫情的全球性爆发带来了新的挑战,但也正是因为这些挑战,MIT 的研究团队…

枚举类型使用

一个博客: https://blog.csdn.net/javazejian/article/details/71333103 阿里开发规范: 【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 说明: 枚举其实就是特殊的类, 域成员均为常量&#xff…

多字段回溯 mysql_回溯算法 | 追忆那些年曾难倒我们的八皇后问题

前言说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题……在这里插入图片描述第一次遇到它的时候应该是大一下或者大二这个期间,这个时间对啥都懵懵懂懂,啥都想学…

这一年,宇宙“面目”愈发清晰

来源:科技日报 深邃的星空,埋藏着无数奥秘,叩问2020年的宇宙苍穹,阵阵回响唤起惊奇与敬畏无数:人类首次在银河系外发现氧气、绘制迄今最大宇宙三维地图、发现“不可能存在”的中等质量黑洞……宇宙的秘密,正…

mysql connector net 6.9.3_MySQL Connector/Net 6.9.3 发布 MySQL Connector/Net 6.9.3下载

MySQL Connector/ODBC 是 MySQL 数据库的官方 .NET 平台驱动程序。MySQL Connector/Net 6.9.3 发布,此版本是 6.9 系列的第一个 GA 版本。Bugs 修复Adding a new column to an existing model as identity and PK failed when applying the migration. (Bug #192863…

在失败中学习,MIT新研究显示,机器可以像婴儿一样学会理解人类目标

大数据文摘出品来源:MIT编译:周熙在Warneken和Tomasello关于人类社会智力的经典实验中,一个18月大蹒跚学步的幼儿看着一个男人抱着一堆书走向一个未开封的柜子。当男子到达柜子时,他笨拙地将书在柜门上撞了几下,然后发…

django http404 详解

【引子】 今天在看django的官方文档的时候看到get_object_or_404这个函数感觉比较奇怪。这个主要来自于它的功能,如果要查询的对象 存在那么就返回对象;如果对象不存在那么就要报404 Not Found ;但是404 Not Found并不是它的返回值&#xff0…