掌桥专利:专业的专利平台
掌桥专利
首页

用于数据处理和计算的系统和方法

文献发布时间:2023-06-19 19:28:50


用于数据处理和计算的系统和方法

技术领域

本发明涉及数据处理和机器学习领域,并且具体地涉及采用机器学习的方法来处理任何种类的数据的数据处理,所述数据例如表示文本、图形数据(诸如图片或电影)或声音数据(诸如口语(理解和创造语言)),特别是组合类型的数据(诸如组合的图形数据和文本),更一般地涉及一种具有权利要求1的前序部分的特征的数据处理设备、一种具有权利要求14的前序部分的特征的方法以及计算机程序。

背景技术

US 6,879,946 B2公开了一种使用属性超图表示(AHR)来建模、变换和操纵对象的智能2D和3D对象和场景建模、变换和操纵的计算机化的方法。给定3D对象或场景的特征来构造AHR的过程与使用函子(functor)将不同类别彼此映射对应。不同类别表示3D对象或场景的例如几何、物理和图形表示。

US 6,964,037 B1公开了一种用于确定遗传图的余限(colimit)的计算机实现的方法。余限操作将概念粘合在一起,形成沿着共享子概念的共享并集。

US 7,319,951 B2公开了一种使用类别理论和认知科学为内容数据设计语义描述的方法。

US 10,360,503 B2公开了一种用于使用来自类别理论的概念来导出本体的系统。

这些文献不使用神经元网络作为机器学习方法,而是通常使用巨大的数据库。巨大的数据库的实施非常耗费硬件。

Tai-Danae Bradley所著的文献“What is applied category theory?”(参见arXiv:1809.05923v2)涉及将类别理论应用于自然语言处理等领域。这种方法使用统计方法(参见第3.2章),这不是轻松处理自然语言的最佳工具,因为这种方法在某种意义上过于僵硬,无法处理“软”自然语言,使得需要大量训练。

所需要的是更适合处理不同类型的数据(例如,诸如图形数据、文本、自然语言和组合类型的数据)的数据处理设备和处理数据的方法,使得它们提供更好的结果并且比现有技术具有更低的硬件要求。

发明内容

本发明的目的是提供一种数据处理设备和用于处理数据的方法,其可以处理不同类型的数据,特别是组合类型的数据,优选地以至少部分无监督的方式,并且具有比现有技术更低的硬件要求。

本公开的一个目的涉及根据权利要求1的数据处理设备,其能够被配置用于深度学习的不同方面,诸如计算机视觉(图像识别)、自然语言处理(语音识别)、机器人、车辆等的计算机控制的处置,以及认知计算的其它领域,诸如组合类型的数据(例如,图形数据与文本的组合)的处理。

本发明的另一个目的涉及根据权利要求14的方法,该方法能够实现深度学习的不同方面,诸如计算机视觉(图像识别)、自然语言处理(语音识别)、机器人、车辆等的计算机控制的处置,以及认知计算的其它领域,诸如组合类型的数据(例如,图形数据与文本的组合)的处理。

本发明的又一个目的涉及根据权利要求27的计算机程序,当该程序由数据处理设备执行时,使得数据处理设备根据权利要求1或根据直接或间接地从属于其的任何权利要求进行配置或者执行权利要求14的方法。

本发明的实施例在从属权利要求中定义。

本发明建议使用大量计算模块,这在没有高硬件要求的情况下是可能的,因为通常在任何给定时间,所有计算模块中只有一小部分将处于活动状态并消耗相关量的CPU处理能力。空闲的计算模块消耗很少的CPU处理能力。大量的计算模块使得能够灵活地使用给定的数据处理设备,因为个体计算模块或计算模块的组可以针对不同类型的数据(例如,图形数据或自然语言数据)进行专门化,甚至对于数据的不同子类型(例如,不同几何对象形式的图形数据、不同的自然语言,...)进行专门化。

每个计算模块可以是简单的构造,例如仅具有一个或几个人工神经元网络以及输入和输出接口,但是在一些实施例中可以存在更复杂的构造,例如涉及具有关于数据处理的不同功能的分层结构层。

在一些实施例中,类别构造的使用允许数据处理设备至少部分地进行无监督学习,因为至少一些未知概念可以通过使用诸如交换图之类的类别构造来逻辑地导出。

在一些实施例中,通过将随机信号输入到至少一些计算模块的至少一个神经元网络的一个或几个人工神经元中,数据处理设备可以想到新的概念。这些新的概念可以由数据处理设备通过使用类别构造和/或通过使用外部信息(诸如教导者的确认或从外部数据库提取信息)在内部进行核实。一旦新的概念得到核实,数据处理设备就可以使用它来分析数据和/或进行无监督学习。

术语:

术语“数据处理”被理解为涵盖用于任何种类的目的的捕获数据、执行数据分析和输出数据中的至少一种。

术语“数据分析”被理解为涵盖用于任何种类的目的的检查、变换、建模、解释、分类、可视化数据。

在本公开的上下文中使用的术语“处理实体”描述了可以独立读取和执行程序指令的CPU的最小实体。每个处理实体在操作系统看来都是可以以并行方式被寻址的独立处理器。每个CPU提供至少一个处理实体,但在高性能计算的上下文中,现代计算机系统通常具有多于一个处理实体。例如,CPU可以是具有多个核的多核处理器。核是CPU内部独立的实际处理单元,其可以独立于CPU的其它核读取和执行程序指令。另外,每个核可以允许多线程,即,一个物理核对操作系统来说表现为多个处理实体,有时称为“硬件线程”。在其它情况下,CPU的每个核可以是单个处理实体,或者CPU本身可以是单个处理实体。此外,应该理解的是,假定术语CPU涵盖GPU。

术语“机器学习”意在表示数据处理设备至少部分地通过暴露于数据而无需遵循明确编程的指令来实现期望性能的能力,例如,代替地依赖于模式和/或推理。机器学习方法包括使用人工神经元网络(在本公开中称为神经元网络)。

应该理解的是,在本公开的上下文中,“不同的”神经元网络可以指类型不同的网络(例如,经典或量子通用ANN或更具体的ANN,如多层前馈NN、RNN,诸如LSTM,...)和/或网络的特定设置(例如,神经元的数量、层数、层的类型、每层神经元的数量、神经元之间的连接、网络的其它参数,...)的网络。

术语“随机信号”是指在任何给定时刻取随机值并且只能随机建模的信号。

关于范畴论的数学语言,应用通常的术语。例如,对于范畴论的文档,可以参考以下文本:

Saunders Mac Lane,“Categories for the Working Mathematician”,第二版,1998年Springer

Robert Goldblatt,“Topoi”,修订版,2006年Dover Publications

David I.Spivak,“Category Theory for the Sciences”,2014年麻省理工学院出版社

数据处理设备的配置和结构:

数据处理设备包括:

至少一个第一接口,用于接收输入数据

至少一个第二接口,用于输出输出数据

至少一个共享存储器设备,数据可以写入其中并且可以从其读取数据

至少一个计算设备,至少一个第一接口和至少一个第二接口以及至少一个共享存储器设备连接到该计算设备并且该计算设备被配置为:

从至少一个第一接口接收输入数据

向至少一个第二接口发送输出数据

从至少一个共享存储器设备读取数据并且将数据写入至少一个共享存储器设备

举例来说,至少一个第一接口可以被配置为可连接到用于捕获数据的传感器(例如,像相机的光学传感器、像麦克风的声学传感器…)或者包括至少一个这样的传感器。可以设想可以结合本发明使用各种可以被处理的数据,诸如图片或视频数据、声音数据…。附加地或可替代地,至少一个第一接口可以被配置为接收预存储的数据或由其它手段(例如,经由互联网)提供的数据流。

举例来说,至少一个第二接口可以被配置为可连接到用于输出数据的输出设备(例如,用于显示光学数据的显示器、用于输出声音的扬声器…)或者包括至少一个这样的输出设备。附加地或可替代地,至少一个第二接口可以被配置为将输出数据提供给存储设备或作为数据流(例如,经由互联网)。关于输出数据的内容,输出数据可以包括例如清晰格式或编码的口头语言、图片或视频数据。在一些实施例中,可以附加地或可替代地输出命令信号,其可以被用于命令读取输出数据的设备进行的动作,例如,造成机器人手臂的运动等的命令信号。举例来说,在多个周期之后数据处理设备可能认识到输入数据包含命令,并经由至少一个第二接口执行所述命令。

可以向其中写入数据和从中读取数据的至少一个共享存储器设备(简称:共享存储器)可以是任何合适的计算机存储器。只要不同的进程或线程访问相同的数据,就会使用它。在一些实施例中,数据处理设备的所有组件都可以访问共享存储器。

数据处理设备的至少一个计算设备可以包括一个或多个CPU,其中应当理解的是,每个CPU向数据处理设备的操作系统提供多个处理实体。

数据处理设备的初始配置,即,为所有组件提供所描述的功能性,可以通过提供计算机程序(例如,使用配置文件)来完成,该计算机程序在数据处理设备上被执行时以期望的方式配置数据处理设备或者配置可以被提供编码在硬件中,例如,以ASICS的形式。当然,也可以设想其中一些配置由软件完成而其它部分由硬件编码的方法。

在US 2019/243795 A1中教导了用于本发明的实施的可能硬件,其内容通过引用整体并入本文。

至少一个计算设备被配置为并行执行多个进程,至少包括:

至少一个数据中枢进程

计算模块形式的多个进程

数据处理设备配置有给定数量的计算模块(通常至少为数百个,但优选地为数千、数万、数十万或数百万个计算模块),它们可以根据数据处理设备要处理的数据的预期复杂性来选择,或者可以足够多以能够处理可以合理地预期被输入数据处理设备的任何种类的数据。一般而言,预期数据越复杂,计算模块的数量就应当越多,以提供足够的计算能力。

预先确定相对于计算模块将存在哪些水平计算组和/或垂直逻辑层(下面解释)。

还预先确定在哪些计算模块中存在多少神经元网络和哪些神经元网络以及如何构建每个神经元网络。

此外,在一些实施例中,可以使用计算模块来构建多个类别构造或结构(诸如交换图、投影极限...)以对类别构造的对象和态射建模(如下面解释的)。

在一些实施例中,随机信号发生器可以被配置为向至少一些计算模块的至少一些人工神经元提供随机信号,以增强数据处理设备的无监督学习能力。

关于至少一个数据中枢进程和计算模块形式的多个进程(在下文中简称为“计算模块”),可以陈述以下内容:

数据中枢进程:

数据中枢进程对于数据处理设备中的数据流具有重要作用。在现有技术中,通常以线性方式处理输入数据,即,输入数据被输入到进程,该进程可以包括几个并行和顺序的子进程,并且该进程的输出可以用作其它进程的输入或者可以经由接口输出。多个这样的线性进程可以并行运行。可以理解的是,数据中枢进程的不同子进程(结构)可以完全独立于彼此运行,使得它们也可以被视为独立的进程,而不是更大结构(即,数据中枢进程)的子进程。

在根据本发明的数据处理设备中,输入数据由至少一个数据中枢进程审查,并且如果输入数据尚未以数据片段的形式存在(例如,诸如视频流的各个视频帧等),那么使用至少一个分段子进程将输入数据分段成数据片段,这些数据片段由至少一个创建键控数据片段的键控子进程提供键。键控数据片段存储在至少一个共享存储器设备中(在任何给定时间可能没有或有单个分段子进程或键控子进程或者多个分段子进程或键控子进程,在不同的时间可以存在不同数量的分段或键控子进程)。

在输入数据尚未以分段形式存在的情况下,可以以不同方式进行输入数据的分段以创建分段输入数据,例如,使用一个或多个神经元网络的监督学习。举例来说,如果输入数据是自然语言(书面或口头形式),那么如果数据中枢进程的神经元网络通过监督学习被训练以区分各个词或字母(无论是书面还是口语形式)并相应地将输入数据分段,以使得例如句子(输入数据)的每个词形成分段输入数据,那么是有利的。这种类型的分段对于基于字母表的语言(诸如属于印日耳曼语系的语言)将是有利的。关于使用语标系统而不是字母系统作为其书写形式的语言(例如,中文),根据语标元素进行分段将是有利的。

取决于数据处理设备的实施例对于可能的输入数据应当有多特定,键的生成可以更特定或更不特定。

举例来说,键的生成可以这样进行,使得取决于存在的计算模块和/或计算模块的计算组的数量,由至少一个数据中枢进程为每个计算模块或计算组计算一个特定的键并且为数据片段随机提供其中一个键。可以容易地理解,这不是最高效的工作方式,但对于一些实施例来说可能就足够了。

作为优选示例,键的生成以更特定的方式完成,在一些实施例中采用机器学习技术,诸如神经元网络。在这些实施例中,在训练期间,向至少一个数据中枢进程展现不同输入数据形式的训练数据,并根据输入数据学习不同的键。在一些实施例中,输入数据可能是表示不同种类对象的视觉数据的形式,所述对象诸如“盒子”、“球”、“猫”…,并且至少一个数据中枢进程可以计算“盒子”-键、“球”-键、“猫”-键,...。在这些实施例中,第一计算模块或计算模块的计算组已被训练(以监督和/或无监督的方式)以识别第一形式的对象(例如,以“球”的形式),不同的计算模块或计算模块的计算组已被训练(以监督和/或无监督的方式)以识别第二形式的对象(例如,以“盒子”的形式),...。在一些实施例中,一个或多个ART网络(自适应共振理论网络)可以被用作至少一个数据中枢进程中的机器学习技术。

一旦键控数据片段已经由一个或多个计算模块加载,它就可以从共享存储器设备中被删除以节省存储器空间。必须注意的是,即使删除了键控数据片段,数据中枢进程也会保留键控数据片段是从相同输入数据中分段出来的信息。

应当注意的是,键不必作为区别代码存在。键也可能存在于数据片段本身中,或者由数据片段的结构表示,或者可以由输入数据与个体数据片段之间的态射表示。因此,术语“键控”数据片段应理解为表示可以被至少一个计算模块识别为特定于模块的数据片段。

在一些实施例中,可以给出容差参数以确定键何时至少近似匹配特定的计算模块和/或计算组和/或元-组(meta-group)。在一些实施例中,这些容差参数可以由路由进程提供。

如果分段发生在数据处理设备内,那么至少一个数据中枢进程保持关于哪些共享的键控数据片段是从同一个输入数据分段出来的信息(这可以以不同的方式完成,例如,通过键或通过单独的标识符或通过使用分类结构,诸如投影限制)。键本身,如果作为独特的代码存在,可以小(例如,总计只有几个位,例如30-40位)。

在一些实施例中,存在至少一个路由进程(其可以作为子进程形成数据中枢进程的一部分,或者可以与数据中枢进程分开提供),其将由计算模块中的至少一个提供的输出指引到至少一个其它计算模块。换句话说,计算模块的进程输出可以被指引到能够最好地处理这个输出的另一个计算模块。

在一些实施例中,路由进程可以被用于向计算模块的神经元网络提供容差参数。

在一些实施例中,路由进程可以被用于重复检查计算模块的神经元网络的突触的权重以确保它们不发散(例如,它们是否位于诸如[-1,1]之类的区间内并具有某个期望分布,或者它们是否偏离那个分布)。如果发现计算模块的一个或多个神经元网络存在发散(这使得这个计算模块有问题),那么它可以将有问题的计算模块正在运行的进程转移到不同的计算模块,并且可以重置有问题的计算模块的权重。为此,如果为路由进程提供实时时钟,那么是有用的。在一些实施例中,突触的权重的检查可以由数据处理设备的另一个组件或专用权重分析设备来执行。

计算模块:

计算模块不会不加区别地接收所有输入数据,而是被配置为使得它们知道仅处理用特定于给定计算模块的键来键控的数据(特定于模块的数据片段)。计算模块重复地检查(可以以同步或异步方式完成)是否有任何特定于模块的数据片段存储在共享存储器设备中。如果检测到具有合适键的数据片段(即,特定于模块的数据片段),那么计算模块加载特定于模块的键控数据片段并开始它被配置的数据分析进程。以这种方式,虽然有多个线程或子进程在运行以检查特定于模块的数据,但是计算密集型任务(诸如神经元网络的计算进程)仅在检测到了特定于模块的数据片段时才开始,否则计算模块可以保持空闲状态。

举例来说,计算模块可能已经识别出数据片段表示图片数据,例如示出具有孔洞的身体,并且知道必须将这样的图片数据映射到特定组的其它计算模块。再举一个示例,计算模块可能已经识别出数据片段表示语言,并且知道这样的语言数据将被映射到特定组的其它计算模块,然后该特定组的其它计算模块可以理解语言数据的含义。再举一个示例,计算模块可能将其特定于模块的数据解释为表示动物并将数据分成数据组件,诸如眼睛、四肢、尾巴、…,并将不同的组件发送到不同的计算模块,然后所述不同的计算模块可以进一步分析数据组件。

在一些实施例中,从一个计算模块向另一个计算模块发送数据可以直接经由计算模块之间的连接(这些可以是简单的信令连接或者它们本身可以包括一个或多个计算模块)和/或经由数据中枢进程之一和/或经由路由进程和/或经由共享存储器完成。从信息的角度来看,不同类别之间的连接可以通过使用纤维化类别的概念来考虑,即,连接到基础或索引类别的类别。两个类别可以通过连接它们的基础或索引类别来连接。

使用至少一个人工神经元网络形式的机器学习方法执行计算模块内的数据分析。可以在给定的计算模块中配置本领域已知的任何种类的神经元网络,并且不同的计算模块可以配置不同的神经元网络。特定计算模块的输出可以被输入到其它计算模块和/或发送到(一个或多个)数据中枢进程。本发明的优点是,通常,计算模块中采用的神经元网络在包括少量到中等数量的层的意义上可以相对浅,例如10到15层,并且可以包括相对较少的人工神经元总数,例如,每层5至150个神经元,在一些实施例中多达1000个神经元。

必须强调的是,在以下描述中,有时使用生物学概念来描述语言。但是,这只是为了使描述更容易。实际上,以下所有概念都被配置为由CPU执行的计算机代码,以及下文中讨论的概念(诸如突触、轴突、神经元主体、…)可以例如是基于对象的编程语言(如C++或Java)中的类。

单个计算模块包括至少一个任何已知类型的人工神经元网络(诸如MfNN、RNN、LSTM、...),其包括多个人工神经元。每个人工神经元(以下简称:“神经元”)具有至少一个(通常为多个)用于获得信号的突触和至少一个用于发送信号的轴突(在一些实施例中,单个轴突可以具有多个分支)。通常,每个神经元经由多个突触从其它神经元或神经元网络的输入接口获得多个信号,并将单个信号发送到多个其它神经元或神经元网络的输出接口。神经元主体布置在(一个或多个)突触与(一个或多个)轴突之间,并且包括至少根据本领域的用于积分所获得的信号的积分函数和根据本领域的用于决定是否要对获得的信号作出反应而由这个神经元发送信号的激活函数。可以使用本领域的任何激活函数,诸如阶跃函数、S形函数…。

如本领域中已知的,可以通过权重因子对经由突触获得的信号进行加权。单独的权重因子可以由权重存储装置提供,权重存储装置可以形成单个计算模块的一部分或者可以与计算模块分开配置,并且在后一种情况下,可以为计算模块的多个(或可能所有)神经元网络提供单独的权重,例如,经由共享存储器和/或路由进程。这些权重可以如本领域中已知的那样确定,例如,在训练阶段期间通过修改预先给定的权重的集合,使得期望的结果由神经元网络以所需的准确性给出。可以使用其它技术。

如本领域中已知的,输入信号和权重以及输出信号不必是标量的格式,而是可以被定义为向量或更高维的张量。

在一些实施例中,神经元主体可以包括用于获得在神经元网络外部(并且优选地在计算模块外部)生成的随机信号的受体。这个随机信号可以与将在本公开的后面部分中讨论的新概念的创建结合使用。

神经元网络的神经元可以分层布置(如果计算模块具有分层体系架构,那么不要将其与计算模块的垂直层(参见图3)混淆)。

在一些实施例中,神经元网络的层将不完全连接。

在一个实施例中,计算组本身可以被组织成元-组。在一些实施例中,可以存在用于数据片段的键,其表示这些数据片段特定于元-组。除了特定于各个计算模块和/或特定于各个计算组的那些键之外,还可以提供这样的键。

在数学上,计算组可以由数量为n x m的计算模块C

可以例如通过选择要使用的神经元网络的类型(例如,经典或量子通用ANN或更具体的ANN,如用于图片或视频数据的MfNN-多层前馈NN、诸如用于声音数据的分析的LSTM之类的RNN,...)和/或要使用的神经元网络的具体设置(例如,神经元网络使用哪些训练数据进行训练、神经元网络中的层数、神经元的数量,...)来配置用于给定种类的数据的计算模块。

在一些实施例中,计算模块可以具有分层结构(形成垂直类型的组织),这意味着计算模块可以具有特定于功能的层(其可以被认为是垂直堆叠的)。有可能所有计算模块和/或给定计算组或元-组的计算模块具有相同的分层结构和/或分层结构因计算组之间和/或元-组之间不同而不同。

举例来说,分层结构的第一层(从堆栈的顶部开始计数)可以被用于接收特定于模块的数据并处理这个数据以便为特定于计算模块的机器学习方法做准备。连接到第一层的另一层(可能通过一个或几个中间层,使得它从第一层和可能的(一个或多个)中间层接收数据)可以包括至少一个处理由第一层(和可能的(一个或多个)中间层)提供的数据并将所执行的机器学习方法的结果输出到至少一个共享存储器设备和/或至少一个其它计算模块和/或输出到至少一个数据中枢进程和/或路由进程的神经元网络。在包含至少一个神经元网络的层之后可以再提供至少一层,其可以使用机器学习方法(例如,以神经元网络的形式)来确定由前一层的至少一个神经元网络处理的数据应当被发送到哪里。

在一些实施例中,第一层可以被用于通过应用拓扑下变换过程来处理特定于模块的数据。在初始配置之后,神经元网络要求恒定尺寸的输入数据,例如,尺寸为10.000的输入向量。在现有技术中,如果输入向量较大则截断,如果较小则可以使用填充。相对照地,拓扑下变换为给定的神经元网络提供了具有正确尺寸的输入。

在一些实施例中,计算模块可以具有至少六层I-VI,例如具有以下关于数据分析和交互的功能(注意的是,如果使用类别构造,那么层可以经由态射连接在一起):

层I被配置为处理从共享存储器和/或数据中枢进程获得的特定于模块的键控数据片段(诸如目标向量)。这一层可以例如通过拓扑下变换,准备数据以更好地适合由至少一个神经元网络处理。它可以将这个数据发送到层II和层III。

层II和层III可以各自包括至少一个神经元网络,每个神经元网络处理从层I和可能从其它计算模块获得的数据。这些是机器学习可以发生以在数据分析期间使用众所周知的反向传播神经元网络(诸如通用ANN或更特定的ANN,如MfNN、LSTM…)以认知方式处理数据的层(在此,突触权重在训练期间被修改以学习图片、词…)。在一些实施例中,这些层还可以从至少一个其它计算模块接收信息,例如,从至少一个其它计算模块的层V或VI。在一些实施例中,层III包含至少一个神经元网络,其接收如下所述的随机信号。

层IV可以包括至少一个神经元网络,但是,其不用于认知数据处理,而是例如通过拓扑下变换来变换来自数据中枢进程或共享存储器的数据(诸如输入向量)。它可以将这个数据发送到层II和层III。

在层V和VI中可以存在神经元网络(例如,存在于层II和III中的一般类型的神经元网络),其可以被用于学习由数据表示的信息是否更适合在不同的计算模块中处理并且可以被用于将这个数据相应地发送到数据中枢进程和/或共享存储器和/或路由进程和/或直接发送到可以输入这个数据的另一个计算模块,例如,在层II或III中。

计算模块的垂直组织可以与水平组织一起存在,或者如果不存在水平组织的话也可以。

在并行计算可以发生在计算模块中的意义上,至少在可能的几个层之一上或在所有层上,计算模块可以由一个或几个子模块组成。举例来说,一个计算模块可以包括多于一个子模块,其中每个子模块包含不同的神经元网络。不同的子模块可以并行处于活动状态,或者只有其中一个或多个子模块可以在给定时间处于活动状态,例如,如果特定于模块的数据片段调用它的话。

应该理解的是,从程序员的角度来看,计算模块是计算机程序用其编程的编程语言的某个结构。举例来说,如果使用C++作为语言,那么计算模块可以是具有指针以指向表示其它计算模块、数据中枢进程...的其它C++类的C++类(不是作为数据容器,而是对进程进行编码)。表示计算模块的每个C++类可以包括表示计算模块的组件(诸如计算模块的(一个或多个)神经元网络)的其它C++类。在开始程序之后,对计算模块进行编码的进程、数据中枢进程和可能的其它组件将空闲运行,直到经由至少一个第一接口提供输入数据。

对于由数据处理设备的至少一个计算设备执行计算模块,关于实施例,可以提供每个计算模块形成一个线程。关于单个计算模块,那个计算模块的每个计算实体(诸如神经元网络)可以由单个CPU或CPU的核或由几个CPU或一个或几个CPU的核执行,具体取决于实体的复杂性。

本发明的可能实施例的简要描述:

输入数据由数据捕获设备提供,例如,以图片、语言、声音等的形式。这个输入数据经由至少一个第一接口提供给至少一个数据中枢进程,在一些实施例中经由共享存储器提供,它将输入数据分段成键控数据片段。多个计算模块重复地检查数据中枢进程和/或共享存储器中是否存在具有匹配键(可以给出容差参数以确定键何时至少近似匹配)的任何数据。如果是,那么将用这个键键控的数据片段加载到(一个或多个)合适的计算模块中。取决于加载的(一个或多个)键控数据片段,并且在一些实施例中,通过所请求的容差,(一个或多个)计算模块使用至少一种机器学习方法生成输出,该输出例如是加载的键控数据片段的分类结果。至少一个其它计算模块加载输出(两个计算模块直接和/或经由共享存储器和/或经由至少一个数据中枢进程和/或经由路由进程连接,并且“另一个”计算模块总是检查所连接的计算模块和/或共享存储器和/或至少一个数据中枢进程和/或经由路由进程),并且通过至少一种机器学习方法将输入映射到特定于这个计算模块的输出(计算模块在训练期间已被训练做这个映射)。在多个周期之后,数据处理设备将经由至少一个第二接口输出数据,例如,一些(可能是一组)计算模块可以识别出输入数据包含命令并经由至少一个第二接口输出所述命令。

举例来说,数据处理设备可以被用于控制机器人手臂,该机器人手臂被假定抓取具有某个形状(例如,盒形)的对象而不是不同形状(例如,球形)的对象。对象由输送器运输并且对象以不同的朝向放置在输送器上并且可能或多或少被损坏。输入数据由连接到至少一个第一接口的一个或多个相机提供给数据处理设备。数据处理设备经由至少一个第二接口的输出是对机器人手臂是否抓取某个对象的命令。为了使其成为可能,数据处理设备必须从输送器上以特定朝向提供的特定对象概括为具有某个形状(例如,盒形)的一类对象。

在这个示例中,相机信号经由至少一个第一接口输入到数据处理设备中并且使其可用于数据中枢进程,该数据中枢进程对输入数据分段并提供输入数据的键。例如,输入数据的分段可以基于数据中枢进程使用成熟的机器学习方法进行的图像解释和分类来进行,这允许相机图像中存在的结构的识别和分类,例如,以便从表示输送带上的对象(例如,输送带上的盒子)的输入数据中对表示输送带的输入数据分段。

在不同的示例中,关于自然语言解释,输入数据可以由数据中枢进程使用成熟的机器学习方法分段,该机器学习方法允许音频流中存在的结构(例如,单独的音素、音节、单词、短语或从句)的识别和分类。

一般而言,由数据中枢进程提供给数据片段以创建键控数据片段的键将由数据中枢进程确定,使得特别适合处理数据片段的那些计算模块可以找到这个特定的键控数据片段,并且其它不适合处理该数据片段的计算模块知道忽略这个数据片段,从而缩短处理该数据片段所需的时间。

在输送器上带有盒形对象的示例中,将有不同的多个计算模块被配置为处理表示不同种类对象(诸如盒子、球、…)的数据。在这个示例中,其中一个键可以表示“盒子”或“盒形”,另一个键可以表示“球”或“球形”,等等。

在数据分析的过程中,数据中枢进程可能变得需要改变键控数据片段的键,有利地考虑由一个或多个计算模块提供的附加信息。例如,输入数据被数据中枢进程键控为“球”,因为相机图片中示出的盒子被损坏,使得在某种程度上它像球并且数据中枢进程为这个数据片段提供了“球”键。为“球”配置的计算模块加载数据、删除键、应用机器学习方法并看到对象不是球。计算模块将带有附加信息“不是球”的这个数据片段返回到共享存储器或直接返回到数据中枢进程。数据中枢进程考虑到“不是球”的附加信息来计算不同的键,例如,表示“盒子”的键,并且认为这可能是它负责的对象的每个计算模块检查这实际上是否是这种对象。

在计算模块之一意识到对象是损坏的盒子的情况下,这个模块向其它计算模块输出“损坏的盒子”。最后,一组专门的计算模块对这个信息采取行动并使机器人手臂抓住损坏的盒子。

一般而言,不限于特定实施例,计算模块可以被组织成计算组,其中每个计算组包含数百、数千、数万或更多被配置为分析给定种类的数据和/或执行特定任务的计算模块。举例来说,一个这样的计算组可以由被配置为分析图片或视频数据的计算模块组成,另一个组可以由被配置为分析声音的计算模块组成,而再一个组可以由被配置为针对要由数据处理设备控制的设备生成控制命令的计算模块组成。(一个或多个)数据中枢进程可以准备键控数据片段,使得清楚哪些键控数据片段属于哪个计算组。这种组织方式可以被称为模块的水平组织,因为模块处于相同层级。

在一些实施例中,可以存在用于数据片段的键,其表示这些数据片段特定于计算组。除了特定于各个计算模块的那些键之外,还可以提供这样的键。

数据处理设备对分类结构的表示:

在本发明的优选实施例中,计算模块被用于表示可以使用范畴论以数学方式建模的结构。在范畴论的语言中,一个或多个计算模块可以表示一个或多个类别、类别的(一个或多个)对象或类别的(一个或多个)态射。一个或多个计算模块可以表示函子(类别之间的映射)或自然变换(函子之间的映射)或通用对象(诸如投影极限、拉回、推出…)。使用类别构造的一大优势是数据处理设备不需要包含内部数据库(虽然在一些实施例中,数据处理设备有可能访问外部数据库,例如,以核实由数据处理设备创建的新概念或获得对于监督学习的步骤的监督)。大型数据库往往是非常硬件密集的,并且要处理的数据越复杂,数据就越详细,因此数据库必须大。结合多个共同运行的计算模块使用类别构造允许复杂数据的处理,而无需具有使用数据库时会出现的硬件要求。此外,使用类别构造允许表示逻辑连接。可以使用可以通过类别构造建模的连接以高效的方式处置信息流。除了数据库之外,在一些实施例中,数据处理设备可以创建和学习新概念。

态射的组合可以被用于顺序地表示进程和/或概念。

张量积可以被用于并行地表示进程和/或概念。

函子可以被用于将结构和/或概念从一个类别映射到另一个类别。

可以使用自然变换将一个函子映射到另一个函子。

交换图可以被用于学习未知概念(有或没有监督),如果交换图的足够多的其它元素是已知的,那么这些未知概念形成交换图的一部分。

态射、张量积、函子、自然变换和/或交换图和/或本公开中描述的其它类别构造的组合和/或合成可以被用于通过使用图的网络来学习新概念(有或没有监督)。

举例来说,数据处理设备可以被配置为使得存在多个类别,其中每个类别由多个互连的计算模块或单个计算模块表示。互连可以通过态射或函子的合成(直接或在纤维化类别的情况下经由它们的基础类别)来完成,这在编程语言中意味着所选择的编程语言中代表计算模块的语言构造通过由所选择的语言提供的方式适当地互连,例如,在类之间使用指针。

诸如路由进程之类的数据中枢进程的结构可以被建模为例如类别之间的态射或函子,而类别之间的态射或函子进而由计算模块或计算模块的组和/或由数据中枢进程的其它结构建模。

举例来说,使用类别构造的数据分析可以通过以下方式进行:

假定输入数据ID

一旦特定于模块的数据片段

在如果提供不同版本的数据片段KS

一旦计算模块

如果存在至少两个计算模块,比如说,它们表示给定类别

例如,如果A

如果存在两个类别

当在数据处理设备的初始配置期间构建类别构造时,存在多个类别构造,数据处理设备可以在无监督学习步骤中使用这些类别构造来学习新概念,例如,通过以下方式:

假定对于上面给出的示例性交换图,类别

假定关于上面给出的示例函子,在

可替代地,如果仅B

找到形成可交换图(可能非常复杂)的一部分的未知量的技术有时通俗地称为“图追逐”。

以上示例虽然对本发明有意义,但是当然非常简单。可以使用更复杂的类别构造,诸如例如拉回或推出、投影极限(有时投影极限也称为逆极限或间接极限)或归纳极限(有时称为直接极限)或子对象分类器。

一个和一些类别构造可以被用于不同的函数(其中每个函数将由不同组的计算模块表示),例如,投影极限可以被用于将数据分布到数据处理单元中的不同结构(路由),使用随机信号创建新概念和/或近似地表示全称量词。

关于例如数据中枢进程的路由进程和/或通过单独的计算模块和/或计算模块的组,为了通过将数据发送到不同的计算模块来分析数据,可以例如如下使用投影限制:

要解释的数据被输入到计算模块(取决于数据的复杂性,在实践中,它将常常必须是一组计算模块),其被解释为表示被解释数据的投影极限由一系列数据片段

举例来说,假设数据处理设备必须解释一些数据X的含义。取决于数据X的复杂性,单个计算模块将没有足够的复杂性来计算数据X的含义。因此,数据X被发送到不同的计算模块(或计算模块的组)并且每个计算模块试图找出它是否知道数据X的含义。如果计算模块发现它知道数据X(的至少一部分),那么它可以将这个信息或者提供给最初发送数据X的计算模块,或者优选地提供给可以搜集不同计算模块的响应的结构(诸如路由进程)。如果计算模块发现它不知道数据X,那么它可以将数据X发送到不同的一组计算模块(或单个计算模块)以让它们检查数据X。可以通过将数据X解释为投影极限

计算模块可以如何查明它是否知道一些数据或数据片段可以通过如下操作来理解:记住计算模块表示类别

如果使用具有垂直分层结构的计算模块,那么可以例如在层V和VI中将数据片段投影到其它对象。

在优选实施例中,使数据处理设备能够自己创建新概念,诸如例如新的几何对象(例如,它是两个八面体或具有孔的球的融合)或句子(诸如“Cat wins US presidentialelection”(“猫赢得US总统选举”))。这种新概念不一定需要像给定的例句所证明的那样有意义。但是,通过用数据处理设备已知的有意义的概念(诸如例如不同形状的几何对象或关于猫的不同句子)检查新概念,它将常常能够自己决定新概念是否有意义。但是,在一些情况下,可能需要获得外部输入来决定新概念是否有意义,例如,通过询问数据处理设备的操作者或访问外部数据库。换句话说,“新概念本身的创造”意味着这些新概念是从输入数据或输入数据分析中逻辑推导出来的。

在一些实施例中,可以通过将由随机信号发生器生成的随机信号输入到神经元的受体来创建新概念。可以将这个随机信号输入到积分函数的结果以修改(例如,通过添加或相乘)该结果,使得激活函数对修改后的结果进行操作。以这种方式,被输入信息的神经元网络的计算将不仅仅基于输入信息,还基于修改后的结果。通过这种机制,神经元网络所表示的信息或概念将以不可预见的方式发生改变。在大多数情况下,改变后的信息将是错误的或无用的。但是,在一些情况下,新信息或概念将被认为是有用的,例如,以创建新的类别构造。随机信号发生器不需要形成数据处理设备的一部分,但是这当然是可能的,但可以是可以连接到数据处理设备的外部设备。在一些实施例中,随机信号发生器将生成取自区间(例如,[0,1])的随机数形式的随机信号。优选地,随机信号不是以规则的时间间隔而是根据泊松分布发送的。

在发现新概念有用的情况下,数据处理设备可以训练一个或多个计算模块以学习这个新概念。路由进程可以存储新概念,直到训练了一个或多个计算模块。

在一些实施例中,只有神经元网络的一些神经元将被提供随机信号,优选地相对于神经元网络中的信息流方向更上游的那些神经元。举例来说,在分层神经元网络中,可以向神经元网络的输入接口之后的第一层或第一和第二层提供随机信号,而其余层的神经元将以本领域已知的方式工作,即,没有随机信号的输入。

将随机信号输入神经元主体的概念不应当与将随机信号输入(例如,相加或相乘)神经元突触的权重的概念混淆。这个概念也可以应用于本发明,而不管随机信号是否被输入到神经元主体的问题。

在一些实施例中,通过使用随机信号创建新概念是由表示投影极限的至少一批多个计算模块完成的。

在那些利用随机信号来创建新概念的实施例中,存在至少两批不同的多个计算模块:至少一批多个计算模块用于分析数据以及至少一批多个计算模块用于创建新概念。前一批多个计算模块的尺寸将大于后一批多个计算模块的尺寸。虽然用于分析数据的至少一批多个计算模块将在大部分时间空闲运行并且仅在存在特定于模块的数据时才进行计算工作,但是用于创建新概念的至少一批多个计算模块将或多或少地进行连续工作。在一些实施例中,因此可能有利的是将新学习的概念传送到其它计算模块以存储它们,以便释放用于创建新概念的那些计算模块。

数据处理设备的训练:

配置之后数据处理设备的训练部分地以监督方式完成,并且在一些实施例中(例如,具有类别构造的那些),部分地以无监督方式完成,并且在一些实施例中使用新概念的创建。训练可以在一些实施例中部分地在数据处理设备的推理操作之前完成并且部分地在推理操作期间完成,如下面所解释的:

在第一方面,可以通过提供训练数据、将创建的输出与目标输出进行比较、以及调整神经元网络以更好地使目标输出近似所创建的输出(例如,使用反向传播),来以通常的方式针对至少一些神经元网络完成监督训练步骤,直到达到所需的准确性。这通常在数据处理设备的推理操作之前完成。也可以在这个阶段期间完成关于分段和/或键控和/或路由训练至少一个数据中枢进程。

在第二方面,监督训练可以与现有技术不同地进行:举例来说,假设经由第一接口输入句子“John works here”(“John在这里工作”)。数据处理设备具有用于名称和位置的类别,例如,在“名称”类别中,不同的名称由诸如“Mary”、“Jim”等对象表示,而在“位置”类别中,不同的地方被表示为诸如“company A”(“公司A”)、“company B”(“公司B”)、“home ofMary”(“Mary的家”)、“home of Jim”(“Jim的家”)等对象。动词“work”可以由“名称”类别与“位置”类别中表示公司的对象之间的第一函子和“名称”类别与表示公司中的不同职位(诸如“经理”、“助理”等)的对象的类别之间的第二函子表示。还有一类句子,它的对象是句子。相同类别的对象之间的联系由态射表示,而不同类别之间的联系由函子表示,例如,函子可能将对象“Mary”连接到“home of Mary”以及其它类别中与“Mary”相关的更多信息,函子之间的连接由范畴论中众所周知的自然变换表示。“名称”类别可能会连接到另一个类别,该类别可能具有可能与姓名相联系的属性,例如,男性和女性名称之间的区别。函子可以使用自然变换彼此映射。

让我们假设数据处理设备还没有学习“John”的含义和“here”(“在这里”)的含义。在尝试通过将“John”和“here”输入映射到句子的类别的函子(实际上是双函子)来解析句子“John works here”的含义时,它意识到“John”是男性的名称,“work”(“工作”)是与特定公司的特定职位相联系的东西,并且假定“here”是位置类别中的特定对象,但它不知道“John”的职位是什么以及“here”是指哪家公司。这促使数据处理设备经由第二接口输出两个问题,即,“In which company does John work?”(“John在哪个公司工作?”)和“Whatposition in the company does John work?”(“John在公司中的什么位置工作?”)。一旦通过人类主管或通过查阅外部数据库回答了这些问题(例如,“John is amanager incompany B”(“John在公司B中是经理”)),数据处理设备就将根据需要配置尽可能多的计算模块来以正确类别中的对象和态射的形式存储新学习到的信息。另一个问题可能是“Wheredoes John live?”(“John在哪里住?”)。一旦回答了关于“John”的问题,数据处理设备就可以训练表示“work”和“live”(“住”)的函子之间的自然变换,因为这两个概念对于“John”都是有意义的。

在一些实施例中,无监督训练可以使用以上述方式由计算模块表示的互换图而发生。在一些实施例中,无监督训练也可以由于随机信号的输入和如上所述的新概念的创建而发生。

举例来说,一个计算模块或计算模块的计算组可以被训练以通过以下方式识别第一种类的对象(例如,“盒子”):

示出第一种类的对象的不同实施例的学习数据经由至少一个第一接口输入到至少一个数据中枢进程(在一些实施例中经由共享存储器),如果需要的话,其将输入数据分段成键控数据片段。多个计算模块重复地检查数据中枢进程和/或共享存储器中是否存在具有匹配键的任何数据(可以给出容差参数以确定键何时至少近似匹配)。如果存在特定于模块的数据片段,那么用这个键键控的数据片段被加载到(一个或多个)合适的计算模块中。根据加载的(一个或多个)键控数据片段,并且在一些实施例中,通过请求的容差,(一个或多个)计算模块使用至少一种机器学习方法生成输出,该输出例如是用于加载的键控数据片段的分类结果。这个输出数据被(一个或多个)计算模块的(一个或多个)神经元网络通过本领域已知的技术(例如,反向传播)以通常的监督学习方式使用来训练(一个或多个)神经元网络。

可以以相同的方式训练另一个计算模块或计算模块的计算组以识别第二种类的对象(例如,“球形对象”)。

当然,可以对其它种类的数据进行相同的训练,诸如例如表示自然语言的数据,其中可以训练第一计算模块或计算模块的计算组以识别第一语言结构,可以训练第二个计算模块或计算模块的计算组来识别第二语言结构…。

至少一个其它计算模块加载输出(两个计算模块直接和/或经由共享存储器和/或经由至少一个数据中枢进程连接,并且“其它”计算模块总是检查所连接的计算模块和/或共享存储器和/或至少一个数据中枢进程),并通过至少一种机器学习方法将输入映射到特定于该计算模块的输出(计算模块在训练期间已被训练进行此映射)。

在一些实施例中,由数据处理设备的至少一个计算设备执行的多个进程可以包括至少一个辅助进程,该辅助进程提供学习参数神经元网络,其对于不同种类的数据可能是不同的。此外,在训练期间,可以为计算模块提供用于计算模块中存在的神经元网络的容差参数(η

在一些实施例中,无监督训练步骤关于多个预先构建的类别构造发生。这可以在数据处理设备的推理操作之前和/或期间发生。

在一些实施例中,每个计算模块被预训练以进行特定映射,其中加载的输入被映射到由这个计算模块表示的输出。

在一些实施例中,每个计算模块被配置为对特定于模块的数据片段执行机器学习方法,所述机器学习方法包括使用至少一个预训练的神经元网络的数据解释和分类方法。至少一个神经元网络的训练可以通过监督学习以通常的方式完成,其中输入数据被提供为训练向量,并且至少一个神经元网络的参数被改变直到在可接受的容错范围内或以上述其它方式输出数据与预期输出对应。

由于数据处理设备学习到错误概念的情况可能发生,因此在一些实施例中,不时地检查数据处理设备学习到什么可能是有帮助的,例如,通过向数据处理设备询问如“Where can people live”(“人们在哪里住”)的问题,并且如果数据处理设备的答案包含错误答案(诸如“People live in companies”(“人们在公司住”))的话告诉数据处理设备删除这个错误的信息。

使用类别构造,即,投影极限,在一些实施例中,有可能近似表示全称量词

投影极限由多个计算模块表示。随机信号由随机信号发生器生成,并被投影极限的计算模块的至少一些神经元网络用于以测试数据的形式生成新概念。当然,不可能确切地表示像

假定表示投影极限的计算模块已经学习到一些事实,例如,关于素数,它们使用这些事实来制定假设(例如,对于所有自然数,存在更大的是素数的自然数)。然后,使用随机性生成的大量测试数据,他们可以检查关于给定断言的假设是否为真,例如,对于测试数据的每个自然数,有更大的是素数的自然数是否为真。当然,这不是传统意义上的数学证明。更确切地说,推理是,如果假设针对非常大量测试数据进行检查并且对每个测试数据都成立,那么它也可能被认为对所有可能的数据都是真的。

以这种方式,在一些实施例中,即使不通过诸如人类操作员或外部数据库的外部参考进行检查,也可以发生无监督学习。例如,可以使用其它计算模块来完成检查,特别是如下计算模块,它们一起表示可以被视为自然逻辑的存在量词

一旦假设已经以任何合适的方式被检查,它就可以被发送到另一组计算模块用于表示,以释放计算模块的计算能力来检查其它假设。

通过使用非交换态射或函子,数据处理设备可以创建时间和/或空间朝向感:

例如,输入到数据处理设备中的与按时间排序的事件相关的数据可以由适当数量的类别来表示(这是信息观点,在技术观点中,必须配置适当数量的计算模块)。在一些实施例中,在可预定的时间跨度内,例如在0.1秒和0.5秒之间,一个接一个地输入的事件通过非交换函子连接类别的基础类别来以连接的方式表示。替代地,可以明确指示数据处理设备连接这些事件。以任一方式,因果关系和时间概念(例如,“earlier”(“更早”)和“later”(“更晚”))可以被编码,例如,通过类别之间的函子。

而且,如果数据处理设备已经被训练识别“will”(“将”)和“tomorrow”(“明天”)意味着存在现在和未来,那么如“I will go to school tomorrow”(“我明天将去学校”)的时间句子可以被分析。这种时间排序可以由类别表示,这些类别经由它们的基础被连接,如上所述。

类似地,可以推导出图像等中对象的空间关系,并且可以通过使用表示那些对象的类别的基础类别之间的非交换函子对这些对象之间的空间关系进行编码,来由数据处理设备构建这些关系的分类表示。

可以在一些实施例中使用的类别构造的另一个有趣示例是子对象分类器的示例,其允许数据处理设备推断或定义给定对象是否是更大对象的一部分。

作为一般事项,应当注意的是,在数据处理设备的操作期间,一个且同一个分类对象可以由不同的计算模块来表示。

附图说明

附图示出了以下的示意图:

图1:根据本发明的实施例的数据处理设备

图2:计算设备的内部结构以及它的组件与数据处理设备的其它组件之间的交互

图3:计算模块的内部结构以及它的组件与数据处理设备的其它组件之间的交互

图4:数据中枢进程的内部结构

图5:根据本发明的实施例的步骤

图6:表示类别构造的计算模块

图7:涉及结构识别的示例

图8:关于图7的示例的细节

图9:关于图7的示例的细节

图10:关于图7的示例的细节

图11:涉及数据处理的示例

图12:使用类别构造的图11的示例

图13:示出具有用于随机信号的受体的单个人工神经元的示例

图14:具有如图13中所示的多个神经元的神经元网络的示例

图15:计算模块与类别构造之间的对应关系

图16:发明性数据处理设备的操作中的不同阶段

图17:计算模块的可能垂直分层组织

图18:使用类别构造“拉回”来定义让数据处理设备采取动作的概念的示例

图19:涉及通过使用类别构造进行的无监督学习的示例

图20:涉及数据类型的组合的分析的示例

图21:涉及自然语言的分析的另一个示例

图22:示出自然逻辑中的全称量词和存在量词的近似定义的示例

图23:数据处理设备可以如何构造时间中的朝向感的示例

图24:数据处理设备可以如何构造空间中的朝向感的示例

图25:可以如何构造和使用子对象分类器的示例

具体实施方式

应当注意的是,附图中所示的组件的数量应被理解为示例性的而非限制性的。特别是关于计算模块7,假设实际上将有比图中所示更多的实例化。虚线至少示出数据处理设备1的组件之间的一些交互,但可能不是所有交互。还应当注意的是,诸如计算模块7之类的实体的图形表示或与这些实体一起示出的对象的图像(例如,几何体)被绘制以更好地理解本发明,但是,相对于数据处理设备1,是用计算机代码编码并在运行时(技术观点)或分类表示(信息观点)期间实例化的实体:

数据处理设备1的物理观点与信息观点之间存在差异。关于前一种观点,多个计算模块7可以被视为矩阵(或更高维张量),其中每个单独的计算模块7由索引(例如,C

图1示出了数据处理设备1的实施例,包括:

至少一个第一接口2,用于接收输入数据ID

至少一个第二接口3,用于输出输出数据OD

至少一个共享存储器设备4,数据可以被写入其中或从中读取

至少一个计算设备5,至少一个第一接口2和至少一个第二接口3以及至少一个共享存储器设备4连接到该计算设备5,并且该计算设备5被配置为:

从至少一个第一接口2接收输入数据ID

向至少一个第二接口3发送输出数据OD

从至少一个共享存储器设备4读取数据并将数据写入至少一个共享存储器设备4

图2示出了多个计算模块7,它们在一些实施例中被组织成逻辑计算组16(其可以被组织成逻辑元-组,但这未被示出)并且经由共享存储器设备4与至少一个数据中枢进程6交互。输入数据ID经由至少一个第一接口2输入共享存储器设备4和/或至少一个数据中枢进程4。输出数据OD经由至少一个第一接口2输出到共享存储器设备4和/或至少一个数据中枢进程6。

图3示出了用于实施例的计算模块7的内部结构,其中计算模块7设有例如六个不同的层I、II、III、IV、V、VI(层数对于不同的计算模块7可以不同)。图17中还示出了使用这种结构分析数据的步骤。还可以看到存在路由进程28(在这个实施例中与数据中枢进程6分开,但是在一些实施例中它可以构成数据中枢进程6的一部分),其知道哪个计算模块7必须与数据处理设备1的哪个其它组件连接。

在一些实施例中,层I可以被配置为处理从共享存储器4或数据中枢进程6获得的特定于模块的键控数据片段KS

在一些实施例中,层II和/或III可以被配置为处理从层I以及可能从其它计算模块7例如经由神经元网络71(举例来说,示出了ANN)获得的数据。这些是机器学习在数据分析期间进行认知处理数据的层。在一些实施例中,这些层还可以从其它计算模块7接收信息,例如,从这些其它计算模块7的层V或VI。

在一些实施例中,层IV可以被配置为包括至少一个神经元网络71,但是,神经元网络71不用于认知数据处理,而是对于层II和III变换来自数据中枢进程6或共享存储器4的数据(诸如输入向量),例如,通过拓扑下变换。

在一些实施例中,层V和/或VI可以被配置为包括神经元网络71,其可以被用于学习由数据表示的信息是否更适合在不同的计算模块7中处理,并且可以相应地将这个数据发送到这个数据可以被输入的数据中枢进程6(优选地经由路由进程28)和/或共享存储器设备4和/或至少一个其它计算模块7,例如,在层II或III中。

图4示出了用于实施例的可能几个数据中枢进程6之一的内部结构,其中:

输入数据ID通过可能的几个分段子进程61之一被分段成数据片段S

键K

键K

键控数据片段KS

可选的至少一个路由进程28,这里作为子进程,将由至少一个计算模块7提供的输出指引到至少一个其它计算模块7,该至少一个路由进程28访问共享存储器设备4

图5示出了由至少一个数据中枢进程6和至少一个计算模块7执行的可能步骤:

经由至少一个第一接口2捕获输入数据ID

键K

输入数据ID通过可能的几个分段子进程61之一分段成数据片段S

键控数据片段KS

键控数据片段KS

计算模块7对于特定于模块的键控数据片段KS

如果存在任何特定于模块的键控数据片段KS

计算模块7开始对特定于模块的键控数据片段KS

计算模块7将它们的输出提供给共享存储器设备4和/或至少一个数据中枢进程6和/或至少一个其它计算模块7

图5示出了在一些实施例中类别构造可以如何由计算模块7及其交互来表示。应当注意的是,每个计算组16的计算模块7的数量在计算组16之间可以不同,并且计算模块7对类别构造的表示决不依赖于计算组16的存在或计算模块7的内部结构。

在一些实施例中,不同的计算组16可以表示不同的类别

更复杂的类别构造(诸如投影极限

包括类别构造的本发明的那些实施例的优点是,数据处理设备1可以使用计算模块7以监督方式学习到的概念来至少部分地以无监督方式学习相关概念。

图7示出了一个示例,其中多个计算模块7被配置为进行结构识别,以便使它们能够识别四面体、八面体或盒子形状的几何对象,而不管几何对象的颜色、旋转状态或可能变形如何。可以如下布置:数据处理设备1通过经由第二接口3以机器人命令的形式向机器人20提供输出数据OD来使机器人20从输送带9移除一些几何对象而不移除其它几何对象。

不同的对象(四面体17、八面体18和盒子19)被放置在输送带9上,输送带9将它们运输经过连接到第一接口2的图像捕获设备8(此处为光学相机的形式)以提供视频流或一系列图像作为可以由数据中枢进程6加载的输入数据ID。如上所述,输入数据ID被分段并且键被创建。在本示例中,假定分段子进程61已根据本领域技术进行训练,以识别输入数据ID中各个对象的存在并创建数据片段S

转向图8,示出了表示类别

当然可以表示除旋转以外的其它类型的变换,诸如平移、反射、...。应该理解的是,在一些实施例中,态射α

图9的一组计算模块7与图8中所示的相同。使用函子

图10示出了表示类别

图11示出了在一些实施例中数据处理设备1可以如何通过使用不同的计算模块7来分析复杂数据,每个计算模块被训练为识别特定数据。一些数据X被输入到路由进程28(或不同的结构,诸如计算模块7的足够复杂的布置),该进程将这个数据发送到不同的计算模块7。每个计算模块7通过检查A

在第一示例中,第一类别

在第二示例中,第一类别

在优选实施例中,使得数据处理设备1能够通过将随机信号RANDOM输入到计算模块7的(一个或多个)神经元网络71的至少一层,使得在积分之后被已知类型的神经元网络71的激活函数σ用来确定某个神经元21是否将被激发的神经元的输入被修改,来自己创建新概念(参见图13)。以这种方式,输入有关于几何对象的信息的神经元网络71将其计算不仅基于输入信息而且基于被随机信号改变的输入信息。在图11中,这由表示为“RANDOM”的信号线表示。在一些实施例中,如果使用分层结构的计算模块7,那么可以将这个随机信号RANDOM提供给存在于层III中的至少一个神经元网络71。

图12示出了投影极限可以如何用于图11中描述的进程,例如,被数据中枢进程6的路由进程28和/或各个计算模块7和/或计算模块7的组16使用:要被解释的数据X被输入到计算模块7(取决于数据的复杂性,在实践中,它将常常必须是计算模块7的组16),它被解释为表示数据X的投影极限,其被解释为由一系列数据片段组成

图13示出了人工神经元网络71的单个人工神经元21。人工神经元21(以下简称:“神经元21”)具有至少一个(通常为多个)用于获得信号的突触24,以及至少一个用于发送信号的轴突(在一些实施例中,单个轴突可以具有多个分支25)。通常,每个神经元21经由多个突触24从其它神经元21或神经元网络71的输入接口获得多个信号,并向多个其它神经元21或神经元网络71的输出接口发送单个信号。神经元主体被布置在(一个或多个)突触24与轴突之间,并且至少包括用于根据本领域对获得的信号进行积分的积分函数22和用于决定信号是否由这个神经元21发送的激活函数23。可以使用本领域的任何激活函数23,诸如阶跃函数、S形函数、…。如本领域已知的,经由突触24获得的信号可以由权重因子w加权。这些可以由权重存储装置26提供,权重存储装置26可以形成单个计算模块7的一部分,或者可以与计算模块7分开配置,并且可以向计算模块7的多个(或可能所有)神经元网络71提供单独的权重w。这些权重w可以如本领域已知的那样获得,例如,在训练阶段期间通过修改预先给定的权重w的集合,使得神经元网络71以期望的准确性给出期望的结果。

在一些实施例中,神经元主体可以包括用于获得在神经元网络71外部(并且优选地,在计算模块7外部)生成的随机信号RANDOM的受体29。这个随机信号RANDOM可以与数据处理设备1自主创建新概念结合使用。

神经元网络71的神经元21可以布置在层L

在一些实施例中,层L

图14示出了形成神经元网络71的一部分的神经元21的三层L

图15以示例的方式示出了形成张量的一部分(此处为2×2矩阵)的多个计算模块7(所选择的数量四仅作为示例)C

图16示出了虽然近似地说不同的阶段可以被认为存在于根据本发明的数据处理设备1的实施例的操作中,但是这些阶段中的至少一些可以被认为在时间上重叠或以循环方式存在:

第一阶段被表示为“配置”。在这个阶段,配置数据处理设备1的基本结构,诸如数据中枢进程6的存在、计算模块7的存在、分类结构的配置、辅助进程的配置等。

一旦这个第一阶段完成,数据处理设备1就可以开始监督训练。不必如本领域已知的那样完成这个训练(通过向神经元网络提供训练数据并调整权重直到以期望的准确性获得期望的结果),但是这是可以进行的。根据本发明,数据处理设备1也有可能(附加地或可替代地)接收输入数据ID(例如,通过传感器或通过访问外部数据库),使用计算模块7分析输入数据ID,并且与外部教导者(例如,人工操作员或外部数据库等)核对分析的结果是否令人满意和/或有用。如果是,那么监督学习成功,否则,可以进行另一个学习循环。

除了这种监督学习之外,无监督学习也由数据处理设备1以上述方式使用诸如对象、态射、交换图、函子、自然变换、拉回、推出、投影极限…之类的类别构造来开始。

除了监督学习和无监督学习阶段之外,一旦数据处理设备1已经获得一定水平的知识,新概念的创建(即,思考)就可以使用随机信号RANDOM输入来完成,如上面所描述的。一旦检查出新概念有意义和/或有用(即,逻辑上正确和/或对数据分析有用),这个新概念就可以被用于监督和无监督学习进程,使得可以在学习(无监督和/或有监督)与思考之间存在循环(可以在数据处理设备1的整个操作期间使用)。

图17示出了一个实施例,其中至少一些计算模块7具有垂直分层组织,例如具有六层I-VI。箭头示出信息的流。

层I被配置为处理从共享存储器4获得的特定于模块的键控数据片段。这个层可以准备数据以更好地适合由至少一个神经元网络71处理,例如,通过拓扑下变换。这个数据可以包括例如用于层II和III中的神经元网络71的目标向量。

层II和III可以包括至少一个神经元网络71,每个神经元网络处理从层I和可能从其它计算模块7获得的数据。这些是机器学习可以发生以在数据分析期间使用众所周知的神经元网络(诸如通用ANN或更特定的ANN,如MfNN、LSTM等)以认知方式处理数据(在此,突触权重w在训练期间被修改以学习图片、词...)的层。在一些实施例中,这些层还可以从至少一个其它计算模块7接收信息,例如,从至少一个其它计算模块7的层V或VI接收信息。在一些实施例中,层III包含至少一个接收随机信号RANDOM的神经元网络71,如上所述。

层IV可以包括至少一个神经元网络71,但是,其不用于认知数据处理而是变换用于层II和III的数据,例如,通过拓扑下变换。这个数据可以包括例如用于层II和III中的神经元网络71的输入向量。

在层V和VI中可以存在神经元网络71,其可以被用于学习数据表示的信息是否更适合在不同的计算模块7中处理并且可以被用于相应地将这个数据发送到数据中枢进程6和/或共享存储器4和/或路由进程28和/或直接发送到另一个计算模块7,在那里这个数据可以被输入,例如,在层II或III中。

图18示出了使用类别构造“拉回”来定义用于数据处理设备1控制图7中所示的机器人20采取动作的概念的示例(分类对象A是C→D←B的拉回,即,C×

分类对象X表示“a geometrical object that has a discernable geo-metricshape in the form of a box is to be grabbed by the robot”(“具有盒子形式的可辨别形状的几何对象将被机器人抓取”)。

分类对象A表示“a geometrical object which is to be grabbed by therobot”(“将被机器人抓取的几何对象”)。

分类对象B表示“a discernable shape in the form of a box”(“盒子形式的可辨别形状”)。

分类对象C表示“a geometrical object with a discernible shape”(“具有可辨别形状的几何对象”)。

分类对象D表示“a discernible shape”(“可辨别形状”)。

函子φ

函子φ

函子φ

函子φ

函子ψ

函子ψ

函子ψ

由分类对象A,B,C,D形成的图是可交换的,用箭头

图19示出了涉及无监督学习以通过使用分类结构来学习新概念的示例。

举例来说,图19a示出了交换图(如

图19b的示例示出了使用拉回的类别构造(如由

在范畴论中已知可以通过加入表示它们的交换图来添加拉回。

假定在图19c的示例中,

图20a示出了一个示例,该示例涉及以图像中对象的形式对数据类型的组合进行分析,这些对象设有以自然语言给出的特定于图像的描述。另一个示例将是设有音频的图像。另一个涉及相同数据类型的示例将是图像的组合。图20的描绘涉及信息观点。两个纤维化类别,具有基础类别

图20b示出了一个示例,其中重要的是一个且同一个描述必须特定于不同的图像。对于人类来说,直觉上清楚的是,例如,坐在树上、从树上跳下并进入房屋的猫始终是同一个生物。对于用于在计算模块7中认知分析信息的神经元网络71,这本身并不清楚,必须以受监督的方式进行教导。一旦数据处理设备1学习到移动的猫仍然是同一个对象,它就可以以无监督的方式(不需要随机信号,仅使用可交换性)学习相同的描述要与两个不同的图像相关联,其中一个图像示出房子里的猫,而另一个图像示出树上的同一只猫。这通过让“catin house”(“猫在房子里”)和“cat in tree”(“猫在树中”)这两个类别指向相同的基础类别

图21以组合的信息观点和物理观点示出了投影极限

图22a示出了输入有随机信号RANDOM的投影极限

随机信号RANDOM由随机信号发生器27输入,并且被用于生成测试数据形式的新概念。当然,不可能确切地表示像

以这种方式,可以进行无监督学习,在一些实施例中甚至无需检查外部参考,诸如人类操作者或外部数据库。例如,可以使用其它计算模块7(E

图23和图24示出了如下示例:数据处理设备1可以如何不通过提供用于时间和/或空间的坐标系而是通过编码非交换态射或函子中的时间和空间关系来构造时间上的朝向感。

在图23中,以示例的方式示出了在不同时间跨度期间发生的三个事件E

而且,如果数据处理设备1已经被训练识别“will”和“tomorrow”暗示现在和未来,那么如“I will go to school tomorrow”的时间句子可以使用图23中所示的概念来分析。这种时间排序可以由经由它们的基础连接的类别来表示,如上所述。

在图24中,描绘了示出地面的图像,在该地面上有房屋,该房屋具有由屋顶覆盖的单层和漂浮在房屋一侧的气球。数据处理设备1分析图像并提取不同的对象,即,“ground”(“地面”)、“level of house”(“房屋级别”)、“roof”(“屋顶”)和“balloon”(“气球”)。这些对象之间的空间关系由类别A

在这个示例中,可以看到基础类别也可以是纤维化类别,其本身具有基础类别(I

图25a示出了例如是topos的类别

图25b示出了一个示例,其中这个概念可以被用于定义某个几何对象(此处为立方体或盒子)是否属于多面体的子类别(其形成所有几何形状的子类别,如通过球的存在象征的)。为了以分类方式对这一事实进行编码,使用子对象分类器Ω(此处为双元素集)以及从终端对象1(此处为集合类别中的单例集)到Ω的态射t:1→Ω。立方体或盒子由char(f)发送到元素1(或“真”),而球被发送到元素0(或“假”)。

附图标记列表

1数据处理设备

2第一接口

3第二接口

4共享存储器设备

5计算设备

6数据中枢进程

61 分段子进程

62 键控子进程

7计算模块

71 神经元网络

8视频捕获设备

9输送带

10 层Ⅰ

11 层Ⅱ

12 层Ⅲ

13 层IV

14 层V15 层VI

16 计算组

17 四面体

18 八面体

19 盒子

20 机器人

21 人工神经元

22 积分函数

23 激活函数

24 人工神经元的突触

25 人工神经元的轴突的分支

26 权重存储装置

27 随机信号发生器

28 路由进程

29 用于随机信号的受体

ID 输入数据

OD 输出数据

K

S

KS

L

RANDOM 随机信号

投影极限

归纳极限

Ω 子对象分类器

全称量词

存在量词

拉回/>

交换图/>

技术分类

06120115927974