连续时间尖峰神经网络基于事件的模拟的制作方法

文档序号:6534145阅读:236来源:国知局
连续时间尖峰神经网络基于事件的模拟的制作方法
【专利摘要】本公开的某些方面提供了用于连续时间神经网络基于事件的模拟的方法和装置,该连续时间神经网络基于事件的模拟包括具有用于提供更快的事件分拣的有序和无序调度以及加速器的多维多调度体系结构;以及将建模事件操作规划为预测(未来)和进展(更新/向前跳转/跟进)规则或方法以提供连续时间神经网络模型。以此方式,优点包括对尖峰神经网络的更快模拟(多个量级);以及一种用于对连续时间神经元、突触和一般神经网络行为进行描述和建模的方法。
【专利说明】连续时间尖峰神经网络基于事件的模拟

【背景技术】
[0001] 领域
[0002] 本公开的某些方面一般涉及神经网络,尤其涉及连续时间神经网络基于事件的模 拟。
[0003] 背景
[0004] 人工神经网络是由一群互连的人工神经元(即神经元模型)组成的数学或计算模 型。人工神经网络可以源自于(或至少宽松地基于)生物神经网络(诸如在人脑中发现的 那些生物神经网络)的结构和/或功能。由于人工神经网络能从观察中推断出函数,因此这 样的网络在因任务或数据的复杂度使得手工设计该函数不切实际的应用中是特别有用的。
[0005] -种类型的人工神经网络是尖峰神经网络,其将时间概念以及神经元和突触状态 纳入到其工作模型中,由此增加了此种类型的神经模拟中的真实性水平。尖峰神经网络基 于神经元仅当膜电位达到阈值时才激发这一概念。当神经元激发时,它生成一尖峰,该尖峰 行进至其他神经元,这些其他神经元继而基于该收到的尖峰来升高或降低其膜电位。
[0006] 概述
[0007] 本公开的某些方面一般涉及基于连续时间神经网络事件的模拟。具体而言,某些 方面包括具有有序和无序调度和加速器的多维多调度体系结构以及将建模事件操作规划 为预测(未来)和更新(向前跳转/跟进)规则或方法。由此有以下优点:对尖峰神经网 络的更快模拟(多量级);以及一种用于对连续时间神经元、突触和一般神经网络行为进行 描述和建模的方法。
[0008] 本公开的某些方面提供了一种用于神经网络的方法。该方法一般包括使用多级架 构来调度神经网络中的多个节点的多个事件以便相比于单级的有序事件列表更快地处理 事件;以及执行所调度的多个事件。
[0009] 本公开的某些方面提供了一种用于神经网络的装置。该装置一般包括处理系统, 其被配置成:使用多级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有 序事件列表更快地处理事件;以及执行所调度的多个事件。
[0010] 本公开的某些方面提供了一种用于神经网络的设备。该设备一般包括用于使用多 级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有序事件列表更快地 处理事件的装置;以及用于执行所调度的多个事件的装置。
[0011] 本公开的某些方面提供了一种用于神经网络的计算机程序产品。该计算机程序产 品一般包括具有指令的计算机可读介质,这些指令可执行以便:使用多级架构来调度神经 网络中的多个节点的多个事件以便相比于单级的有序事件列表更快地处理事件;以及执行 所调度的多个事件。
[0012] 本公开的某些方面提供了一种用于神经网络的方法。该方法一般包括在神经网络 中的第一节点处接收第一输入事件,基于接收到的第一输入事件来使该第一节点的状态进 展,以及基于该第一节点的进展后状态来确定该第一节点的第一输出事件(在发生过的情 况下)预期在何时发生。
[0013] 本公开的某些方面提供了一种用于神经网络的装置。该装置一般包括处理系统, 其被配置成在神经网络中的第一节点处接收第一输入事件,基于接收到的第一输入事件来 使该第一节点的状态进展,以及基于该第一节点的进展后状态来确定该第一节点的第一输 出事件(在发生过的情况下)预期在何时发生。
[0014] 本公开的某些方面提供了一种用于神经网络的设备。该设备一般包括用于在神经 网络中的第一节点处接收第一输入事件的装置,用于基于接收到的第一输入事件来使该第 一节点的状态进展的装置,以及用于基于该第一节点的进展后状态来确定该第一节点的第 一输出事件(在发生过的情况下)预期在何时发生的装置。
[0015] 本公开的某些方面提供了一种用于神经网络的计算机程序产品。该计算机程序产 品一般包括具有指令的计算机可读介质,这些指令可执行以便:在神经网络中的第一节点 处接收第一输入事件,基于接收到的第一输入事件来使该第一节点的状态进展,以及基于 该第一节点的进展后状态来确定该第一节点的第一输出事件(在发生过的情况下)预期在 何时发生。
[0016] 本公开的某些方面提供了一种用于神经网络的方法。该方法一般包括生成引用神 经网络中的多个节点的事件列表的向量,其中该列表按时间从最早事件到最晚事件排序; 以及在不遍历该列表的情况下使用该向量来在该列表中查找最接近目标的一个或多个事 件。
[0017] 本公开的某些方面提供了一种用于神经网络的装置。该装置一般包括处理系统, 其被配置成生成引用神经网络中的多个节点的事件列表的向量,其中该列表按时间从最早 事件到最晚事件排序;以及在不遍历该列表的情况下使用该向量来在该列表中查找最接近 目标的一个或多个事件。
[0018] 本公开的某些方面提供了一种用于神经网络的设备。该设备一般包括用于生成引 用神经网络中的多个节点的事件列表的向量的装置,其中该列表按时间从最早事件到最晚 事件排序;以及用于在不遍历该列表的情况下使用该向量来在该列表中查找最接近目标的 一个或多个事件的装置。
[0019] 本公开的某些方面提供了一种用于神经网络的计算机程序产品。该计算机程序产 品一般包括具有指令的计算机可读介质,这些指令可执行以便:生成引用神经网络中的多 个节点的事件列表的向量,其中该列表按时间从最早事件到最晚事件排序;以及在不遍历 该列表的情况下使用该向量来在该列表中查找最接近目标的一个或多个事件。
[0020] 附图简述
[0021] 为了能详细理解本公开的以上陈述的特征所用的方式,可参照各方面来对以上简 要概述的内容进行更具体的描述,其中一些方面在附图中解说。然而应该注意,附图仅解说 了本公开的某些典型方面,故不应被认为限定其范围,因为本描述可允许有其他等同有效 的方面。
[0022] 图1解说根据本公开的某些方面的示例神经元网络。
[0023] 图2解说根据本公开的某些方面的离散时间和连续时间神经网络模拟之间关于 状态更新、事件处理和事件排序的比较。
[0024] 图3解说了根据本公开的某些方面的三个神经网络节点的事件的示例调度。
[0025] 图4解说根据本公开的某些方面的突触后神经元的示例输入事件和输出事件。
[0026] 图5解说了根据本公开的某些方面的单个节点的预测一进展循环。
[0027] 图6解说根据本公开的某些方面的突触和神经元的预测一进展循环之间的示例 关系。
[0028] 图7解说根据本公开的某些方面的用于允许设计者描述每一个节点的行为的与 每一个节点相关联的预测和进展规则。
[0029] 图8是解说根据本公开的某些方面的用于神经网络的示例完整事件处理的流程 图。
[0030] 图9解说根据本公开的某些方面的节点,这些节点被组织成单元以使得单元间延 迟相比于单元内延迟是显著的。
[0031] 图10解说根据本公开的某些方面的在多级架构中的不同级使用的各种事件调度 方法。
[0032] 图11解说根据本公开的某些方面的使用图10的多级架构来查找示例节点。
[0033] 图12解说根据本公开的某些方面的使用图10的多级架构来查找最早事件。
[0034] 图13解说根据本公开的某些方面的使用图10的多级架构来删除示例经处理事 件。
[0035] 图14解说根据本公开的某些方面的使用图10的多级架构来插入或删除示例非引 导事件。
[0036] 图15-17解说根据本公开的某些方面的使用图10的多级架构来删除示例引导事 件。
[0037] 图18解说根据本公开的某些方面的使用图10的多级架构来插入示例首引导事 件。
[0038] 图19解说根据本公开的某些方面的引用链表调度的示例调度向量。
[0039] 图20解说根据本公开的某些方面的在一个节点的引导事件改变后的图19的调度 向量。
[0040] 图21解说根据本公开的某些方面的示例稀疏调度向量。
[0041] 图22概念性地解说根据本公开的某些方面的突触前神经元和突触后神经元之间 的突触延迟。
[0042] 图23解说根据本公开的某些方面的突触前神经元的输出事件和突触后神经元的 对应输入事件之间的先前居间事件如何可以在虚拟调度的突触后神经元输入事件后发生。
[0043] 图24是根据本公开的某些方面的在没有失效的情况下对突触进行建模和在有突 触失效的情况下对突触进行建模之间的比较。
[0044] 图25解说了根据本公开的某些方面的包括神经元、突触和连接器模型的示例神 经网络模型。
[0045] 图26是根据本公开的某些方面的用于神经网络中的基于事件的调度的示例操作 的流程图。
[0046] 图26A解说能够执行图26中示出的各操作的示例装置。
[0047] 图27是根据本公开的某些方面的用于神经网络中的连续时间的、基于事件的建 模的示例操作的流程图。
[0048] 图27A解说能够执行图27中示出的各操作的示例装置。
[0049] 图28是根据本公开的某些方面的用于使用向量来在事件列表中查找一个或多个 事件的示例操作的流程图。
[0050] 图28A解说能够执行图28中示出的各操作的示例装置。
[0051] 详细描述
[0052] 以下参照附图更全面地描述本公开的各个方面。然而,本公开可用许多不同形式 来实施并且不应解释为被限定于本公开通篇给出的任何具体结构或功能。相反,提供这些 方面是为了使得本公开将是透彻和完整的,并且其将向本领域技术人员完全传达本公开的 范围。基于本文中的教导,本领域技术人员应领会,本公开的范围旨在覆盖本文中所披露的 本公开的任何方面,不论其是与本公开的任何其他方面相独立地还是组合地实现的。例如, 可以使用本文所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在 覆盖使用作为本文中所阐述的本公开的各种方面的补充或者另外的其他结构、功能性、或 者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面 可由权利要求的一个或多个元素来实施。
[0053] 措辞"示例性"在本文中用于表示"用作示例、实例或解说"。本文中描述为"示例 性"的任何方面不必被解释为优于或胜过其他方面。
[0054] 尽管本文描述了特定方面,但这些方面的众多变体和置换落在本公开的范围之 内。虽然提到了优选方面的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、 用途或目标。相反,本公开的各方面旨在能宽泛地应用于不同的技术、系统配置、网络和协 议,其中一些作为示例在附图以及以下对优选方面的描述中解说。该详细描述和附图仅仅 解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
[0055] 示例神经系统
[0056] 图1解说根据本公开的某些方面的具有多级神经元的示例神经系统100。神经系 统100可包括神经元级102,该级神经元102通过突触连接网络104连接到另一级神经元 106。为简单起见,图1中仅解说了两级神经元,但在典型的神经系统中可存在更少或更多 级神经元。
[0057] 如图1所解说的,级102中的每一神经元可接收输入信号108,输入信号108可以 是由前一级(图1中未示出)的多个神经元所生成的。信号108可表示级102的神经元的 输入(例如,输入电流)。此类输入可在神经元膜上累积以对膜电位进行充电。当膜电位达 到其阈值时,该神经元可激发并生成输出尖峰,该输出尖峰将被传递到下一级神经元(例 如,级106)。
[0058] 尖峰从一级神经元向另一级神经元的传递可通过突触连接(或简称"突触")网络 104来达成,如图1所解说的。
[0059] 突触104可从级102的神经元(相对于突触104而言的突触前神经元)接收输出 信号(即尖峰)。对于某些方面,这些信号可根据可调整的突触权重wp+1)_w|'/+1)(其 中P是级102和106的神经元之间的突触连接的总数)来缩放。对于其它方面,突触104 可以不应用任何突触权重。此外,(经缩放)信号可被组合以作为级106中每个神经元(相 对于突触104而言的突触后神经元)的输入信号。级106中的每个神经元可基于对应的组 合输入信号来生成输出尖峰110。随后可使用另一突触连接网络(图1中未示出)将这些 输出尖峰110传递到另一级神经元。
[0060] 神经系统100可以软件或以硬件(例如通过电路)来仿真并且可以用在大范围的 应用中,诸如图像和模式识别、机器学习、电机控制等等。神经系统100中的每个神经元(或 神经元模型)都可以被实现为神经元电路。被充电至发起输出尖峰的阈值的神经元膜可被 实现为例如对流经其的电流进行积分的电容器。
[0061] 示例连续时间尖峰神经网络基于事件的模拟
[0062] 神经网络的基于事件的模拟由于复杂性已经是有问题的。主要问题是按序执行事 件。当神经网络节点(例如,突触和/或神经元)的数量较多且共同待决(所调度)事件 的数量较多时,对调度进行分拣变成在计算上繁重的主要任务。而且,传统/常规神经元/ 突触模型不可适用于基于事件的模拟并且通常涉及迭代(其限制速度和稳定性)或表查找 (其限制精确性和准确性)以计算出稳定的解。结果,基于事件的规划通常比基于步长的 模拟慢多个量级。本公开的某些方面提供了克服上述两个问题的连续时间神经网络事件模 拟(模型)的规划:(1)具有有序和无序调度以及加速器的多维多调度体系结构克服分拣 问题;以及(2)将建模事件操作规划为预测(未来)和进展(向前跳转/跟进)规则或方 法克服了连续时间建模问题。优点包括对尖峰神经网络的更快模拟(多个量级地更快); 以及一种用于对连续时间神经元、突触和一般神经网络行为进行描述和建模的方法。
[0063] 神经网络的常规模拟按时间步长操作,每一步进展固定时间量。状态更新(即,对 神经网络节点的状态的更新)通常在向下一步长传播输出之前批量完成。由差分方程描述 的神经元模型通过众多方法(诸如Euler方法)来评估。对此的问题是这些模型经常由于 对包括确切时间步长的参数的敏感性而不稳定。此外,结果只在模拟器的时间分辨率(即, 时间步长)处可用。这意味着能够传达的信息量是有限的。例如,如果尖峰的时间被限于 Ims的分辨率,则最大通信速率是lkbps。这还使得不可能在两个尖峰出现在同一时间步长 期间时确定是否是一个尖峰引发了另一个尖峰。通过某些神经元模型,甚至不可能在给定 固定时间分辨率的情况下区分不同的输入。换言之,输出是相同的,而不管输入的定时是否 不同。此外,各模型经常在较小的时间步长处迭代以限制(并非必需避免)不稳定性。结 果,模拟通常慢许多倍地运行。
[0064] 基于事件的模拟已被提议。然而,若干问题(即,建模困难和/或速度/复杂性问 题)妨碍了这些模拟获得认可。
[0065] 首先,具有丰富行为的神经元模型经常具有无法以闭合形式直接求解的差分方 程。这些模型行为在基于事件的模拟中可由迭代操作描述。这不仅有违目标,而且导致执 行缓慢。一般而言,描述模型的方式对模拟施加限制。神经元模型通常由将在给定时间步 长执行的规则来描述。如果基于事件的模拟仅仅以不同的次序执行时间步长更新,则没有 优势。因此,需要考虑和描述神经元行为的不同方式。
[0066] 第二,事件排序经常是主要瓶颈。事件排序或分拣在共同待决事件的数量较大时 变成难以应对。三个要素决定神经网络模拟的速度:状态更新、事件处理和事件排序。这些 要素在图2中的常规离散时间模拟202和连续时间模拟204之间的比较中描绘。
[0067] 在常规离散时间或步进模拟的情况下,状态更新是瓶颈(左上角的阴影框)。在基 于事件的模拟的情况下,事件排序经常是非平凡(即,不小的)网络中的瓶颈(右下角的阴 影框)。
[0068] 典型的(现有的)基于事件的模拟由于分拣事件的复杂性而是缓慢的。在调度中 插入、删除和重新调度事件变成随事件呈指数增长的问题。该问题的示例由图3的节点302 示出。例如,从节点i到节点k的连接比从节点i到节点j的连接更长,并因此事件从节点 i到达节点k比到节点j花费更多时间。结果,在发生来自节点i的输出事件之际,可以调 度以下事件:节点j的输入事件1以及节点k的输入事件2,后者较晚发生。作为接收到输 入事件1的结果,假定节点j然后产生将导致节点k的输入事件3的输出事件。该输入事 件3甚至可以在节点k的输入事件2之前发生,如果从节点j到节点k的延迟较小的话。此 夕卜,节点k(至节点j)的输出事件4可能必须重新调度,因为由于输入事件3而产生的附加 输入可能减少了节点k发放尖峰(即,生成输出事件)花费的时间量。
[0069] 这些调度操作示例突显以下事实:典型的基于事件的模拟需要繁重的调度分拣/ 排序操作。该负担随着节点和连接的数量的增加而急剧地(呈指数)增加,因为节点和连 接的数量的增加将增加事件数量。
[0070] 典型的增强尝试包括仅仅使调度的前部保持被分拣。然而,如果网络中的节点之 间的延迟变化,则事件将跨宽时间窗口混合,且该增强的益处会是有限的。另一种办法是在 某一时间余量内放松排序约束。然而,这更改了网络行为。总而言之,即使具有所提议的增 强,典型的基于事件的模拟提供了有限的改进希望。
[0071] 因此,需要用于在没有状态更新和事件排序瓶颈的情况下对神经网络(尤其针对 较大的网络)进行建模的技术和装置。
[0072] 本公开的某些方面包括调度方法、调度加速方法和建模方法。尽管这些方法是互 相关的,但它们也可独立地使用。这些调度(加速)和建模方法与事件一起工作。这并不 意味着本公开的各方面中的所有输入和输出都出现在离散时刻。例如,抑制性突触后电位 (IPSP)可具有随时间增大且随后减小的形状。然而,包括例如IPSP的每一个行为具有相关 联的事件,其具有特定时间,诸如IPSP开始或达到高峰的时间。
[0073] 共同待决事件
[0074] 本公开的各方面的中心要素是事件。每一个节点(诸如突触或神经元)可具有输 入和输出事件。在本公开中,输入和输出事件被描述为待决或经调度并且通常将被一起考 虑。然而,应理解,输入和输出事件也可分开处理(诸如对于某些方面在单独的调度中处 理)。另外,输入和输出事件可被不同地对待,如下所述。突触和神经元两者都是可具有输 入和输出事件的节点的示例。神经元的输入事件是来自突触的输出事件的结果,反之亦然。
[0075] 例如,图4解说经由三个突触404与三个单独的突触前神经元406 (神经元i、j和 k)连接的突触后神经元402 (神经元X),每一个突触前/突触后神经元连接针对一个突触 404。从突触后神经元402的角度来看,突触后神经元402可以从突触404接收一个或多个 输入事件408。输入事件408可导致突触后神经元402调度、重新调度和/或最终输出输 出事件410。在突触后神经元402生成输出事件410之前,输入事件408可被插入调度和/ 或从调度中删除,并且多个输入事件可经由同一突触404接收。
[0076] 具体而言,本公开关注于"共同待决事件"。如本文中所使用的,一事件甚至在以下 情况下是与另一事件共同待决的:调度操作必须处理确定这两个事件的次序。并非所有事 件都是共同待决事件。只有已被调度的事件可以是共同待决的。
[0077] 例如,考虑至特定神经元的两个输入事件被调度成在将来发生的情形。那两个事 件是共同待决的。如果接收神经元尚未发放尖峰,但已被调度成在将来的特定时间发放尖 峰,则输出尖峰事件也与输入共同待决。然而,如果神经元尚未发放尖峰,则一旦神经元发 放尖峰就会发生的输入事件尚未被调度并因此不是共同待决的。
[0078] 具有相同时间的事件的次序按照本公开的某些方面来确定。对于某些方面,该次 序通过事件调度插入机制来确定以使得进行最少的搜索。然而,相同时间的事件可按照例 如节点标识符、确定次序或基于对调度的影响来排序。
[0079] 用于基于事件的模拟的示例模型
[0080] 预测一讲展循环
[0081] 预测输出事件。当输出事件发生时,它们生成输入事件。输入事件然后可招致状 态进展(如本文中所使用的,术语"进展"一般指的是更新,但使用该术语而不是"更新"是 为了与离散时间系统中的基于步长的更新相区分)。状态进展可以在预期发生输出事件时 改变。该循环(被称为"预测一进展循环")在图5中针对单个节点解说并适用于所有节点 (无论突触还是神经元)。在502,事件发生(例如,在特定节点处从另一节点接收到输入事 件),这导致在504节点使该节点的状态进展。因为该节点的状态在504进展,所以该节点 的输出事件的预期时间可改变,由此该节点在506预测该预期时间。然后,或者在502该节 点根据预期时间输出输出事件、或者在502在预期时间之前接收新输入事件,且预测一进 展循环重复。
[0082] 如上所述,该循环适用于每一个节点。因此,在具有相连节点的神经网络中,来自 神经元(或突触)的输出生成对突触(或神经元)的输入,并由此链接每一个节点的循环。
[0083] 图6解说突触和神经元(突触后神经元)的预测一进展循环之间的此链接关系的 示例。在602,事件发生(例如,在突触处接收到来自突触前神经元(未示出)的输入事件, 或者输出事件发生并且从突触输出),这导致该突触在604使其自己的状态进展。因为该突 触的状态在604进展,所以该突触的输出事件的预期时间可改变,由此该突触在606预测该 预期时间。然后,或者在602该突触根据预期时间输出输出事件、或者在602在预期时间之 前接收新输入事件,且该突触的预测一进展循环重复。
[0084] 此外,一旦突触输出事件发生,在608该输出事件就被突触后神经元作为输入事 件接收,这导致该神经元在610使其自己的状态进展。因为该神经元的状态在610进展,所 以该神经元的输出事件的预期时间可改变,由此该神经元在612预测该预期时间。然后,或 者在608该神经元根据预期时间输出输出事件、或者在608在预期时间之前接收新输入事 件,且该神经元的预测一进展循环重复。
[0085] 作为另一示例,考虑以下序列:
[0086] 1.来自突触前神经元A的输出是对突触X的输入,在时间dtl之后到达。
[0087] 2.突触状态向前跳转(进展)时间量dtl (可以无操作或取决于已过去了多少时 间和最后状态)。突触状态也被调整为反映输入(可以无操作或者学习操作或者可以改变 突触的一个或多个状态变量)。
[0088] 3.突触预测在时间dt2之后将输入传递给突触后神经元B。
[0089] 4.突触输出事件在时间dt2之后发生。
[0090] 5.输出事件生成对突触后神经元B的输入事件。
[0091] 6.突触后神经元B的状态向前跳转(进展)时间量dtl+dt2。神经元B的状态被 调整为反映该输入。
[0092] 7.突触后神经元B预测在延迟dt3之后激发。
[0093] 8.突触后神经兀B在延迟dt3之后激发。
[0094] 9?输出事件生成突触Y的输入事件。
[0095] 10.突触后神经元B的状态向前跳转量dt3。
[0096] 11?依此类推。
[0097] 本公开的某些方面允许模型设计者(例如,神经元或突触模型的设计者)确定 (和/或描述)如何预测将来事件(它是否将会发生以及何时或在多少时间内发生)。模 型设计者还可确定(和/或描述)如何进展(向前跳转或跟进)给定时间量。这些是在本 公开的上下文中描述节点(例如,神经元或突触)的行为的主要元素。
[0098] 例如,图7解说根据本公开的某些方面的用于允许设计者描述每一个节点的行为 的与每一个节点相关联的预测和进展规则。在图7中,设计者可使用具有预测规则706以 及一个或多个进展规则708的神经元模型704来描述神经元702的行为。用于该神经元模 型704的预测规则706 (和/或进展规则708)可以与用于相同的神经网络或其他神经网络 中的另一神经元模型的预测规则(和/或进展规则)相同或不同。设计者还可使用具有预 测规则716以及一个或多个进展规则718的突触模型714来描述突触712。类似地,用于该 突触模型714的预测规则716 (和/或进展规则718)可以与用于相同或不同的神经网络中 的另一突触模型的预测规则(和/或进展规则)相同或不同。
[0099] 本公开的某些方面出于总体建模/模拟的目的而对这些操作进行抽象。例如,设 计者可能想要表现不同行为的各种神经元。这些区别可通过节点模型来描述,但通过模拟 来实现。该抽象将在下文中更详细地解释。
[0100] 预测将来事件
[0101] 根据本公开的某些方面,预测事件。事件预测包括确定事件预期在将来何时发生。 这不要求事件实际上发生。此外,预测事件发生的时间可以在任何时间改变,直到事件实际 上发生(即,在模拟中到达事件时间)。对于某些方面,只预测输出事件。但输入事件和输出 事件不应被混淆。一个节点的输出是对另一节点的输入。输入事件是输出事件的结果。输 入事件也被调度成在将来发生,但一旦经调度一般就不改变(被重新调度为不同的时间)。
[0102] 如何预测突触输出事件?
[0103] 突触是分别在输入和输出神经元之间、或突触前和突触后神经元之间的连接点。 通常,连接具有延迟。该延迟可能是由于信号沿突触前神经元的轴突向下传播以激活突触、 或者沿突触后神经元的树突向下传播至胞体所涉及的时间。特定抽象不是重要的。在短期 内,这些延迟可以是相对恒定的(固定或预定的)。因此,预测突触事件变成大致以下两种 情形:如果不存在输入事件(突触前尖峰),则没有预测的突触事件要中继;或者如果存在 输入事件(突触前尖峰),则突触输出事件被预测为在将来发生且具有一致的预定延迟。这 些判定是由节点模型做出的。
[0104] 注意,在该框架中,它变成针对对可变延迟建模的简单问题。生物学网络中的延迟 可能由于动态或结构改变(诸如树突结构(诸如书脊或分支)的形成或运动)或者这些结 构的形状或表面区域的物理改变而改变。这些效应可通过改变延迟来建模。
[0105] 例如,第一输入可以带第一延迟地调度。然后,该延迟可由于结构可塑性算法而改 变。第二输入然后可以带第二延迟地调度。对于相同或不同的突触后神经元,这两个输入 事件在相同的时间可以是共同待决的。
[0106] 如何预测神经元输出事件?
[0107] 神经元模型通常由涉及状态变量的动态来描述。对于某些方面,神经元输出时间 是确定性的并且可被计算为它们的状态变量的函数。换言之,神经元发放尖峰之前的剩余 时间能够在尖峰之前的一时间从状态变量值计算。然而,注意到神经元可在其发放尖峰之 前接收到更大输入是重要的。该输入可能是兴奋性的,并因此减少剩余时间。或者,该输入 可能是抑制性的,并因此增加剩余时间(可能增加至无穷,这意味着神经元根本未被预测 为激发)。因此,神经元的所预测的输出事件时间在状态变量的轨迹被更改时改变。因此, 本公开的某些方面包括在每一次处理神经元的事件时(重新)预测神经元输出事件。对于 其他方面,预测神经元输出事件只在已经处理该神经元的两个或更多事件之后进行,这取 决于各种条件(例如,自从第一事件以来逝去的时间)。
[0108] 俥状杰讲展(向前跳转和处理事件)
[0109] 对于本公开的某些方面,进展在处理输入事件时、处理输出事件时或两者时确定。 进展通常包括两个操作:(1)使状态向前跳转以及(2)处理事件。向前跳转(或跟进,这取 决于视角)包括使状态进展至要处理事件的时间。处理事件包括根据事件来改变状态。例 如,如果事件是对神经元的输入,则可应用输入电流来计算新的膜电位(电压)。如果事件 是来自神经元的输出,则状态可进展至(改变为)返回到静息状态(例如,静息电位)。
[0110] 注意,一般而言,如果两个或更多个事件具有相同的时间,则状态通常只需在处理 第一事件之前进展。在考虑输入之前,某些模型甚至可以不涉及状态进展(这两个操作的 次序可能并不是严格要求的)。
[0111] 输Hi事件算法
[0112] 对于某些方面,每一个神经元在给定时间都只使一个输出事件被调度。对于某些 方面,输出事件始终被调度(或即使未被插入调度中,也至少始终被限定或跟踪)。此外,输 出事件的时间可以改变(例如,可以进展,这然后可以有效地包括重新调度)。这与输入事 件形成对比,对于输入事件,一旦被调度,时间一般不改变并且对于同一连接(从特定节点 到另一特定节点的连接)可能有多个输入事件待决。
[0113] 作为示例,输出事件可以如下处理(其中发出输出事件的神经元是突触前神经 元):
[0114] 1.对于连接到突触前神经元的输出的每一个突触:
[0115] a.预测突触输出事件:
[0116] i.是否将存在事件;以及
[0117] ii.事件将在何时发生(即,在多少相对时间内)。
[0118] b.如果将不存在突触输出事件,则
[0119] i?使突触模型进展(向前跳转并处理输入,例如学习)
[0120] c.否则,如果将存在事件,但发生的相对时间为0或更少,则
[0121] i.使突触模型进展(向前跳转并处理输入,例如学习);
[0122] ii.使突触后神经元模型进展(向前跳转并处理来自突触的输入);以及
[0123] iii.预测下一突触后神经元事件。
[0124] 1.如果存在所预测的输出事件,则重新调度该事件。
[0125] 2.否则,针对无限延迟移除该事件、或者重新调度该事件。
[0126] d.否则
[0127] i.提交新输入事件以供突触后神经元以所确定的延迟(从上述(a)确定)发生。
[0128] 2.对于作为输入连接到突触前神经元的每一个突触:
[0129] a.使突触模型进展(向前跳转并处理输入,例如学习)
[0130] 3.使突触前神经元的状态进展(向前跳转并处理该事件)。
[0131] 4.预测下一突触前神经元事件。
[0132] a.如果存在所预测的输出事件,则重新调度该事件。
[0133] b.否则,针对无限延迟移除该事件、或者重新调度该事件。
[0134] 注意,在神经元和神经元的模型之间(也在突触和突触的模型之间)存在差别。 模型是模型设计者(模拟器用户)针对其定义行为(经由例如预测和进展规则)的模型。 神经元(或突触)是具有相关联的事件的模拟实体。虽然本公开可以(在节点及其模型之 间)互换地使用这些术语,但从上下文中应当清楚意指节点还是节点的模型。
[0135] 还注意,如果突触具有零延迟,则无需调度输入事件。而是突触后神经元可以立即 处理该事件。当涉及零突触延迟时,这在下文中在题为"模型操作(预测和进展)执行策 略"的章节中进一步描述。
[0136] 输入事件算法
[0137] 输入事件可以如下处理(其中接收突触输入的神经元被称为突触后神经元):
[0138] 1.使突触进展(向前跳转并处理输入,例如学习)
[0139] 2.使突触后神经元模型进展。
[0140] 3.预测下一突触后神经元事件。
[0141] a.如果存在所预测的输出事件,则重新调度该事件。
[0142] b.否则,针对无限延迟移除该事件、或者重新调度该事件。
[0143] 注意,在模拟中,突触输入事件和突触输出事件无需被调度。这些事件可被(虚拟 地)立即处置。突触输入事件由神经元输出事件生成(它们出于模拟的目的而可被认为是 相同的)。突触输出事件生成神经元输入事件(同样它们出于模拟的目的而可被认为是相 同的)。
[0144] 示例完整事件处理
[0145] 图8示出整个事件处理,作为整体包括对用于进展的模型规则(具有水平和垂直 线的网格阴影)、用于预测的规则(具有对角线的交叉阴影)以及用于网络的规则(蜂巢阴 影)的调用。
[0146] 里元
[0147] 根据某些方面,节点(例如,神经元)可被组织成各个单元。对于某些方面,单元 可取决于连接延迟来组织。例如,如图9所示,节点可被分组成各单元900,以使得各单元之 间的连接的延迟(单元间延迟902)比单元内的延迟(单元内延迟904)更长,但也可考虑 相反的情况。
[0148] 一般而言,单元大小最有可能被保持相对较小。此中缘由将从调度操作中变得显 而易见。对于某些方面,单元大小可被限于最大值,且神经网络模型可被自动划分成不超过 该最大值的单元。
[0149] 对于某些方面,网络模型设计者也可具有用于指定哪些神经元属于一单元和/或 何时将神经元分配给不同的(新)单元的选项。由于模型设计者可能知晓关于事件分布的 先验信息(由于连通性、活动和延迟),因此这允许出于软件或硬件中的执行速度的目的来 策略性地将神经元指派或分配给各单元。
[0150] 调度
[0151] 本公开的某些方面包括在发生事件之际执行预测和进展操作。为了确定处理事件 的次序,某些方面在不同级使用若干调度方法。图10解说根据本公开的某些方面的在多级 架构1000的不同级使用的各种事件调度方法。实现无需使用所有这些方法,但某些方面可 包括所有这些方法。
[0152] 级 0
[0153] 在多级架构1000的最低级(级0),可维护节点类。这些节点1002可被索引并直 接访问(即,可直接索引的节点)。每一个节点1002可表示神经网络中的神经元或突触。
[0154] 最低级处的加速可通过建模以及以下单独描述的模型操作(预测和进展)执行策 略来实现。
[0155] 级 1
[0156] 在下一级(级1),每一个节点类都具有包含节点1002 (仅仅该节点)的所有共同 待决输入和输出事件的调度。每一个节点1002的成员节点调度是可以按分拣次序维护或 者可以部分地按分拣次序维护(例如,至少时间上最早的事件1006被首先列出)的列表 1004(例如,链表)。对于某些方面,可能只存在一个输出事件(最多)。最早事件1006被 称为"引导"事件。
[0157] 该级处的用于搜索插入点或删除事件(列表1004中的条目)的加速可通过从列 表1004的如部、列表1004的后部和最后插入点(或者在时间上最接近、或者最快地或最接 近地向期望时间点收敛的无论哪个点)开始并行搜索来实现。
[0158] 级 2
[0159] 在下一级(级2),神经元的每一单元900可具有引导事件的调度1008 (在级2a)。 该调度1008只包括来自级1的引导事件(S卩,单元900中的每一个神经元的最早事件),并 且对于某些方面这些引导事件调度可以用经分拣的链表实现。如果每一个单元的神经元的 数量是固定的,则调度1008中的条目数量是固定的。注意,神经元最少将输出事件被调度 为在将来的无限时间(即,永远不会)发生。
[0160] 该级处的用于搜索插入点或删除事件(调度1008中的条目)的加速可通过从调 度1008的前部、调度1008的后部和最后插入点(或者在时间上最接近、或者最快地或最接 近地向期望时间点收敛的无论哪个点)开始并行搜索来实现。
[0161] 然而,该级处的更大加速可使用一个或多个参考向量(例如,实际向量1012和虚 拟向量1014)来实现。每一个单元900还可具有对应的未被分拣的向量(在级2b)。每一 个向量可包含对对应调度1008的引用。向量条目可用于按时间快速搜索调度1008。根据 某些方面,向量条目可取决于各种条件来在进行中重建。该级2加速方法被称为"有条件地 重新生成稀疏调度"并且在下文中单独描述。
[0162] 级 3
[0163] 在下一级(级3),单元900可根据该单元级处的首引导事件来组织。这是每一个 单元900中的最早引导事件。一个示例是使用如图10所解说的二叉树1010。
[0164] 该级处的操作也可被加速。该组织无需被完全分拣(或甚至部分分拣),只要最早 的首引导事件可被直接找到。另一加速方法涉及确定单元大小。通过减小单元大小,较低 级处的操作复杂性可以组织单元的成本为代价而降低。随着节点数的增加,单元大小可被 增大以抵消级3处维护操作的折衷。
[0165] 调度橾作
[0166] 查找节点
[0167] 节点的调度(例如,列表1004)可通过在最低级(级0)寻址节点1002来查找。图 11解说通过在1102使用图10的多级架构1000来直接寻址节点1002来查找节点1002的 示例列表1004。
[0168] 查找最早事件
[0169] 最早事件(即,下一事件)可通过从上到下地遍历多级架构1000的各级来查找, 如图12所示。从级3处的二叉树1010的根,可通过在遍历二叉树1010时保持在左侧、确 定单个单元900的引导事件调度1008中的首引导事件并且确定与首引导事件相关联的节 点1002的列表1004中的最早事件1006,来在1202查找下一事件。查找下一事件涉及非常 少的计算,因为每一级处的最早事件已经被确定。注意,确定下一事件是什么可以立即通过 检查二叉树1010的根来找到。
[0170] 删除经处理事件
[0171] 一旦事件已被处理,该事件就可通过从最低级(级0)处的节点的调度中移除来删 除。在图13中,已经移除先前是图12中的1202处的下一事件的交叉阴影事件。结果,节 点调度中的引导事件改变(即,1202处的交叉阴影事件已经从列表1004中移除以使得存在 新的引导事件(未在图13中加阴影))。在该示例中,不同节点1002的引导事件(S卩,负 斜率对角线阴影事件)是单元级处(级2a处)和甚至整个网络级(级3)处的下一最早事 件,并因此变成下一事件。该更新在经处理事件被删除后传播通过多级架构1000的各级, 从而产生图13所示的描绘。
[0172] 插入或删除非引导事件
[0173] 然而,有时事件在它不是下一事件时被插入或删除(例如,以便被重新调度)。结 果,可牵涉较少改变,如图14所示。在图14中,事件1402被插入第二单元900中的特定节 点1002的列表1004。由于所插入的事件1402不是该节点1002的最早事件1006(引导事 件),因此由于所插入的事件1402而产生的对多级架构1000中的其他各级中的任一级的更 新无需在此时进行。
[0174] 删除引导事件
[0175] 删除引导事件是更复杂的。从图15中的情形开始展示,并删除第一单元900的第 二节点中的引导事件1502。
[0176] 首先,引导事件1502被从该特定节点的调度(节点1002的列表1004)中删除。如 果被删除的事件尚未成为引导事件,则这将会是操作结束。由于被删除的事件曾经是引导 事件,因此最有可能在该级和下一级(即,级1和2)执行更新。
[0177] 为了更新该级,用新引导事件1504来替换被删除的引导事件1502,如图16所示。 由于该引导事件1504是不同的,因此下一级处的调度1008也可以在此时进行分拣,如图17 所示。此外,由于也存在过来自向量1012的对调度条目1702的引用,因此该向量条目被无 效(该引用被移除,从而有效地将引用移位到相对于调度1008的右侧)。这可以使得使用 向量1012来在调度1008中查找条目的有效性稍有退化(至少直到该向量被重新生成,如 下所述)。
[0178] 由于引导事件未变成为单元900的首引导事件,因此无需为此操作更新单元级组 织(在级3)。
[0179] 插入首引导事件
[0180] 在所插入的事件变成单元900的新的首引导事件的情形中,单元级组织(在级3) 可被更新。例如,图18解说使用图10的多级架构1000来插入示例首引导事件,这导致重 新组织二叉树1010的右部。
[0181] 在图18中,为特定节点1002调度新事件1802。由于该事件1802是该节点1002 的最早事件1006,因此列表1004被重新分拣以使得所插入的事件1802是新的最早事件。 因为该节点的引导事件现在由于所插入的事件1802而不同,所以包含该节点的单元900的 调度1008也被重新分拣。因为新事件1802比另一节点的最早事件1804(先前曾是该单元 900的首引导事件)更早发生,所以调度1008被重新分拣以使得条目1806(其对应于新事 件1802)变成条目1808(其对应于先前的首引导事件(事件1804))之前的新的首引导事 件。这些向量条目可以移位以匹配调度1008的分拣。
[0182] 此外,因为新事件1802是该单元的首引导事件且比二叉树1010的该分支中的另 一单元的首引导事件(其对应于条目1810)更早发生,所以该二叉树的右部被重新分拣。这 通过以下操作来实现:如1812所示地交换分支(如已经在图18中完成的,从图10更新) 并将二叉树1010的元素1814改为对应于条目1806(表示这两个单元之间的最早首引导事 件),而不是对应于条目1810。
[0183] 分拣/部分分拣/仅最早跟踪/不分拣
[0184] 如上所述,不同级处的调度无需保持被分拣。一个或多个调度可保持部分被分拣 或不被分拣。部分分拣包括使调度的最早部分保持被分拣,或者在时间余量内保持事件被 分拣直到事件接近发生。在使用未被分拣的向量时,后一操作在级2处是优选的,因为向量 随时间降级。调度中的分拣时间余量的量可维持与向量引用的降级量相当。
[0185] 有备件地重新牛成稀疏调度(非分拣)
[0186] 调度涉及插入和删除事件以及重新调度事件(删除并然后重新插入)。这些任务 需要确定插入或删除点。在后一种情形中,要删除的项的位置最有可能被找到。在前一种 情形中,插入点最有可能被找到。该点对应于该项的正确位置以使得调度被分拣(在插入 之前和之后以及在删除之前)。
[0187] 链表对于容易地插入和删除事件而言是方便的。然而,通过常规手段在链表中搜 索插入或删除点通常涉及从头开始并向前移动通过每一项直到找到期望点。这可能会非常 非常缓慢。
[0188] 本公开的一方面包括从前部、后部和最后插入点并行搜索。然而,在具有稀疏调度 向量的情况下,甚至可以进一步减少搜索时间。
[0189] 稀疏调度向量利用以下事实:单元中的神经元的链表是固定长度的(但对于本公 开的某些方面这并非是严格要求的)。向量包含直接对链表条目的引用(在软件中这可以 是C++迭代器或指针)。向量可被初始化以使得该向量中的第i个条目引用链表中的第i 个条目。该引用情形在图19中通过箭头来描绘,其中顶行是调度1008 (例如,链表调度) 的表不,而各底行表不向量。在底部存在表不向量的两行:一行表不实际向量1012,一行表 示虚拟向量1014。然而,此时将这两个底行被认为是相同的。差别将在以下进一步解释。
[0190] 对调度1008中的条目的搜索涉及以下内容。调度1008中的条目对应于单元中的 每一个神经元的引导事件。条目可根据其发生时间来排序(例如,首先最早)。由于引导事 件针对特定神经元,因此条目基本上是神经元(或属于神经元的事件)。对于删除,搜索针 对特定神经元。由于神经元是已知的,因此该神经元的引导事件的时间是已知的。对于引 导事件(即,神经元)的插入,搜索针对具有横跨要插入的引导事件的时间的引导事件时间 的两个神经元之间的点(即,t < t2,其中tl和t2是两个横跨神经元的引导事件时 间,且t是要插入的新引导事件的时间)。注意,如果插入点在开头,则tl = 0,而如果插入 点在末尾,则t2 =°°。
[0191] 为了加速对调度中的神经元(引导事件)的搜索,可使用稀疏向量。由于神经元 的引导事件的时间是已知的,因此可使用该向量的散列或快速搜索(例如,经索引的二元 搜索)来直接查找具有给定时间的向量条目,而根本不必遍历链表。
[0192] 为了搜索神经元(引导事件)在调度中的插入点,也可使用稀疏向量。由于引导 事件的时间是已知的,因此搜索针对具有该时间的条目或者具有横跨该时间的时间的各条 目。同样,可使用向量的散列或快速搜索来直接查找横跨条目,而根本不必遍历链表。快速 搜索可包括通过从向量中的事件的时间的变化率外推或内插位置来计算将在向量中何处 找到具有特定时间的条目的近似。第一步可涉及从向量开头开始并查看前两个条目。如果 前两个条目之间的时间差是2ms,则可假定为了查找时间IOms处的条目,应进一步向前查 看5个条目。因此,可以直接跳转到该条目。如果所到达的条目不是期望条目(即,具有不 同时间),则可执行第二步。第二步涉及查看期望时间方向上的第五个条目和下一个条目 (即,第四或第六个条目)之间的变化率(时间差)。该时间差然后可被用来外推要跳转到 的下一个位置。
[0193] 在找到具有期望时间的条目或找到两个横跨条目后,可使用指针来移至链表。注 意,不一定只使用两个相邻条目来估计跨向量的时间进度。例如,可使用多个条目,可使用 非相邻条目,可跟踪和使用平均速率,或者可基于找到曾搜索过的先前条目的结果反过来 确定速率。可如下使用相隔M个条目的具有时间tl和t2的任何两个条目1和2来确定速 率(r) :r = (t2-tl)/M。到具有时间t的条目的期望跳转然后可被确定为从条目1起的N 个向量条目,其中N = r(t-tl)。
[0194] 然而,由于条目被插入或删除且调度改变,因此加速变得复杂得多。鉴于此,向量 也改变。考虑一个神经元的引导事件改变的情形(或者因为该事件已被处理、重新调度、已 经为该神经元调度更早的事件等)。在这种情形中,调度可被重新排列,因为该神经元的新 引导事件可具有不同的发生时间(例如,更早或更晚)。
[0195] 在图19和20的示例中,图19的旧引导事件1602被图20中的相同神经元的新引 导事件1704替换,但该新引导事件1704具有比被替换的事件1602更晚的时间。旧引导事 件1602已经从调度1008中删除,并且新引导事件1704已经在稍后被插入调度1008中。 鉴于此,向量引用不再与如图20所示的链表条目(也通过箭头示出)完全对应。实际向量 1012具有现在相对于调度1008向右移位(中间部分)的引用。而且,指向被删除的旧引导 事件1602的条目最有可能可被改正(因此它不指向非现有条目)。对于某些方面,这是设 置对链表中的在先或在后条目的引用(对在先条目的引用在图20中示出)的问题。无论 如何,结果是所得虚拟向量1014具有比先前少一个的条目。
[0196] 随着引导事件改变,向量变得越来越稀疏。稀疏向量的含义是什么?注意,调度 1008中的新引导事件1704的条目不具有来自该向量的直接引用。基于向量的搜索或散列 能够最接近期望条目的地方是任一侧的最接近的所引用的条目。这意味着基于向量的搜索 或散列可以靠近该条目,但也可牵涉对链表调度(尽管较短)的最终搜索。在某一时刻后, 向量可以是相当稀疏的,如图21的示例所示,并因此提供有限的搜索帮助。
[0197] 一般而言,插入/删除涉及在调度中查找一个或多个条目,这包括两个任务:(1) 使用向量来快速查找链表中的最接近的一个或多个条目;以及(2)使用链表来定位条目 (在第一步中找到的最接近的一个或多个条目附近)。第一步在必须搜索链表的情况下一 般快得多,即使向量是稀疏的。然而,由于向量变得非常稀疏,因此加速可能是有限的。
[0198] 本公开的某些方面进一步包括有条件地重新生成向量(完整地恢复向量)。例如, 当向量达到特定稀疏性水平时。然而,根据某些方面,向量取决于插入/删除搜索的第二部 分(即,链表中的搜索)的成本来重新生成。或者,向量可取决于链表中所牵涉的附加搜索 (即,在使用向量来查找条目附近后的搜索)的数量、频率或概率来重新生成。
[0199] 此外,对于某些方面,加速可以是自适应的。根据某些方面,用于重建向量的阈值 (无论是搜索次数、稀疏性还是任何其它合适的准则)可以在进行中用模拟或网络行为调 整,诸如共同待决事件率或复杂性。对于某些方面,使用以下更抽象的自适应:
[0200] 1.使用重新生成的第一(引用)条件。
[0201] 2?测量运行时性能
[0202] 3?使用重新生成的(不同的)第二条件。
[0203] 4?测量运行时性能。
[0204] 5.将第一(引用)条件下的性能与(不同的)第二条件下的性能进行比较。
[0205] 6.将引用条件设为曾具有最佳性能的条件。
[0206] 对于某些方面,条件是测量超过标量阈值。第一条件因此将会是一个阈值,而第二 条件将会是不同的阈值。该自适应算法的变体包括方向改变。例如,如果性能随着阈值的 减小而提高,则可尝试进一步减小,反之亦然。
[0207] 合适测量的示例包括删除次数、链表搜索次数、链表中搜索的距离等。这些数量还 可被表达为相对于(或以其他方式取决于)单元内(调度内)的条目或神经元的数量的比 值。
[0208] 樽型橾作(预测和讲展)执行策略
[0209] 本章节描述了根据本公开的某些方面的执行策略。一般而言,用于自先前时间以 来预测新事件和更新(向前跳转)的模型操作根据上述算法来执行。然而,多个优化或增 强是可能的。
[0210] 虚拟延迟突触
[0211] 图22概念性地解说根据本公开的某些方面的突触前神经元406和突触后神经元 402之间的突触延迟2202。首先考虑突触延迟2202为零的情形。在这种情形中,考虑上述 算法,对突触后神经元402的输入事件的调度可被完全绕过。算法可直接跳转至更新突触 后神经元402以及预测下一事件(对于突触亦如此)。
[0212] 但如果突触具有非零延迟的话会如何?考虑一些情形。首先,如果延迟2202较 小,则本公开的某些方面可忽略该延迟并就像延迟为零那样继续。事件可具有定时误差,但 该误差可以是"可准许的"。第二,考虑是否存在取决延迟幅度或连接的过往历史或突触后 神经元状态来忽略延迟的可能性。这些和其他变体是可能的。第三,考虑突触延迟2202是 否被忽略(被假定为零),但该延迟在突触后神经元模型进展后得到补偿。该第三种情形是 重要的。
[0213] 如何能够假定在突触后神经元模型进展中补偿零突触延迟?
[0214] 模拟器能够诱使模型进展到考虑该进展是针对比实际时间晚的时间。该时间差是 突触延迟。该诱使允许模型设计者们为他们的模型设计花费并返回时间的预测和进展规则 (例如,所预测的延迟通过向前跳转给定时间量来发放尖峰或传播至胞体或进展模型状态 等)。然而,模拟执行进展,不是针对突触前神经元输出事件时间(当前模拟时间),而是针 对等于当前时间加上突触延迟的将来时间。现在,有可能下一模拟事件发生在该将来时间 之前且随后各事件将无序地执行。然而,这是可容忍的。如果事件不是互相关的,则没有差 另IJ。如果事件仅仅对接收神经元具有极小影响,则差别可以是极小的;小量级的定时差别的 重要性可忽略。虚拟调度的示例(将突触延迟视作为零以避免调度,但通过诱使模型来进 行补偿)在图23中示出。在技术上,居间事件可发生在虚拟调度的事件之后而不是之前是 可能的。然而,该居间事件可针对另一神经元或以其他方式对总体结果不具有影响,或者该 影响可被认为是"可准许的"。
[0215] 图23解说正常调度的操作2300和虚拟调度的操作2310之间的比较。在正常调 度的操作2300中,突触前神经元输出事件2302可以在t发生,而突触后神经元输入事件 2304可以在t+At发生,这是由于突触延迟2306 (At)的原因。在突触延迟2306期间,居 间事件2308可发生。在虚拟调度的操作2310中,虚拟调度的突触后神经元输入事件2312 可以在t被评估,但就像时间是t+At那样被更新。由此,居间事件2308可以在虚拟调度 的突触后神经元输入事件2312之后发生,即使在正常调度的操作2300中会在突触后神经 元输入事件2304之前发生。
[0216] 现在,还考虑特殊情形。如果对于同一神经元存在居间事件,则针对该事件的模型 进展相对于上一进展可具有负时间差。为了解决该问题,模型进展可以或者能够使模型状 态在时间上后退(而不是向前跳转,即向后跳转)或者该差异可忽略(例如被假定为逝去 零时间)。后一种方法可以在为了调度的被视为零的最大突触延迟是有限的时候采用。
[0217] 某些方面的另一变体包括假定所有突触延迟都为零的选项。
[0218] 进展时滞
[0219] 补偿突触延迟的另一种方式是使得模型进展存储将来事件(输入)以使得下一 (或某一稍后)事件发生时多个输入可被一起处理。益处是避免调度。然而,该替换方案可 暗示模型设计明确地处置该时滞,而上述方法并非如此。
[0220] 细微的变动是使得各事件排队以便对它们进行批量更新和处置。这样做的原因将 会在下文中解释。
[0221] 预测时滞
[0222] 考虑神经元在发放尖峰之前接收到多个输入的情形。在上述事件算法中,对将来 神经元事件的模型预测是在模型进展之后执行的。这是因为每一个输入都能够改变所预测 的输出时间。这对于所有神经元模型而言一般为真。对于某些简单的神经元模型,假定输入 可以不改变所预测的输出时间。例如,泄漏积分激发(LIF)神经元可接收多个输入,并且如 果所有输入都低于激发阈值,则所预测的输出时间(永远,即无穷)不改变。然而,作为一 个示例,在Izhikevich的简单模型中,神经元在电压超过阈值后以某一延迟发放尖峰。而 且,直到尖峰的时延取决于输入的量以及它何时出现。因此,神经元电压超过阈值后且在它 发放尖峰之前的每一个输入更改所预测的尖峰(输出)时间。
[0223] 如在上述事件算法中提及的,对将来神经元事件的模型预测是在每一模型进展之 后执行的。本公开的某些方面可包括可任选的预测时滞特征。根据该特征,模型进展被执 行,但模型预测步骤被延迟。根据一变体,预测步骤只在某些条件下被延迟。此外,如果第 二或后续模型进展在针对第一模型进展(针对同一神经元)的预测步骤之前发生,则只可 执行一个预测步骤。这以可能较晚的事件预测为代价节省了模型计算。进一步增强涉及使 进展步骤排队并在延迟的预测时间批量执行这些步骤。
[0224] 延迟的预测判定何时发生?
[0225] 为了确定输出事件时间,模拟必须执行模型预测规则。预测基于神经元(或突触, 视情况而定)的当前状态来做出。因此,如果多个模型进展在预测之前发生,则预测最有可 能基于最后一个进展的最终状态来执行。因此,预测时滞特征选项暗示模型规则与该方面 一致。
[0226] 突触失效和学习
[0227] 本公开的某些方面包括为突触失效做准备,突触失效对应于突触输入事件导致突 触输出事件(神经元输入事件)的失效。根据某些方面,该特征是对预测方法的对应判定。 例如,突触预测规则一般确定突触在将来何时(相对于当前时间)将输出事件。然而,该判 定还可确定将永远不会存在对应于输入的输出。
[0228] 对突触失效(诸如基于各条件、各因素或各参数的概率性失效或确定性失效)的 判定的细节在本公开的范围之外。然而,存在涉及突触失效和学习的本公开的附加重要方 面。为了理解这些方面,考虑"尖峰定时依赖可塑性(STDP) "。一种实现STDP的方式是触 发基于突触后事件的长期增强(LTP)以及基于突触前事件的长期抑压(LTD)。LTP和LTD 两者都取决于突触前和突触后尖峰之间的时间差。然而,如果发生突触失效且不存在突触 后事件,则可能不存在对LTP的触发并因此可消除LTP。或者最后的突触后时间戳对于LTD 可能是不正确的,并因此LTD效应可能是不正确的。突触后时间戳问题可通过在神经元模 型中而不是在突触模型中跟踪时间戳、并且或者从确定STDP的突触规则中访问时间戳或 者从神经元模型中确定STDP来避免。
[0229] 根据本公开的某些方面,某些其他选项是可用的。首先,如果预测规则确定将不 会发生输出事件,则模拟可执行突触进展规则事件。在替换方案中,可执行特殊进展规则。 为了避免为该特殊目的调度另一事件,特殊进展规则(或假象规则)可以就像当前时间是 (失效的)输出事件时间那样执行,或者(失效的)输出事件的时间可被传递至进展规则。 后一种针对(失效的)输出事件的对突触进展规则的执行不应与针对输入事件(突触前神 经元输出)的对突触进展规则的执行相混淆。
[0230] 图24是根据本公开的某些方面的用于在没有失效的情况下对突触进行建模的操 作2400与在有突触失效的情况下对突触进行建模的操作2420之间的比较。在操作2400 中,在2402针对输入事件使突触的状态进展之后,在2404突触可预测输出事件的预期时 间,即使预测规则确定将不会发生输出事件(即,没有突触失效)。在2406突触延迟可以在 突触输出输出事件之前发生并且在2408响应于输出事件而使突触的状态进展。在2410,给 定在2408确定的进展后状态,突触可再次预测输出事件的预期时间。
[0231] 作为对比,在操作2420中在2402针对输入事件使突触的状态进展之后,在2422 突触可以在具有突触失效特征的情况下预测输出事件的预期时间。在这种情形中,如果预 测规则确定将不会发生输出事件,则可以在2424执行假象规则。
[0232] 为何想要从失效的突触事件中学习的模型?
[0233] 在对突触失效进行建模与出于在计算上有利的目的确定突触失效之间存在差异。 在前一种情形中,可能不想基于所建模的突触失效来学习(就像突触输入不具有生物学效 应那样)。在后一种情形中,突触可能已经在生物学中成功,但可被激励跳过与事件相关联 的事件调度和处理以节省计算复杂性。例如,如果相同的高水平网络结果能够在具有概率 性突触失效的情况下实现,则可被激励将其用作加速模拟的方式。
[0234] 人工事件(将来)
[0235] 本公开的某些方面提供了用于以最小间隔使节点进展的特征。这样做确保基于事 件的模型以最小间隔更新,即使不存在事件。
[0236] 该特征可使用各种合适的方法中的任一种来实现。例如在第一种方法中,可以在 每一输入或输出事件后以特定延迟(重新)调度人工事件。如果另一输入或输出事件更早 地发生,则重新调度人工事件。否则,人工事件被处理(即,突触或神经元节点进展)并在 稍后时间被重新调度。通过使用第二种实现技术,人工事件可以周期性地发生。在第三种 方法中,当第二节点具有事件时,可以为第一节点触发人工事件。这一被称为"代理事件技 巧"的情况甚至在第一和第二节点未连接的情况下也可发生。
[0237] 示例事件定时和分辨率
[0238] 本公开的某些方面允许在没有(或可忽略的)附加成本的情况下的任意精细定时 分辨率。然而,这并不意味着基于步长的模拟在其可以同样精细的定时分辨率操作的情况 下将必然实现相同的功能结果。存在有两个原因。第一,根据本公开的某些方面的模型动 态在事件时间确定,而不是通过步长更新来确定。第二,在相同的时间不处理由相同的处理 线程处置的事件。在基于步长的模拟中,通常所有更新在所得事件的批量传播之前被批量 处理。对于某些方面,如果进展导致一事件,则这一事件被立即调度。因此,事件的执行次 序也是潜在不同的。对于其他方面,这可改变以使得在同一时间发生的事件按照例如神经 元或突触索引来排序。
[0239] 示例方法和操作
[0240] 根据本公开的某些方面,神经元和突触模型704、714也可分别具有共享的神经元 参数模型2506和共享的突触参数模型2504,如图25所解说的。这些参数模型2504、2506 可包括两种数据(常量和变量)以及方法(规则)。这些参数模型可用于定义取决于能够 在一组(层或常见类型的)神经元或突触当中共享的参数的方法。本公开的某些方面还包 括网络模型(或简称"模型")2500并且可包括连接器模型2502 (确定如何将神经元与突触 连接)。模型也可从彼此导出(继承)。
[0241] 图26是根据本公开的某些方面的用于在尖峰神经网络中进行基于事件的调度的 示例操作2600的流程图。操作2600可以硬件(例如由一个或多个处理单元)、以软件或以 固件来执行。
[0242] 操作2600可以通过在2602调度神经网络中的多个节点的多个事件来开始。该调 度可使用多级架构来执行以便与单级的有序事件列表相比更快地处理事件。对于某些方 面,多个节点可包括多个神经元或多个突触中的至少一个。在2604,可执行所调度的多个事 件。
[0243] 对于某些方面,执行所调度的多个事件包括查找所调度的多个事件中的下一事 件;基于该下一事件来使与该下一事件相关联的节点状态进展,其中该节点是该多个节点 之一;以及基于进展后节点状态来确定该节点的输出事件(在发生过的情况下)被预测在 何时发生。对于某些方面,操作2600还可包括基于该确定来重新调度该节点的输出事件。 该重新调度涉及使用多级架构(即,多级处理八重新)调度架构)。
[0244] 对于某些方面,在2604执行所调度的多个事件包括查找所调度的多个事件中的 下一事件。查找下一事件可包括遍历多级架构中的各级以便确定每一级处的最早事件以及 在遍历各级后确定下一事件为所有事件中的最早事件。
[0245] 根据某些方面,多级架构的第一级包括多个节点的可索引列表。对于多个节点中 的每一个节点,多级架构中的第二级可包括该节点的共同待决事件的调度。对于某些方面, 操作2600还可包括通过在第一级寻址多个节点中的一个节点来确定该节点的共同待决事 件的调度。该节点的共同待决事件的调度可以至少部分地分拣,其中共同待决事件中的最 早事件被首先调度。对于某些方面,共同待决事件的调度可包括节点的最多仅一个输出事 件。
[0246] 对于某些方面,操作2600还可包括将多个节点组织成一个或多个单元。该组织可 涉及基于连接延迟来将多个节点组织成各个单元,以使得各个单元之间的第一连接延迟长 于各个单元内的第二连接延迟。
[0247] 对于某些方面,对于每一单元,多级架构中的第三级包括来自该单元中的每一个 节点的共同待决事件中的最早事件。对于某些方面,多级架构中的第四级包括基于来自每 一个单元的共同待决事件中的最早事件的组织。该组织可需要二叉树。该二叉树的根可 以是全部所调度的多个事件中的最早的共同待决事件。对于某些方面,在多级架构的第三 级中,对于每一单元,来自该单元中的每一个节点的共同待决事件中的最早事件可被组织 为链表。对于每一单元,多级架构中的第五级可包括引用链表的向量。对于某些方面,操作 2600还可包括重新调度所调度的多个事件。该重新调度可涉及使用向量来在链表中查找最 接近期望条目的一个或多个条目,以供插入所调度的多个事件或从所调度的多个事件中删 除;以及使用链表来基于所找到的最接近的一个或多个条目定位该期望条目。
[0248] 图27是根据本公开的某些方面的用于神经网络中的连续时间的、基于事件的建 模的示例操作2700的流程图。操作2700可以硬件(例如由一个或多个处理单元)、以软件 或以固件来执行。
[0249] 操作2700可以通过在2702在神经网络中的第一节点处接收第一输入事件开始。 在2704,基于来自2702的接收到的第一输入事件来使第一节点的状态进展。该第一节点的 状态可通过第一节点的膜电位和恢复电流来定义。根据某些方面,使第一节点的状态进展 包括处理接收到的第一输入事件以调整该第一节点的状态以及向前跳转至接收到的第一 输入事件的时间。
[0250] 在2706,可基于来自2704的第一节点的进展后状态来确定该第一节点的第一输 出事件(在发生过的情况下)预期在何时发生。对于某些方面,该确定在第一节点的状态 每一次进展之后执行。对于其他方面,可延迟该确定。在这种情形中,可以在第一节点处接 收第二输入事件,其中第二输入事件在第一输入事件后且在经延迟的确定之前发生。在第 一节点的状态已经基于接收到的第一输入事件进展之后、但在经延迟的确定之前,第一节 点的状态可基于接收到的第二输入事件进展。对于某些方面,基于接收到的第一和第二输 入事件来使第一节点的状态进展包括:(1)将基于接收到的第一输入事件使第一节点的状 态进展和基于接收到的第二输入事件使第一节点的状态进展排队;以及(2)在经延迟的确 定的时间执行所排队的进展。
[0251] 根据其中第一节点是突触后神经元的某些方面,在2702接收第一输入事件涉及 从第二节点接收第二输出事件。对于某些方面,第二节点是具有延迟的突触。在这种情形 中,在2704使第一节点的状态进展可包括处理接收到的第一输入事件以调整该第一节点 的状态以及向前跳转至接收到的第一输入事件的时间加上该延迟。对于其他方面,第二节 点是经由突触与突触后神经元连接的突触前神经元。在突触具有零延迟的情形中,不调度 突触的第三输出事件。在突触具有非零延迟的其他情形中,该延迟可被忽略,以使得不调度 该突触的第三输出事件,其类似于零延迟的情形。对于某些方面,突触具有第一延迟,且忽 略第一延迟的至少一部分以使得以第二延迟调度该突触的第三输出事件。作为第一示例, 这覆盖突触具有非零恒定延迟能力以使得所调度的处理被限制在该延迟的情形,或者作为 第二示例,对于当存在已经调度的其他处理且期望特定延迟时调度处理,这覆盖延迟差被 单独考虑(即,通过发生延迟差时的处理)的情形。
[0252] 对于某些方面,操作2700还可包括在状态在2704进展之前存储接收到的第一输 入事件。然后,第一节点可以在第一事件之后接收第二输入事件。在这种情形中,在2704 使状态进展可包括一起处理接收到的第一输入事件和接收到的第二输入事件。
[0253] 根据某些方面,操作2700还包括根据判定来输出来自第一节点的第一输出事件。 接着,第二节点可以接收第一输出事件作为第二输入事件,并且第二节点的状态可基于接 收到的第二输入事件来进展。然后可基于第二节点的进展后状态来确定该第二节点的第二 输出事件(在发生过的情况下)预期在何时发生。
[0254] 对于其中第一节点是突触的某些方面,判定指示第一输出事件将永远不会发生。 在这种情形中,操作2700还可包括基于将永远不会发生的第一输出事件来使突触的状态 进展。当前时间可被用作将永不发生的第一输出事件的时间。
[0255] 根据某些方面,第一输入事件包括第一节点的人工事件。对于某些方面,操作2700 还可包括将人工事件调度为周期性地发生。对于其他方面,操作2700还可包括如果在没有 第一节点的事件的情况下逝去一时间量,则调度人工事件。对于某些方面,操作2700还可 包括将人工事件调度为在每一输入或输出事件发生后的一延迟之后发生,以使得如果没有 输入或输出事件在该延迟内发生,则发生人工事件。在这种情形中,操作还可包括将另一人 工事件(重新)调度为在人工事件发生后以另一延迟发生。
[0256] 图28是根据本公开的某些方面的用于使用向量来在事件列表中查找一个或多个 事件的示例操作2800的流程图。操作2800可以硬件(例如由一个或多个处理单元)、以软 件或以固件来执行。
[0257] 操作2800可以通过在2802生成引用神经网络中的多个节点的事件列表的向量来 开始。该列表可以按时间从最早事件到最晚事件排序。对于某些方面,该列表包括多个节 点中的每一个节点的最早事件(从最早事件到最晚事件排列)。根据某些方面,向量中的第 i个条目引用列表中的第i个条目。对于某些方面,该列表包括链表,并且向量可以被实现 为具有指向链表中的条目的指针。
[0258] 在2804,可使用向量来在事件列表中查找最接近目标的一个或多个事件。该搜索 可以在不遍历事件列表的情况下进行。目标可包括例如目标时间或目标事件。对于某些方 面,使用向量可涉及执行对向量的索引二元搜索。对于其他方面,使用向量可涉及基于向量 中的时间条目来执行内插或外推。
[0259] 根据某些方面,操作2800还可包括在目标处从列表中删除事件或者在最接近目 标的一个或多个事件之间将事件插入列表。然后,向量可基于所删除或所插入的事件来更 新。对于某些方面,基于所删除的事件来更新向量包括引用列表中的在所删除的事件之前 (或之后)的条目。
[0260] 操作2800还可包括在满足阈值的情况下重新生成向量。对于某些方面,阈值可被 动态调整(即,在进行中调整)。阈值可以例如是对目标的搜索次数、对向量的更新次数、从 列表中的删除次数、在找到最接近的一个或多个事件后搜索列表的成本或者虚拟向量的稀 疏性。该虚拟向量可以反映所生成的向量(即,在初始化或重新生成后反映向量)并且可 通过移除虚拟向量中对应于从列表中删除的事件的条目来形成。
[0261] 以上所描述的方法的各种操作可由能够执行相应功能的任何合适的装置来执行。 这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路 (ASIC)、或处理器。一般而言,在存在附图中解说的操作的场合,那些操作可具有带相似编 号的相应配对装置加功能组件。例如,图26中所解说的操作2600对应于图26A中所解说 的装置2600A。
[0262] 例如,用于显示的装置可包括显示器(例如,监视器、平面屏幕、触屏等)、打印机、 或任何其他用于输出数据(诸如表格、图表或图)以供可视描绘的合适装置。用于处理的装 置、用于接收的装置、用于调度的装置、用于重新调度的装置、用于执行的装置、用于进展的 装置、用于更新的装置、用于生成的装置、用于重新生成的装置、用于查找的装置、用于调整 的装置、用于删除的装置、用于组织的装置、用于延迟的装置、用于输出的装置、用于提供的 装置或者用于确定的装置可包括处理系统,其可包括一个或多个处理器或处理单元。用于 存储的装置可包括可由处理系统访问的存储器或任何其它合适的存储设备(例如,RAM)。
[0263] 如本文所使用的,术语"确定"涵盖各种各样的动作。例如,"确定"可包括演算、 计算、处理、推导、研究、查找(例如,在表、数据库或其他数据结构中查找)、查明、及类似动 作。而且,"确定"可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似 动作。同样,"确定"还可包括解析、选择、选取、建立、及类似动作。
[0264] 如本文中所使用的,引述一列项目中的"至少一个"的短语是指这些项目的任何组 合,包括单个成员。作为示例,"a、b或c中的至少一个"旨在涵盖:a、b、c、a-b、a-c、b-c、 以及a_b_c。
[0265] 结合本公开描述的各种解说性逻辑框、模块、以及电路可用通用处理器、数字信号 处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件 (PLD)、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文中描述的功能的任 何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何可 商业购得的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合, 例如DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器或任何 其它此类配置。
[0266] 结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器 执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在本领域所知的任何形 式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(RAM)、只读存储器 (ROM)、闪存、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM,等等。软件模 块可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间 以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能从/向该存储介 质读写信息。替换地,存储介质可以被整合到处理器。
[0267] 本文所公开的方法包括用于实现所描述的方法的一个或多个步骤或动作。这些方 法步骤和/或动作可以相互互换而不会脱离权利要求的范围。换言之,除非指定了步骤或 动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要 求的范围。
[0268] 所描述的功能可在硬件、软件、固件或其任何组合中实现。如果以硬件实现,则示 例硬件配置可包括设备中的处理系统。处理系统可以用总线架构来实现。取决于处理系统 的具体应用和整体设计约束,总线可包括任何数目的互连总线和桥接器。总线可将包括处 理器、机器可读介质、以及总线接口的各种电路链接在一起。总线接口可用于尤其将网络适 配器等经由总线连接至处理系统。网络适配器可用于实现信号处理功能。对于某些方面, 用户接口(例如,按键板、显示器、鼠标、操纵杆等)也可被连接至总线。总线还可链接各种 其他电路(诸如定时源、外围设备、稳压器、电源管理电路等),这些电路在本领域中是众所 周知的,因此将不再赘述。
[0269] 处理器可负责管理总线和一般处理,包括执行存储在机器可读介质上的软件。处 理器可用一个或多个通用和/或专用处理器来实现。示例包括微处理器、微控制器、DSP处 理器、以及其他能执行软件的电路系统。软件应当被宽泛地解释成意指指令、数据、或其任 何组合,无论是被称作软件、固件、中间件、微代码、硬件描述语言、或其他。作为示例,机器 可读介质可以包括RAM (随机存取存储器)、闪存、ROM (只读存储器)、PROM (可编程只读存 储器)、EPROM (可擦式可编程只读存储器)、EEPROM (电可擦式可编程只读存储器)、寄存器、 磁盘、光盘、硬驱动器、或者任何其他合适的存储介质、或其任何组合。机器可读介质可被实 施在计算机程序产品中。该计算机程序产品可以包括包装材料。
[0270] 在硬件实现中,机器可读介质可以是处理系统中与处理器分开的一部分。然而,如 本领域技术人员将容易领会的,机器可读介质、或其任何部分可在处理系统外部。作为示 例,机器可读介质可包括传输线、由数据调制的载波、和/或与设备分开的计算机产品,所 有这些都可由处理器通过总线接口来访问。替换地或补充地,机器可读介质、或其任何部分 可被集成到处理器中,诸如高速缓存和/或通用寄存器文件可能就是这种情形。
[0271] 处理系统可以被配置为通用处理系统,该通用处理系统具有一个或多个提供处 理器功能性的微处理器、和提供机器可读介质中的至少一部分的外部存储器,它们都通过 外部总线架构与其他支持电路系统链接在一起。替换地,处理系统可以用带有集成在单 块芯片中的处理器、总线接口、用户接口、支持电路系统、和至少一部分机器可读介质的 ASIC (专用集成电路)来实现,或者用一个或多个FPGA (现场可编程门阵列)、PLD(可编程 逻辑器件)、控制器、状态机、门控逻辑、分立硬件组件、或者任何其他合适的电路系统、或者 能执行本公开通篇所描述的各种功能性的电路的任何组合来实现。取决于具体应用和加诸 于整体系统上的总设计约束,本领域技术人员将认识到如何最佳地实现关于处理系统所描 述的功能性。
[0272] 机器可读介质可包括数个软件模块。这些软件模块包括当由处理器执行时使处理 系统执行各种功能的指令。这些软件模块可包括传输模块和接收模块。每个软件模块可以 驻留在单个存储设备中或者跨多个存储设备分布。作为示例,当触发事件发生时,可以从硬 驱动器中将软件模块加载到RAM中。在软件模块执行期间,处理器可以将一些指令加载到 高速缓存中以提高访问速度。随后可将一个或多个高速缓存行加载到通用寄存器文件中以 供由处理器执行。在以下谈及软件模块的功能性时,将理解此类功能性是在处理器执行来 自该软件模块的指令时由该处理器来实现的。
[0273] 如果以软件实现,则各功能可作为一条或多条指令或代码存储在计算机可读介质 上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,这些介质包括 促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何 可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或 其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式 的期望程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读 介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或无线技术 (诸如红外(IR)、无线电、以及微波)从web网站、服务器、或其他远程源传送而来,则该同 轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外、无线电、以及微波)就被包括在介 质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、 数字多用碟(DVD)、软盘、和蓝光《碟,其中盘(disk)常常磁性地再现数据,而碟(disc)用 激光来光学地再现数据。因此,在一些方面,计算机可读介质可包括非瞬态计算机可读介质 (例如,有形介质)。另外,对于其他方面,计算机可读介质可包括瞬态计算机可读介质(例 如,信号)。上述的组合也应被包括在计算机可读介质的范围内。
[0274] 因此,某些方面可包括用于执行本文中给出的操作的计算机程序产品。例如,此种 计算机程序产品可包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由 一个或多个处理器执行以执行本文中所描述的操作。对于某些方面,计算机程序产品可包 括包装材料。
[0275] 另外,应领会,用于执行本文中所描述的方法和技术的模块和/或其它恰适装置 能由设备在适用的场合下载和/或以其他方式获得。例如,此类设备能被耦合至服务器以 促成用于执行本文中所描述的方法的装置的转移。替换地,本文中所描述的各种方法能经 由存储装置(例如,RAM、ROM、诸如压缩碟(⑶)或软盘之类的物理存储介质等)来提供,以 使得一旦将该存储装置耦合到或提供给设备,该设备就能获得各种方法。此外,能利用适于 向设备提供本文中所描述的方法和技术的任何其他合适的技术。
[0276] 应该理解的是,权利要求并不被限定于以上所解说的精确配置和组件。可在以上 所描述的方法和设备的布局、操作和细节上作出各种改动、更换和变形而不会脱离权利要 求的范围。
【权利要求】
1. 一种用于神经网络的方法,包括: 使用多级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有序事件 列表更快地处理事件;以及 执行所调度的多个事件。
2. 如权利要求1所述的方法,其特征在于,执行所调度的多个事件包括: 在所调度的多个事件中查找下一事件; 基于所述下一事件来使与所述下一事件相关联的节点的状态进展,其中该节点是所述 多个节点之一;以及 基于该节点的进展后状态来确定该节点的输出事件(在发生过的情况下)被预测在何 时发生。
3. 如权利要求2所述的方法,其特征在于,进一步包括基于所述确定来重新调度该节 点的输出事件,其中所述重新调度包括使用所述多级架构。
4. 如权利要求1所述的方法,其特征在于,执行所调度的多个事件包括在所调度的多 个事件中查找下一事件,其中查找所述下一事件包括: 遍历所述多级架构中的各级以确定所述各级中的每一级处的最早事件;以及 在遍历所述各级后将所述下一事件确定为所有事件中的最早事件。
5. 如权利要求1所述的方法,其特征在于,所述多级架构的第一级包括所述多个节点 的可索引列表。
6. 如权利要求5所述的方法,其特征在于,对于所述多个节点中的每一个节点,所述多 级架构的第二级包括该节点的共同待决事件的调度。
7. 如权利要求6所述的方法,其特征在于,进一步包括通过在所述第一级寻址所述多 个节点中的一个节点来确定该节点的共同待决事件的调度。
8. 如权利要求6所述的方法,其特征在于,该节点的共同待决事件的调度被至少部分 地分拣,其中所述共同待决事件中的最早事件被首先调度。
9. 如权利要求6所述的方法,其特征在于,所述共同待决事件的调度包括该节点的最 多仅一个输出事件。
10. 如权利要求6所述的方法,其特征在于,进一步包括将所述多个节点组织成一个或 多个单元。
11. 如权利要求10所述的方法,其特征在于,所述组织包括基于连接延迟来将所述多 个节点组织成各个单元,以使得各个单元之间的第一连接延迟长于各个单元内的第二连接 延迟。
12. 如权利要求10所述的方法,其特征在于,对于所述各个单元中的每一个单元,所述 多级架构的第三级包括来自该单元中的每一个节点的共同待决事件中的最早事件。
13. 如权利要求12所述的方法,其特征在于,所述多级架构的第四级包括基于来自所 述各个单元中的每一个单元的共同待决事件中的最早事件的组织。
14. 如权利要求13所述的方法,其特征在于,所述组织包括二叉树,并且其中所述二叉 树的根包括全部所调度的多个事件中的最早的共同待决事件。
15. 如权利要求13所述的方法,其特征在于,对于所述各个单元中的每一个单元,在所 述多级架构的第三级中,来自该单元中的每一个节点的共同待决事件中的最早事件被组织 为链表,并且其中对于所述各个单元中的每一个单元,所述多级架构的第五级包括引用所 述链表的向量。
16. 如权利要求15所述的方法,其特征在于,进一步包括重新调度所调度的多个事件, 其中所述重新调度包括: 使用所述向量来在所述链表中查找最接近期望条目的一个或多个条目,以供插入所调 度的多个事件或从所调度的多个事件中删除;以及 使用所述链表来基于所找到的最接近的一个或多个条目定位所述期望条目。
17. 如权利要求1所述的方法,其特征在于,所述多个节点包括多个神经元或多个突触 中的至少一个。
18. -种用于神经网络的装置,包括: 处理系统,其被配置成: 使用多级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有序事件 列表更快地处理事件;以及 执行所调度的多个事件。
19. 如权利要求18所述的装置,其特征在于,所述处理系统被配置成通过以下操作来 执行所调度的多个事件: 在所调度的多个事件中查找下一事件; 基于所述下一事件来使与所述下一事件相关联的节点的状态进展,其中该节点是所述 多个节点之一;以及 基于该节点的进展后状态来确定该节点的输出事件(在发生过的情况下)被预测在何 时发生。
20. 如权利要求19所述的装置,其特征在于,所述处理系统被进一步配置成基于所述 确定来重新调度该节点的输出事件,其中所述重新调度包括使用所述多级架构。
21. 如权利要求18所述的装置,其特征在于,所述处理系统被配置成通过在所调度的 多个事件中查找下一事件来执行所调度的多个事件,其中查找所述下一事件包括: 遍历所述多级架构中的各级以确定每一级处的最早事件;以及 在遍历所述各级后将所述下一事件确定为所有事件中的最早事件。
22. 如权利要求18所述的装置,其特征在于,所述多级架构的第一级包括所述多个节 点的可索引列表。
23. 如权利要求22所述的装置,其特征在于,对于所述多个节点中的每一个节点,所述 多级架构的第二级包括该节点的共同待决事件的调度。
24. 如权利要求23所述的装置,其特征在于,所述处理系统被进一步配置成通过在所 述第一级寻址所述多个节点中的一个节点来确定该节点的共同待决事件的调度。
25. 如权利要求23所述的装置,其特征在于,该节点的共同待决事件的调度被至少部 分地分拣,其中所述共同待决事件中的最早事件被首先调度。
26. 如权利要求23所述的装置,其特征在于,所述共同待决事件的调度包括该节点的 最多仅一个输出事件。
27. 如权利要求23所述的装置,其特征在于,所述处理系统被进一步配置成将所述多 个节点组织成一个或多个单元。
28. 如权利要求27所述的装置,其特征在于,所述处理系统被配置成基于连接延迟来 将所述多个节点组织成各个单元,以使得各个单元之间的第一连接延迟长于各个单元内的 第二连接延迟。
29. 如权利要求27所述的装置,其特征在于,对于所述各个单元中的每一单元,所述多 级架构的第三级包括来自该单元中的每一个节点的共同待决事件中的最早事件。
30. 如权利要求29所述的装置,其特征在于,所述多级架构的第四级包括基于来自所 述各个单元中的每一个单元的共同待决事件中的最早事件的组织。
31. 如权利要求30所述的装置,其特征在于,所述组织包括二叉树,并且其中所述二叉 树的根包括全部所调度的多个事件中的最早的共同待决事件。
32. 如权利要求30所述的装置,其特征在于,对于所述各个单元中的每一个单元,在所 述多级架构的第三级中,来自该单元中的每一个节点的共同待决事件中的最早事件被组织 为链表,并且其中对于所述各个单元中的每一个单元,所述多级架构的第五级包括引用所 述链表的向量。
33. 如权利要求32所述的装置,其特征在于,所述处理系统被进一步配置成通过以下 操作来重新调度所调度的多个事件: 使用所述向量来在所述链表中查找最接近期望条目的一个或多个条目,以供插入所调 度的多个事件或从所调度的多个事件中删除;以及 使用所述链表来基于所找到的最接近的一个或多个条目定位所述期望条目。
34. 如权利要求18所述的装置,其特征在于,所述多个节点包括多个神经元或多个突 触中的至少一个。
35. -种用于神经网络的设备,包括: 用于使用多级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有序 事件列表更快地处理事件的装置;以及 用于执行所调度的多个事件的装置。
36. 如权利要求35所述的设备,其特征在于,所述用于执行所调度的多个事件的装置 被配置成: 在所调度的多个事件中查找下一事件; 基于所述下一事件来使与所述下一事件相关联的节点的状态进展,其中该节点是所述 多个节点之一;以及 基于该节点的进展后状态来确定该节点的输出事件(在发生过的情况下)被预测在何 时发生。
37. 如权利要求36所述的设备,其特征在于,进一步包括用于基于所述确定来重新调 度该节点的输出事件的装置,其中所述用于重新调度的装置被配置成使用所述多级架构。
38. 如权利要求35所述的设备,其特征在于,所述用于执行所调度的多个事件的装置 被配置成通过以下操作来在所调度的多个事件中查找下一事件: 遍历所述多级架构中的各级以确定每一级处的最早事件;以及 在遍历所述各级后将所述下一事件确定为所有事件中的最早事件。
39. 如权利要求35所述的设备,其特征在于,所述多级架构的第一级包括所述多个节 点的可索引列表。
40. 如权利要求39所述的设备,其特征在于,对于所述多个节点中的每一个节点,所述 多级架构的第二级包括该节点的共同待决事件的调度。
41. 如权利要求40所述的设备,其特征在于,进一步包括用于通过在所述第一级寻址 所述多个节点中的一个节点来确定该节点的共同待决事件的调度的装置。
42. 如权利要求40所述的设备,其特征在于,该节点的共同待决事件的调度被至少部 分地分拣,其中所述共同待决事件中的最早事件被首先调度。
43. 如权利要求40所述的设备,其特征在于,所述共同待决事件的调度包括该节点的 最多仅一个输出事件。
44. 如权利要求40所述的设备,其特征在于,进一步包括用于将所述多个节点组织成 一个或多个单元的装置。
45. 如权利要求44所述的设备,其特征在于,所述用于组织的装置被配置成基于连接 延迟来将所述多个节点组织成各个单元,以使得各个单元之间的第一连接延迟长于各个单 元内的第二连接延迟。
46. 如权利要求44所述的设备,其特征在于,对于所述各个单元中的每一单元,所述多 级架构的第三级包括来自该单元中的每一个节点的共同待决事件中的最早事件。
47. 如权利要求46所述的设备,其特征在于,所述多级架构的第四级包括基于来自所 述各个单元中的每一个单元的共同待决事件中的最早事件的组织。
48. 如权利要求47所述的设备,其特征在于,所述组织包括二叉树,并且其中所述二叉 树的根包括全部所调度的多个事件中的最早的共同待决事件。
49. 如权利要求47所述的设备,其特征在于,对于所述各个单元中的每一个单元,在所 述多级架构的第三级中,来自该单元中的每一个节点的共同待决事件中的最早事件被组织 为链表,并且其中对于所述各个单元中的每一个单元,所述多级架构的第五级包括引用所 述链表的向量。
50. 如权利要求49所述的设备,其特征在于,进一步包括用于通过以下操作来重新调 度所调度的多个事件的装置: 使用所述向量来在所述链表中查找最接近期望条目的一个或多个条目,以供插入所调 度的多个事件或从所调度的多个事件中删除;以及 使用所述链表来基于所找到的最接近的一个或多个条目定位所述期望条目。
51. 如权利要求35所述的设备,其特征在于,所述多个节点包括多个神经元或多个突 触中的至少一个。
52. -种用于神经网络的计算机程序产品,包括包含可执行用于以下操作的指令的计 算机可读介质: 使用多级架构来调度神经网络中的多个节点的多个事件以便相比于单级的有序事件 列表更快地处理事件;以及 执行所调度的多个事件。
53. 如权利要求52所述的计算机程序产品,其特征在于,执行所调度的多个事件包括: 在所调度的多个事件中查找下一事件; 基于所述下一事件来使与所述下一事件相关联的节点的状态进展,其中该节点是所述 多个节点之一;以及 基于该节点的进展后状态来确定该节点的输出事件(在发生过的情况下)被预测在何 时发生。
54. 如权利要求53所述的计算机程序产品,其特征在于,进一步包括可执行以通过使 用所述多级架构基于所述确定来重新调度该节点的输出事件的指令。
55. 如权利要求52所述的计算机程序产品,其特征在于,执行所调度的多个事件包括 在所调度的多个事件中查找下一事件,其中查找所述下一事件包括: 遍历所述多级架构中的各级以确定每一级处的最早事件;以及 在遍历所述各级后将所述下一事件确定为所有事件中的最早事件。
56. 如权利要求52所述的计算机程序产品,其特征在于,所述多级架构的第一级包括 所述多个节点的可索引列表。
57. 如权利要求56所述的计算机程序产品,其特征在于,对于所述多个节点中的每一 个节点,所述多级架构的第二级包括该节点的共同待决事件的调度。
58. 如权利要求57所述的计算机程序产品,其特征在于,进一步包括可执行以通过在 所述第一级寻址所述多个节点中的一个节点来确定该节点的共同待决事件的调度的指令。
59. 如权利要求57所述的计算机程序产品,其特征在于,该节点的共同待决事件的调 度被至少部分地分拣,其中所述共同待决事件中的最早事件被首先调度。
60. 如权利要求57所述的计算机程序产品,其特征在于,所述共同待决事件的调度包 括该节点的最多仅一个输出事件。
61. 如权利要求57所述的计算机程序产品,其特征在于,进一步包括可执行以将所述 多个节点组织成一个或多个单元的指令。
62. 如权利要求61所述的计算机程序产品,其特征在于,所述组织包括基于连接延迟 来将所述多个节点组织成各个单元,以使得各个单元之间的第一连接延迟长于各个单元内 的第二连接延迟。
63. 如权利要求61所述的计算机程序产品,其特征在于,对于所述各个单元中的每一 单元,所述多级架构的第三级包括来自该单元中的每一个节点的共同待决事件中的最早事 件。
64. 如权利要求63所述的计算机程序产品,其特征在于,所述多级架构的第四级包括 基于来自所述各个单元中的每一个单元的共同待决事件中的最早事件的组织。
65. 如权利要求64所述的计算机程序产品,其特征在于,所述组织包括二叉树,并且其 中所述二叉树的根包括全部所调度的多个事件中的最早的共同待决事件。
66. 如权利要求64所述的计算机程序产品,其特征在于,对于所述各个单元中的每一 个单元,在所述多级架构的第三级中,来自该单元中的每一个节点的共同待决事件中的最 早事件被组织为链表,并且其中对于所述各个单元中的每一个单元,所述多级架构的第五 级包括引用所述链表的向量。
67. 如权利要求66所述的计算机程序产品,其特征在于,进一步包括可执行以通过以 下操作来重新调度所调度的多个事件的指令: 使用所述向量来在所述链表中查找最接近期望条目的一个或多个条目,以供插入所调 度的多个事件或从所调度的多个事件中删除;以及 使用所述链表来基于所找到的最接近的一个或多个条目定位所述期望条目。
68. 如权利要求52所述的计算机程序产品,其特征在于,所述多个节点包括多个神经 元或多个突触中的至少一个。
69. -种用于神经网络的方法,包括: 在神经网络中的第一节点处接收第一输入事件; 基于接收到的第一输入事件来使所述第一节点的状态进展;以及 基于所述第一节点的进展后状态来确定所述第一节点的第一输出事件(在发生过的 情况下)预期在何时发生。
70. 如权利要求69所述的方法,其特征在于,所述第一节点的状态由所述第一节点的 膜电位和恢复电流来定义。
71. 如权利要求69所述的方法,其特征在于,所述进展包括: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间。
72. 如权利要求69所述的方法,其特征在于,所述第一节点包括突触后神经元,并且其 中接收所述第一输入事件包括从第二节点接收第二输出事件。
73. 如权利要求72所述的方法,其特征在于,所述第二节点包括具有延迟的突触,并且 其中所述进展包括: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间加上所述延迟。
74. 如权利要求72所述的方法,其特征在于,所述第二节点包括经由具有非零延迟的 突触与所述突触后神经元连接的突触前神经元,并且其中所述延迟被忽略以使得不调度所 述突触的第三输出事件。
75. 如权利要求72所述的方法,其特征在于,所述第二节点包括经由具有零延迟的突 触与所述突触后神经元连接的突触前神经元,以使得不调度所述突触的第三输出事件。
76. 如权利要求72所述的方法,其特征在于,所述第二节点包括经由具有第一延迟的 突触与所述突触后神经元连接的突触前神经元,并且其中所述第一延迟的至少一部分被忽 略,以使得以第二延迟调度所述突触的第三输出事件。
77. 如权利要求69所述的方法,其特征在于,所述确定在所述第一节点的状态每一次 进展后执行。
78. 如权利要求69所述的方法,其特征在于,进一步包括延迟所述确定。
79. 如权利要求78所述的方法,其特征在于,进一步包括: 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件后 且在被延迟的确定之前发生;以及 在基于所述接收到的第一输入事件来使所述第一节点的状态进展后、但在所述被延迟 的确定之前,基于所述接收到的第二输入事件来使所述第一节点的状态进展。
80. 如权利要求79所述的方法,其特征在于,基于所述接收到的第一和第二输入事件 来使所述第一节点的状态进展包括: 将基于所述接收到的第一输入事件来使所述第一节点的状态进展和基于所述接收到 的第二输入事件来使所述第一节点的状态进展进行排队;以及 在所述被延迟确定的时间执行所排队的进展。
81. 如权利要求69所述的方法,其特征在于,进一步包括: 在所述进展之前存储所述接收到的第一输入事件;以及 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件之 后发生,其中所述进展包括一起处理所述接收到的第一输入事件和所述接收到的第二输入 事件。
82. 如权利要求69所述的方法,其特征在于,进一步包括: 根据所述确定来输出来自所述第一节点的第一输出事件; 接收所述第一输出事件作为对第二节点的第二输入事件; 基于接收到的第二输入事件来使所述第二节点的状态进展;以及 基于所述第二节点的进展后状态来确定所述第二节点的第二输出事件(在发生过的 情况下)预期在何时发生。
83. 如权利要求69所述的方法,其特征在于,所述第一节点包括突触,并且其中所述确 定指示所述第一输出事件将永不发生。
84. 如权利要求83所述的方法,其特征在于,进一步包括基于将永不发生的所述第一 输出事件来使所述突触的状态进展,其中使所述突触的状态进展包括将当前时间用作将永 不发生的所述第一输出事件的时间。
85. 如权利要求69所述的方法,其特征在于,所述第一输入事件包括所述第一节点的 人工事件。
86. 如权利要求85所述的方法,其特征在于,进一步包括将所述人工事件调度为周期 性地发生。
87. 如权利要求85所述的方法,其特征在于,进一步包括如果在没有所述第一节点的 事件的情况下已逝去一时间量,则调度所述人工事件发生。
88. 如权利要求85所述的方法,其特征在于,进一步包括将所述人工事件调度为在每 一输入或输出事件发生后的一延迟之后发生,以使得如果没有输入或输出事件在所述延迟 内发生,则发生所述人工事件。
89. 如权利要求88所述的方法,其特征在于,进一步包括将另一人工事件调度为在所 述人工事件发生后以另一延迟发生。
90. -种用于神经网络的装置,包括: 处理系统,其被配置成: 在神经网络中的第一节点处接收第一输入事件; 基于接收到的第一输入事件来使所述第一节点的状态进展;以及 基于所述第一节点的进展后状态来确定所述第一节点的第一输出事件(在发生过的 情况下)预期在何时发生。
91. 如权利要求90所述的装置,其特征在于,所述第一节点的状态由所述第一节点的 膜电位和恢复电流来定义。
92. 如权利要求90所述的装置,其特征在于,所述处理系统被配置成通过以下操作来 使所述第一节点的状态进展: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间。
93. 如权利要求90所述的装置,其特征在于,所述第一节点包括突触后神经元,并且其 中所述处理系统被配置成通过从第二节点接收第二输出事件来接收所述第一输入事件。
94. 如权利要求93所述的方法,其特征在于,所述第二节点包括具有延迟的突触,并且 其中所述处理系统被配置成通过以下操作来使所述第一节点的状态进展: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间加上所述延迟。
95. 如权利要求93所述的装置,其特征在于,所述第二节点包括经由具有非零延迟的 突触与所述突触后神经元连接的突触前神经元,并且其中所述延迟被忽略以使得不调度所 述突触的第三输出事件。
96. 如权利要求93所述的装置,其特征在于,所述第二节点包括经由具有零延迟的突 触与所述突触后神经元连接的突触前神经元,以使得不调度所述突触的第三输出事件。
97. 如权利要求93所述的装置,其特征在于,所述第二节点包括经由具有第一延迟的 突触与所述突触后神经元连接的突触前神经元,并且其中所述第一延迟的至少一部分被忽 略以使得以第二延迟调度所述突触的第三输出事件。
98. 如权利要求90所述的装置,其特征在于,所述确定在所述第一节点的状态每一次 进展后执行。
99. 如权利要求90所述的装置,其特征在于,进一步包括延迟所述确定。
100. 如权利要求99所述的装置,其特征在于,所述处理系统被进一步配置成: 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件后 且在被延迟的确定之前发生;以及 在基于所述接收到的第一输入事件来使所述第一节点的状态进展后、但在所述被延迟 的确定之前,基于所述接收到的第二输入事件来使所述第一节点的状态进展。
101. 如权利要求100所述的装置,其特征在于,所述处理系统被配置成通过以下操作 来基于所述接收到的第一和第二输入事件使所述第一节点的状态进展: 将基于所述接收到的第一输入事件来使所述第一节点的状态进展和基于所述接收到 的第二输入事件来使所述第一节点的状态进展进行排队;以及 在所述被延迟确定的时间执行所排队的进展。
102. 如权利要求90所述的装置,其特征在于,所述处理系统被进一步配置成: 在所述进展之前存储所述接收到的第一输入事件;以及 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件之 后发生,其中所述处理系统被配置成通过一起处理所述接收到的第一输入事件和所述接收 到的第二输入事件来使所述第一节点的状态进展。
103. 如权利要求90所述的装置,其特征在于,所述处理系统被进一步配置成: 根据所述确定来输出来自所述第一节点的第一输出事件; 接收所述第一输出事件作为对第二节点的第二输入事件; 基于接收到的第二输入事件来使所述第二节点的状态进展;以及 基于所述第二节点的进展后状态来确定所述第二节点的第二输出事件(在发生过的 情况下)预期在何时发生。
104. 如权利要求90所述的装置,其特征在于,所述第一节点包括突触,并且其中所述 确定指示所述第一输出事件将永不发生。
105. 如权利要求104所述的装置,其特征在于,所述处理系统被进一步配置成基于将 永不发生的所述第一输出事件来使所述突触的状态进展,其中所述处理系统被配置成通过 将当前时间用作将永不发生的所述第一输出事件的时间来使所述突触的状态进展。
106. 如权利要求90所述的装置,其特征在于,所述第一输入事件包括所述第一节点的 人工事件。
107. 如权利要求106所述的装置,其特征在于,所述处理系统被进一步配置成将所述 人工事件调度为周期性地发生。
108. 如权利要求106所述的装置,其特征在于,所述处理系统被进一步配置成如果在 没有所述第一节点的事件的情况下已逝去一时间量,则调度所述人工事件发生。
109. 如权利要求106所述的装置,其特征在于,所述处理系统被进一步配置成将所述 人工事件调度为在每一输入或输出事件发生后的一延迟之后发生,以使得如果没有输入或 输出事件在所述延迟内发生,则发生所述人工事件。
110. 如权利要求109所述的装置,其特征在于,所述处理系统被进一步配置成将另一 人工事件调度为在所述人工事件发生后以另一延迟发生。
111. 一种用于神经网络的设备,包括: 用于在神经网络中的第一节点处接收第一输入事件的装置; 用于基于接收到的第一输入事件来使所述第一节点的状态进展的装置;以及 用于基于所述第一节点的进展后状态来确定所述第一节点的第一输出事件(在发生 过的情况下)预期在何时发生的装置。
112. 如权利要求111所述的设备,其特征在于,所述第一节点的状态由所述第一节点 的膜电位和恢复电流来定义。
113. 如权利要求111所述的设备,其特征在于,所述用于进展的装置被配置成: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间。
114. 如权利要求111所述的设备,其特征在于,所述第一节点包括突触后神经元,并且 其中所述用于接收所述第一输入事件的装置被配置成从第二节点接收第二输出事件。
115. 如权利要求114所述的设备,其特征在于,所述第二节点包括具有延迟的突触,并 且其中所述用于进展的装置被配置成: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间加上所述延迟。
116. 如权利要求114所述的设备,其特征在于,所述第二节点包括经由具有非零延迟 的突触与所述突触后神经元连接的突触前神经元,并且其中所述延迟被忽略以使得不调度 所述突触的第三输出事件。
117. 如权利要求114所述的设备,其特征在于,所述第二节点包括经由具有零延迟的 突触与所述突触后神经元连接的突触前神经元,以使得不调度所述突触的第三输出事件。
118. 如权利要求114所述的设备,其特征在于,所述第二节点包括经由具有第一延迟 的突触与所述突触后神经元连接的突触前神经元,并且其中所述第一延迟的至少一部分被 忽略以使得以第二延迟调度所述突触的第三输出事件。
119. 如权利要求111所述的设备,其特征在于,所述确定在所述第一节点的状态每一 次进展后执行。
120. 如权利要求111所述的设备,其特征在于,进一步包括用于延迟所述确定的装置。
121. 如权利要求120所述的设备,其特征在于,进一步包括: 用于在所述第一节点处接收第二输入事件的装置,其中所述第二输入事件在所述第一 输入事件后且在被延迟的确定之前发生;以及 用于在基于所述接收到的第一输入事件来使所述第一节点的状态进展后、但在所述被 延迟的确定之前,基于所述接收到的第二输入事件来使所述第一节点的状态进展的装置。
122. 如权利要求121所述的设备,其特征在于,所述用于基于所述接收到的第一和第 二输入事件来使所述第一节点的状态进展的装置被配置成: 将基于所述接收到的第一输入事件来使所述第一节点的状态进展和基于所述接收到 的第二输入事件来使所述第一节点的状态进展进行排队;以及 在所述被延迟确定的时间执行所排队的进展。
123. 如权利要求111所述的设备,其特征在于,进一步包括: 用于在所述进展之前存储所述接收到的第一输入事件的装置;以及 用于在所述第一节点处接收第二输入事件的装置,其中所述第二输入事件在所述第一 输入事件之后发生,其中所述用于进展的装置被配置成一起处理所述接收到的第一输入事 件和所述接收到的第二输入事件。
124. 如权利要求111所述的设备,其特征在于,进一步包括: 用于根据所述确定来输出来自所述第一节点的第一输出事件的装置; 用于接收所述第一输出事件作为对第二节点的第二输入事件的装置; 用于基于接收到的第二输入事件来使所述第二节点的状态进展的装置;以及 用于基于所述第二节点的进展后状态来确定所述第二节点的第二输出事件(在发生 过的情况下)预期在何时发生的装置。
125. 如权利要求111所述的设备,其特征在于,所述第一节点包括突触,并且其中所述 确定指示所述第一输出事件将永不发生。
126. 如权利要求125所述的设备,其特征在于,进一步包括用于基于将永不发生的所 述第一输出事件来使所述突触的状态进展的装置,其中所述用于使所述突触的状态进展的 装置被配置成将当前时间用作将永不发生的所述第一输出事件的时间。
127. 如权利要求111所述的设备,其特征在于,所述第一输入事件包括所述第一节点 的人工事件。
128. 如权利要求127所述的设备,其特征在于,进一步包括用于将所述人工事件调度 为周期性地发生的装置。
129. 如权利要求127所述的设备,其特征在于,进一步包括用于如果在没有所述第一 节点的事件的情况下已逝去一时间量,则调度所述人工事件发生的装置。
130. 如权利要求127所述的设备,其特征在于,进一步包括用于将所述人工事件调度 为在每一输入或输出事件发生后的一延迟之后发生,以使得如果没有输入或输出事件在所 述延迟内发生,则发生所述人工事件的装置。
131. 如权利要求130所述的设备,其特征在于,所述用于调度的装置被配置成将另一 人工事件调度为在所述人工事件发生后以另一延迟发生。
132. -种用于神经网络的计算机程序产品,包括包含可执行用于以下操作的指令的计 算机可读介质: 在神经网络中的第一节点处接收第一输入事件; 基于接收到的第一输入事件来使所述第一节点的状态进展;以及 基于所述第一节点的进展后状态来确定所述第一节点的第一输出事件(在发生过的 情况下)预期在何时发生。
133. 如权利要求132所述的计算机程序产品,其特征在于,所述第一节点的状态由所 述第一节点的膜电位和恢复电流来定义。
134. 如权利要求132所述的计算机程序产品,其特征在于,所述进展包括: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间。
135. 如权利要求132所述的计算机程序产品,其特征在于,所述第一节点包括突触后 神经元,并且其中接收所述第一输入事件包括从第二节点接收第二输出事件。
136. 如权利要求135所述的计算机程序产品,其特征在于,所述第二节点包括具有延 迟的突触,并且其中所述进展包括: 处理所述接收到的第一输入事件以调整所述第一节点的状态;以及 向前跳转到所述接收到的第一输入事件的时间加上所述延迟。
137. 如权利要求135所述的计算机程序产品,其特征在于,所述第二节点包括经由具 有非零延迟的突触与所述突触后神经元连接的突触前神经元,并且其中所述延迟被忽略以 使得不调度所述突触的第三输出事件。
138. 如权利要求135所述的计算机程序产品,其特征在于,所述第二节点包括经由具 有零延迟的突触与所述突触后神经元连接的突触前神经元,以使得不调度所述突触的第三 输出事件。
139. 如权利要求135所述的计算机程序产品,其特征在于,所述第二节点包括经由具 有第一延迟的突触与所述突触后神经元连接的突触前神经元,并且其中所述第一延迟的至 少一部分被忽略以使得以第二延迟调度所述突触的第三输出事件。
140. 如权利要求132所述的计算机程序产品,其特征在于,所述确定在所述第一节点 的状态每一次进展后执行。
141. 如权利要求132所述的计算机程序产品,其特征在于,进一步包括可执行以延迟 所述确定的指令。
142. 如权利要求141所述的计算机程序产品,其特征在于,进一步包括可执行用于以 下操作的指令: 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件后 且在被延迟的确定之前发生;以及 在基于所述接收到的第一输入事件来使所述第一节点的状态进展后,但在所述被延迟 的确定之前,基于所述接收到的第二输入事件来使所述第一节点的状态进展。
143. 如权利要求142所述的计算机程序产品,其特征在于,基于所述接收到的第一和 第二输入事件来使所述第一节点的状态进展包括: 将基于所述接收到的第一输入事件来使所述第一节点的状态进展和基于所述接收到 的第二输入事件来使所述第一节点的状态进展进行排队;以及 在所述被延迟确定的时间执行所排队的进展。
144. 如权利要求132所述的计算机程序产品,其特征在于,进一步包括可执行以用于 以下操作的指令: 在所述进展之前存储所述接收到的第一输入事件;以及 在所述第一节点处接收第二输入事件,其中所述第二输入事件在所述第一输入事件之 后发生,其中所述进展包括一起处理所述接收到的第一输入事件和所述接收到的第二输入 事件。
145. 如权利要求132所述的计算机程序产品,其特征在于,进一步包括可执行以用于 以下操作的指令: 根据所述确定来输出来自所述第一节点的第一输出事件; 接收所述第一输出事件作为对第二节点的第二输入事件; 基于接收到的第二输入事件来使所述第二节点的状态进展;以及 基于所述第二节点的进展后状态来确定所述第二节点的第二输出事件(在发生过的 情况下)预期在何时发生。
146. 如权利要求132所述的计算机程序产品,其特征在于,所述第一节点包括突触,并 且其中所述确定指示所述第一输出事件将永不发生。
147. 如权利要求146所述的计算机程序产品,其特征在于,进一步包括可执行以基于 将永不发生的所述第一输出事件来使所述突触的状态进展的指令,其中使所述突触的状态 进展包括将当前时间用作将永不发生的所述第一输出事件的时间。
148. 如权利要求132所述的计算机程序产品,其特征在于,所述第一输入事件包括所 述第一节点的人工事件。
149. 如权利要求148所述的计算机程序产品,其特征在于,进一步包括可执行以将所 述人工事件调度为周期性地发生的指令。
150. 如权利要求148所述的计算机程序产品,其特征在于,进一步包括可执行以用于 以下操作的指令:如果在没有所述第一节点的事件的情况下已逝去一时间量,则调度所述 人工事件发生。
151. 如权利要求148所述的计算机程序产品,其特征在于,进一步包括可执行以用于 以下操作的指令:将所述人工事件调度为在每一输入或输出事件发生后的一延迟之后发 生,以使得如果没有输入或输出事件在所述延迟内发生,则发生所述人工事件。
152. 如权利要求151所述的计算机程序产品,其特征在于,进一步包括可执行以将另 一人工事件调度为在所述人工事件发生后以另一延迟发生的指令。
153. -种用于神经网络的方法,包括: 生成引用神经网络中的多个节点的事件列表的向量,其中所述列表按时间从最早事件 到最晚事件排序;以及 在不遍历所述列表的情况下使用所述向量来在所述列表中查找最接近目标的一个或 多个事件。
154. 如权利要求153所述的方法,其特征在于,所述列表包括所述多个节点中的每一 个节点的最早事件(从最早事件到最晚事件排列)。
155. 如权利要求153所述的方法,其特征在于,所述向量中的第i个条目引用所述列表 中的第i个条目。
156. 如权利要求153所述的方法,其特征在于,所述列表包括链表,并且其中所述向量 实现为具有指向所述链表的条目的指针。
157. 如权利要求153所述的方法,其特征在于,使用所述向量包括执行对所述向量的 索引二元搜索。
158. 如权利要求153所述的方法,其特征在于,使用所述向量包括基于所述向量中的 时间条目来执行内插或外推。
159. 如权利要求153所述的方法,其特征在于,进一步包括: 在所述目标处从所述列表中删除事件或者在最接近所述目标的一个或多个事件之间 将事件插入所述列表;以及 基于所删除或插入的事件来更新所述向量。
160. 如权利要求159所述的方法,其特征在于,基于所删除的事件来更新所述向量包 括引用所述列表中的在所删除的事件之前或之后的条目。
161. 如权利要求160所述的方法,其特征在于,进一步包括在满足阈值的情况下重新 生成所述向量。
162. 如权利要求161所述的方法,其特征在于,进一步包括动态调整所述阈值。
163. 如权利要求161所述的方法,其特征在于,所述阈值包括对所述目标的搜索次数、 对所述向量的更新次数、从所述列表中的删除次数、在找到所述最接近的一个或多个事件 后搜索所述列表的成本或者虚拟向量的稀疏性,所述虚拟向量反映所生成的向量并且通过 移除所述虚拟向量中的对应于从所述列表中删除的事件的条目来形成。
164. -种用于神经网络的装置,包括: 处理系统,其被配置成: 生成引用神经网络中的多个节点的事件列表的向量,其中所述列表按时间从最早事件 到最晚事件排序;以及 在不遍历所述列表的情况下使用所述向量来在所述列表中查找最接近目标的一个或 多个事件。
165. 如权利要求164所述的装置,其特征在于,所述列表包括所述多个节点中的每一 个节点的最早事件(从最早事件到最晚事件排列)。
166. 如权利要求164所述的装置,其特征在于,所述向量中的第i个条目引用所述列表 中的第i个条目。
167. 如权利要求164所述的装置,其特征在于,所述列表包括链表,并且其中所述向量 被实现为具有指向所述链表的条目的指针。
168. 如权利要求164所述的装置,其特征在于,使用所述向量包括执行对所述向量的 索引二元搜索。
169. 如权利要求164所述的装置,其特征在于,使用所述向量包括基于所述向量中的 时间条目来执行内插或外推。
170. 如权利要求164所述的装置,其特征在于,所述处理系统被进一步配置成: 在所述目标处从所述列表中删除事件或者在最接近所述目标的一个或多个事件之间 将事件插入所述列表;以及 基于所删除或插入的事件来更新所述向量。
171. 如权利要求170所述的装置,其特征在于,所述处理系统被配置成通过引用所述 列表中的在所删除的事件之前或之后的条目,基于所删除的事件来更新所述向量。
172. 如权利要求171所述的装置,其特征在于,所述处理系统被进一步配置成在满足 阈值的情况下重新生成所述向量。
173. 如权利要求172所述的装置,其特征在于,所述处理系统被进一步配置成动态地 调整所述阈值。
174. 如权利要求172所述的装置,其特征在于,所述阈值包括对所述目标的搜索次数、 对所述向量的更新次数、从所述列表中的删除次数、在找到所述最接近的一个或多个事件 后搜索所述列表的成本或者虚拟向量的稀疏性,所述虚拟向量反映所生成的向量并且通过 移除所述虚拟向量中的对应于从所述列表中删除的事件的条目来形成。
175. -种用于神经网络的设备,包括: 用于生成引用神经网络中的多个节点的事件列表的向量的装置,其中所述列表按时间 从最早事件到最晚事件排序;以及 用于在不遍历所述列表的情况下使用所述向量来在所述列表中查找最接近目标的一 个或多个事件的装置。
176. 如权利要求175所述的设备,其特征在于,所述列表包括所述多个节点中的每一 个节点的最早事件(从最早事件到最晚事件排列)。
177. 如权利要求175所述的设备,其特征在于,所述向量中的第i个条目引用所述列表 中的第i个条目。
178. 如权利要求175所述的设备,其特征在于,所述列表包括链表,并且其中所述向量 被实现为具有指向所述链表的条目的指针。
179. 如权利要求175所述的设备,其特征在于,使用所述向量包括执行对所述向量的 索引二元搜索。
180. 如权利要求175所述的设备,其特征在于,使用所述向量包括基于所述向量中的 时间条目来执行内插或外推。
181. 如权利要求175所述的设备,其特征在于,进一步包括: 用于在所述目标处从所述列表中删除事件或者用于在最接近所述目标的一个或多个 事件之间将事件插入所述列表的装置;以及 用于基于所删除或插入的事件来更新所述向量的装置。
182. 如权利要求181所述的设备,其特征在于,所述用于基于所删除的事件来更新所 述向量的装置被配置成引用所述列表中的在所删除的事件之前或之后的条目。
183. 如权利要求182所述的设备,其特征在于,进一步包括用于在满足阈值的情况下 重新生成所述向量的装置。
184. 如权利要求183所述的设备,其特征在于,进一步包括用于动态地调整所述阈值 的装置。
185. 如权利要求183所述的设备,其特征在于,所述阈值包括对所述目标的搜索次数、 对所述向量的更新次数、从所述列表中的删除次数、在找到所述最接近的一个或多个事件 后搜索所述列表的成本或者虚拟向量的稀疏性,所述虚拟向量反映所生成的向量并且通过 移除所述虚拟向量中的对应于从所述列表中删除的事件的条目来形成。
186. -种用于神经网络的计算机程序产品,包括包含可执行用于以下操作的指令的计 算机可读介质: 生成引用神经网络中的多个节点的事件列表的向量,其中所述列表按时间从最早事件 到最晚事件排序;以及 在不遍历所述列表的情况下使用所述向量来在所述列表中查找最接近目标的一个或 多个事件。
187. 如权利要求186所述的计算机程序产品,其特征在于,所述列表包括所述多个节 点中的每一个节点的最早事件(从最早事件到最晚事件排列)。
188. 如权利要求186所述的计算机程序产品,其特征在于,所述向量中的第i个条目引 用所述列表中的第i个条目。
189. 如权利要求186所述的计算机程序产品,其特征在于,所述列表包括链表,并且其 中所述向量实现有指向所述链表的条目的指针。
190. 如权利要求186所述的计算机程序产品,其特征在于,使用所述向量包括执行对 所述向量的索引二元搜索。
191. 如权利要求186所述的计算机程序产品,其特征在于,使用所述向量包括基于所 述向量中的时间条目来执行内插或外推。
192. 如权利要求186所述的计算机程序产品,其特征在于,进一步包括可执行以用于 以下操作的指令: 在所述目标处从所述列表中删除事件或者在最接近所述目标的一个或多个事件之间 将事件插入所述列表;以及 基于所删除或插入的事件来更新所述向量。
193. 如权利要求192所述的计算机程序产品,其特征在于,基于所删除的事件来更新 所述向量包括引用所述列表中的在所删除的事件之前或之后的条目。
194. 如权利要求193所述的计算机程序产品,其特征在于,进一步包括可执行以在满 足阈值的情况下重新生成所述向量的指令。
195. 如权利要求194所述的计算机程序产品,其特征在于,进一步包括可执行以动态 地调整所述阈值的指令。
196. 如权利要求194所述的计算机程序产品,其特征在于,所述阈值包括对所述目标 的搜索次数、对所述向量的更新次数、从所述列表中的删除次数、在找到所述最接近的一个 或多个事件后搜索所述列表的成本或者虚拟向量的稀疏性,所述虚拟向量反映所生成的向 量并且通过移除所述虚拟向量中的对应于从所述列表中删除的事件的条目来形成。
【文档编号】G06N3/04GK104335232SQ201380028613
【公开日】2015年2月4日 申请日期:2013年5月30日 优先权日:2012年5月30日
【发明者】J·F·亨泽格 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1