利用尖峰神经网络解析正则表达式的制作方法

文档序号:20686483发布日期:2020-05-08 18:52阅读:270来源:国知局
利用尖峰神经网络解析正则表达式的制作方法



背景技术:

本文描述的实施例总体上涉及尖峰神经网络,并且更具体地但非排他性地涉及利用尖峰神经网络检测以用于解析正则表达式的技术。

尖峰神经网络(或“snn”)越来越多地被适配以用于提供用于各种应用的下一代解决方案。snn以各种方式依赖于信令技术,其中使用信号尖峰之间的基于时间的关系来传达信息。与典型的深度学习架构(诸如那些配备有卷积神经网络(cnn)或递归神经网络(rnn)的架构)相比,snn提供了一种通信经济性,进而可以使功率效率提高几个数量级。

正则表达式(或“reg-ex”)检测是一种任务类型,通常由冯·诺依曼型处理器和计算机架构、专用集成电路(asic)、现场可编程门阵列(fpga)和至少在正则表达式检测方面实现某种程度固定编程的其他类型的电路执行。通常,正则表达式解析器包括电路逻辑的静态配置,以提供用于处理文本、软件或其他此类数据的流水线。迄今为止,snn尚未用于提供正则表达式搜索功能。

正则表达式检测往往是许多用例中极其重要的部分,诸如扫描计算机病毒和执行文档搜索。随着数据流、云存储、云计算和其他此类技术在数量、功能和种类上的不断增加以及恶意软件和其他安全威胁的扩散,可预期对用于执行正则表达式检测的有效解决方案的逐步改进寄予越来越高的附加价值。

附图说明

以示例方式且非限制方式在附图的各图中图示本发明的各实施例,在附图中:

图1示出了各自图示出根据实施例的简化尖峰神经网络的特征的图。

图2是图示出根据实施例的实现逻辑状态机的系统的特征的功能框图。

图3是图示出根据实施例的利用尖峰神经网络提供逻辑状态机的方法的流程图。

图4a、图4b示出了各自图示出根据实施例的尖峰神经网络的用于提供状态机的特征的各种图。

图5是图示出根据一个实施例的计算设备的功能框图。

图6是图示出根据一个实施例的示例性计算系统的功能框图。

具体实施方式

本文讨论的实施例以各种方式提供了用于利用尖峰神经网络提供逻辑状态机的技术和机制。如本文中所使用,“逻辑状态机”在本文中是指与状态转换结合的一组逻辑状态,状态转换各自在相应的两个这样的逻辑状态之间。逻辑状态机可以用硬件(可以被认为是对应的“物理”状态机)实现,该硬件包括或以其他方式提供包括多个节点集合(或“神经元”)的尖峰神经网络。在给定时间,尖峰神经网络的配置可以实现逻辑状态机的至少一个(逻辑)状态。响应于输入信令,尖峰神经网络可以实现从配置到另一配置的转换,该转换实现逻辑状态机的下一个或多个状态。

此类尖峰神经网络的节点可以是泄漏积分并发射(lif)类型的,例如,其中,基于在给定节点j处接收到的一个或多个尖峰信号,该节点j的膜电位vm的值可能会达到尖峰然后随时间衰减。这种膜电位vm的尖峰和衰减行为可以例如根据以下公式:

其中v静息是膜电势vm所要达到的静息电位,τm是vm衰减的时间常数,wij是分配给耦合在另一个节点i与节点j之间的突触的权重,iij是经由所述突触传递到节点j的尖峰信号(或“尖峰序列”),并且jb是例如基于从某个其他外部节点/源提供给节点j的另一信号的值。在一些实施例中,jb可以基于输入尖峰序列,该输入尖峰序列例如表示正在使用尖峰神经网络进行评估的数据集的一个或多个字符。

可以如此选择τg、τm、v阈值和/或其他这样的参数的相应值,以使对应的信号具有衰减特性,其促进本文所述的逻辑状态转换,例如,使得给定节点j仅在它在两个连续的时间段内收到两个尖峰时才输出尖峰。由于给定的突触后节点j的时间常数参数,时间间隔较远的突触前尖峰(例如,其中两个这样的尖峰间隔一个或多个时间段)可能不足以引起突触后节点j的vm超过其v阈值。在一个示例实施例中,vm的衰减率可能导致第一时间段的大部分vm在三至四个后续时间段(每个的持续时间与第一时间段相同)内衰减。

作为说明而非限制,vm的尖峰(例如由于来自另一个节点i的信令)可能导致节点j处的累积电位,其会略迅速地泄漏,例如,除非节点j在此后(例如下一个时间段)很快检测到某个其他接收到的尖峰序列中的附加信号尖峰。这样的附加信号尖峰可能导致vm的相应增加,进而可能导致从节点j输出的信号的对应尖峰。例如,仅当在两个连续的时间段中接收到突触前尖峰时,膜电位vm可能尖峰超过阈值电位v阈值,并且突触后节点j可以输出对应的信号尖峰。

这样的尖峰神经网络可以被耦合和/或以其他方式被配置成用于提供逻辑状态机,该逻辑状态机例如将检测给定数据集中的一个或多个正则表达式。一些实施例不限于特定的逻辑状态机、特定的正则表达式、或用于标识将由尖峰神经网络实现的特定的逻辑状态机的特定技术。例如,可以使用例如用于基于给定的要检测的一个或多个正则表达式来标识特定逻辑状态机的传统技术来先验地提供或以其他方式预先确定逻辑状态机。

在实施例中,逻辑状态机包括状态集合γ,其可以由尖峰神经网络在不同时间以各种方式实现。逻辑状态机可以促进对被评估的数据是否包括某些预先确定的一个或多个正则表达式的检测。在这种意义上,逻辑状态机表示或以其他方式对应于这样的一个或多个正则表达式。被评估的数据可以使用或以其他方式基于字符集合σ(例如,包括字母、符号等),诸如字母表、音节表等。逻辑状态机还可包括转换规则集合χ={τ1,τ2,...},其中每个规则τi指定从γ的相应当前状态到γ的相应下一个状态的转换。

在这样的实施例中,尖峰神经网络可以包括多个节点集合,例如,其中多个节点集合中的节点总数等于或大于集合γ的状态总数与集合σ的字符总数的乘积|γ|·|σ|。多个节点集合的集合总数可以例如等于集合γ的状态总数。

集合σ的每个字符可以由不同的相应输入尖峰序列表示,该输入尖峰序列被传递到多个节点集合。例如,可以将多个输入尖峰序列(每一个输入尖峰序列用于表示集合σ的不同的相应字符)分别提供给多个节点集合中的每个集合的相应节点。在这样的实施例中,多个节点集合中的每个节点集合可以对应于集合γ的不同的相应状态,其中,对于每个这样的节点集合,该节点集合中的每个节点都对应于集合σ的不同的相应字符。如本文所描述,此类节点之间的各种突触连接以及此类节点的相应膜电位特性可促进此类逻辑状态机的实现。

本文参考尖峰神经网络架构描述了各种实施例的某些特征,该尖峰神经网络架构被配置为用于检测正则表达式在数据集中的包含。然而,这样的描述可被扩展以附加地或替换地应用于利用被配置成实现状态机的状态转换的尖峰神经网络执行的各种其他评估过程中的任一个,该状态转换响应于各自对应于不同的相应数据的输入尖峰序列。

此外,本文参考各种输出或响应于仅单个信号尖峰的各个实例的节点来描述各种实施例的某些特征。然而,一些实施例不限于可以用于指示神经网络节点的操作中的给定事件的特定尖峰模式。在各种实施例中,这样的尖峰模式可以包括多个尖峰的预定义组合、不存在一个或多个信号尖峰、信号尖峰的变化率等。

本文描述的技术可以在一个或多个电子设备中实现。可以利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,诸如相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、自动服务机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器,机架安装服务器,其组合等)、机顶盒、智能手机、平板个人计算机、超移动个人计算机、有线电话、其组合等。这些设备可以是便携式的或者静止的。在一些实施例中,本文描述的技术可以在台式计算机、膝上型计算机、智能手机、平板计算机、上网本计算机、笔记本计算机、个人数字助理、服务器、其组合等中采用。更一般地,本文描述的技术可以在包括用于提供尖峰神经网络的电路逻辑的各种电子设备中的任何一种中使用。

图1图示出简化的尖峰神经网络100的示例图,其提供了第一节点集合110(或神经元)与第二节点集合130(神经元)之间的连接120的图示。神经网络的一些或全部(诸如简化的神经网络100)可以被组织为多个层,例如,包括输入层和输出层。将会理解,简化的神经网络100仅描绘了两个层和少量节点,但是其他形式的神经网络可包括大量的以各种方式配置的节点、层、连接和路径。

提供到神经网络100中的数据可以首先由输入神经元的突触进行处理。输入、神经元的突触和神经元本身之间的相互作用决定是否经由轴突将输出提供给另一个神经元的突触。对突触、神经元、轴突等的建模能以多种方式完成。在示例中,神经形态硬件包括合成神经元中的多个单独的处理元件(例如,神经核)以及用于将输出传送到其他神经元的消息传送结构(messagingfabric)。确定特定神经元是否“发射”以向进一步连接的神经元提供数据取决于由该神经元施加的激活函数以及从神经元i(例如,位于第一节点集合110的层中)到神经元j(例如,位于第二节点集合130的层中)的突触连接(例如,wij)的权重。由神经元i接收的输入被描绘为值xi,并且从神经元j产生的输出被描绘为值yj。因此,在神经网络中进行的处理基于在神经网络的神经元、突触与其他元件之间执行的加权连接、阈值和评估。

在示例中,神经网络100由尖峰神经网络核的网络建立,其中神经网络核经由从核发送到核的短分组化的(packetized)尖峰消息进行通信。例如,每个神经网络核可以将某个数量的基元非线性时域计算元件实现为神经元,使得当神经元的激活超出某个阈值水平时,该神经元生成尖峰消息,该尖峰消息被传播到目的地核中所包含的扇出神经元的固定集合。网络可以将尖峰消息分发到所有目的地神经元,并且作为响应,那些神经元以瞬态、依赖于时间的方式更新它们的激活,类似于真实的生物神经元的操作。

神经网络100进一步示出在第一神经元集合中的神经元i(例如,第一节点集合110的神经元)处接收由值xi表示的尖峰。神经网络100的输出还被示为由值yj表示的尖峰,该尖峰经由由连接120建立的路径到达第二神经元集合中的神经元j(例如,第一节点集合110的神经元)。在尖峰神经网络中,所有通信发生在事件驱动的动作电位或尖峰上。在示例中,尖峰仅传递尖峰时间以及源和目的地神经元对,而不传递其他信息。作为使用实值状态变量对加权尖峰输入的动态非线性积分的结果,计算可以以各种方式在每个神经元中发生。由特定神经元生成或为特定神经元生成的尖峰的时域序列可以称为该特定神经元的“尖峰序列(spiketrain)”。

在尖峰神经网络的示例中,激活函数经由尖峰序列发生,这意味着时间是必需被考虑的因素。此外,在尖峰神经网络中,每个神经元可提供类似于生物神经元的功能,因为人工神经元经由至一个或多个“树突”(生物神经元的物理结构的部分)的突触连接接收该人工神经元的输入,并且这些输入影响人工神经元“体细胞”(细胞体)的内部膜电位。在尖峰神经网络中,当人工神经元的膜电位跨越发射阈值时,该人工神经元“发射”(例如,产生输出尖峰)。因此,输入对尖峰神经网络神经元的效果起作用以增加或减小内部膜电位,从而使神经元更可能或更不可能发射。此外,在尖峰神经网络中,输入连接可以是刺激性或抑制性的。神经元的膜电位也可由神经元自身的内部状态(“泄漏”)的改变来影响。

图1还图示出尖峰神经网络中的示例推断路径140,诸如可以通过神经网络100的形式或其他形式的神经网络来实现。神经元的推断路径140包括突触前神经元142,其被配置为产生表示尖峰输入的突触前尖峰序列xi。尖峰序列是离散尖峰事件的时间序列,其提供了指定神经元在何时发射的一组时间。

如图所示,尖峰序列xi由突触之前的神经元(例如,神经元142)产生,并且根据突触144的特性评估尖峰序列xi以进行处理。例如,突触可应用一个或多个权重,例如权重wxi,其用于评估来自尖峰序列xi的数据。来自尖峰序列xi的输入尖峰进入突触,诸如具有权重wij的突触144。该权重缩放突触前尖峰对突触后神经元(例如,神经元146)的影响。如果所有输入连接对突触后神经元的积分贡献超过阈值,则突触后神经元146将发射并产生尖峰。如图所示,yj是由突触之后的神经元(例如,神经元146)响应于某个数量的输入连接而产生的突触后尖峰序列。如图所示,突触后尖峰序列yj从神经元146分布到其他突触后神经元。

图2示出了根据实施例的提供逻辑状态机功能的系统200的特征。系统200可以包括神经网络100的某些或全部特征。系统200是实施例的一个示例,其中尖峰神经网络可操作以在各种配置之间连续转换,每个配置对应于逻辑状态机的不同的相应逻辑状态。可以响应于多个输入尖峰序列执行这样的状态转换,该多个输入尖峰序列以各种方式被提供给尖峰神经网络的多个节点集合(或“神经元”)。

在一个实施例中,提供给尖峰神经网络的多个输入尖峰序列分别对应于不同的相应数据,例如,其中每个输入尖峰序列对应于可以在要使用尖峰神经网络评估的数据集中使用的不同的相应字符。为简洁起见,这种数据集在本文中称为“被评估数据”。给定的输入尖峰序列的尖峰可用于指示被评估数据中对应字符的实例。例如,输入尖峰序列的特定尖峰模式(例如,包括至少一个信号尖峰的尖峰模式)可以表示对应字符的一个实例的经编码版本。因此,多个输入尖峰序列的尖峰的相对定时可以表示被评估数据中字符的先后顺序。

尖峰神经网络的多个节点集合可以分别对应于逻辑状态机的不同的相应(逻辑)状态。利用对应的节点集合(或为简便起见,“节点集”)提供这种状态可以包括将该节点集合的所有节点分别配置为相应的模式,为简洁起见,本文将其称为“激活模式”。给定节点的激活模式可以使该节点能够响应于提供给该节点的相应输入尖峰序列来执行特定类型的信令。当处于其各自的激活模式时,给定节点可操作以用于发信号通知(响应于其对应的输入尖峰序列)逻辑状态机的至少一个下一状态将被配置。例如,该节点可以发信号通知:对于多个节点集合中的至少一个节点集合,该节点集合中的每个节点各自的激活模式将被配置。发送这种信令的节点然后可以从其激活模式转换,以便至少暂时禁用这种响应于其对应的输入尖峰序列的信令。然而,在一些实施例中,节点可以保持在其激活模式或者可以发信号通知其自身的激活模式的重新配置,例如,其中,该节点发信号通知:尖峰神经网络将继续实现或将返回到利用同一节点的激活模式部分实现的同一逻辑状态。

现在参考系统200的示例实施例,其尖峰神经网络210可以包括要在不同时间以各种方式配置以便依次提供逻辑状态机的连续状态转换的节点。可以响应于输入尖峰序列ia,…,in来执行这种状态转换,该输入尖峰序列ia,…,in例如经由信号线220以各种方式传递到尖峰神经网络210的节点。输入尖峰序列ia,…,in可以分别对应于不同的相应数据,例如,其中输入尖峰序列ia,…,in-分别表示用于表示文本、软件代码或其他此类信息的其他系统的字母表、音节表的不同的相应一个且仅一个字符。在实施例中,尖峰神经网络210的节点中的每一个都与相应的膜电位相关联,该膜电位确定是否和/或如何在节点之间传递信号。尖峰神经网络210的膜电位和/或突触权重的相应值可以随时间变化,例如,根据本文其他部分所描述的技术。

尖峰神经网络210可以包括多个节点集合,每个节点集合用于接收输入尖峰序列ia,…,in。在所示的示例实施例中,多个节点集合210包括节点aa,…,an的集合230、节点ba,…,bn的集合240和节点ma,…,mn的集合250。然而,在其他实施例中,尖峰神经网络210可以包括更多、更少和/或以不同方式配置的节点集合。例如,一些实施例不限于特定数量的多个节点集合和/或特定节点集合内特定数量的多个节点。

对于节点集合230,240,...,250中的每一个,节点集合的每个节点可以被耦合以接收输入尖峰序列ia,…,in的不同的相应的一个,例如,其中信号线222,...,224以不同方式将输入尖峰序列ia,…,in分别传递到每个节点集合230,240,...,250的相应节点。其中每一个尖峰模式由输入尖峰序列ia,…,in中相应的一个尖峰引起的尖峰模式序列可以向节点集合230,240,...,250指示被评估的某些数据中的字符序列(例如,包括文本、软件代码等的数据)。

节点集合230,240,...,250可以分别对应于逻辑状态机的不同的相应状态,例如,至少在给定节点集合被配置为选择性地实现其对应状态的范围内。例如,可以通过节点aa,...,an中每个节点的相应激活模式的配置,用节点集合230来实现第一状态。第一状态(例如)可以是尖峰神经网络210的初始化状态,例如,其中初始化状态由使用信号线220或某一其他信号路径(未示出)传递的一个或多个初始化信号独立于输入尖峰序列ia,…,in而配置。替代地,第一状态可以是逻辑状态机的较早状态转换的结果。

在一个这样的实施例中,可以利用节点aa,...,an中相应的一个来以不同方式启用从第一状态的状态转换。例如,第一状态可以包括节点aa的激活模式,其响应于输入尖峰序列ia的特定尖峰模式而启用状态转换,该尖峰模式指示输入尖峰序列ia所对应的字符的实例。第一状态可以进一步包括节点an的激活模式,其响应于输入尖峰序列in的特定尖峰模式而启用状态转换,该尖峰模式指示输入尖峰序列in所对应的另一字符的实例。节点aa,...,an的任何其他节点可以类似地被配置为响应于输入尖峰序列ia,...,in的对应的一个尖峰而发信号通知相应的状态转换。

下面参考节点an描述一个这样的状态转换的图示,该状态转换响应于输入尖峰序列in实现从第一状态到第二状态的转换,例如用节点集合240提供该第二状态。例如,如图2所示,尖峰神经网络210可以包括多个突触232,每个突触232耦合在节点an与节点集合240的节点ba,...,bn中的不同的相应一个节点之间。在这样的实施例中,节点集合240的每个节点可以通过多个突触232中的相应一个突触耦合到节点an。在根据一个实施例的示例场景中,输入尖峰序列in的信号尖峰模式可以在第一模式期间(并且因此在节点an的激活模式期间)指示字符或其他数据的实例,输入尖峰序列ia,...,in的该字符或其他数据仅对应于输入尖峰序列in。响应于信号尖峰模式,节点an可以发信号通知:尖峰神经网络210将要从实现逻辑机的一个或多个状态(包括用节点集合230实现的第一状态)转换到实现逻辑状态机的一个或多个下一状态。例如,节点an可以经由突触232发信号通知节点ba,...,bn中的每个节点将转换到各自的激活模式。在第一状态不是逻辑状态机的一个或多个下一状态的其中之一的实施例中,节点aa,...,an可以转换离开其各自的激活模式。

注意,如果节点ba,...,bn各自在时间段(t-1)期间从节点an接收到相应的信号尖峰,并且尖峰序列ib的信号尖峰在下一个时间段t被传送到bn(但不是节点集合240的任何其他节点),则在节点集合240的所有节点ba,...,bn中,只有节点bn可以输出信令以实现逻辑状态机的下一个或多个状态。仅节点bn的这种选择性信令可能是由于节点集合240的任何其他节点未能达到各自的阈值膜电压水平而导致的(即,在没有任何其他节点在时间段t内经由对应的输入尖峰序列接收到信号尖峰的情况下)。

在这样的实施例中,尖峰神经网络210可以包括一个或多个附加的突触集合(未示出),其中对于节点集合230、240,...,250的每个节点,相应的突触集合将该节点耦合到节点集合230、240,...,250中的至少一个节点集合的每个节点。因此,尖峰神经网络210的节点集合230、240,...,250和突触的布置可使得能够检测到针对任何可能的字符的状态转换,同时实现逻辑状态机的一个或多个状态的任何可能的组合。

例如,类似于用节点集合230提供第一状态,可以通过配置节点ba,...,bn中的每个节点的相应激活模式来利用节点集合240实现第二状态。在第二状态期间,可以分别响应于输入尖峰序列ia,...,in来以不同方式启用节点ba,...,bn,每个节点使用在功能上类似于突触232的相应的突触集合(未示出)来发信号通知相应的状态转变。替代地或附加地,可以通过节点ma,...,mn中每个节点的相应激活模式的配置,用节点集合250来类似地实现第三状态。在第三状态期间,可以分别响应于输入尖峰序列ia,...,in来以不同方式启用节点ma,...,mn,每个节点使用相应的突触集合(未示出)来发信号通知相应的状态转变。

在一些实施例中,尖峰神经网络210包括或耦合到一电路,该电路发信号通知逻辑状态机的特定状态已经实现。例如,这样的电路可以指示被评估数据是否已经满足(或替代地,未能满足)某些测试条件。作为说明而非限制,由节点集合250实现的逻辑状态可以是一种状态(在此称为“接受或拒绝状态”),该状态对应于确定被评估数据确实包括(或者替代地,没有)逻辑状态机被设计用于检测的至少一个正则表达式的实例。响应于达到用节点集合250实现的接受或拒绝状态,可以将来自节点ma,...,mn中的至少一个节点的信号(例如,来自节点mn252的说明性信号254)发送至包括在系统200中或耦合到系统200的检测器电路260。响应于信号254,检测器电路260可以执行或以其他方式促进附加处理以实现接受(或替代地,拒绝)被评估数据。

图3示出根据实施例的利用尖峰神经网络实现逻辑状态机的方法300的特征。方法300是实施例的一个示例,其中,使用尖峰神经网络的多个节点集合中的一个节点集合来配置状态机的状态,例如,其中可以使用多个节点集合中的另一个节点集合来配置状态机的另一状态。可以通过多个尖峰序列来发信号通知从一个这样的状态到另一状态的转换,该多个尖峰序列被传递到尖峰神经网络的多个节点集合中的每个节点集合。在实施例中,方法300的一些或全部由尖峰神经网络100、210中的一个执行。

尽管一些实施例在这方面不受限制,但是方法300可以包括一个或多个操作以提供、配置或以其他方式启用尖峰神经网络的功能以用于后续操作以便实现逻辑状态机。例如,方法300可以包括:在310处,耦合尖峰神经网络的多个节点集合以实现逻辑状态机的一个或多个状态转换。对于多个节点集合中的每个节点集合,节点集合中的每个节点可以被耦合以配置逻辑状态机的不同的相应的一个且仅一个状态。基于在310处的耦合,尖峰神经网络可以被配置为执行逻辑状态机的状态转换,以便检测被评估数据是否包括正则表达式。这样的正则表达式可以包括例如人类可读文本的特定字符串、恶意软件的签名(例如,软件病毒)等。

在310处的耦合可以包括耦合尖峰神经网络的各个节点,每个节点接收多个输入尖峰序列中的相应的输入尖峰序列。替代地或附加地,在310处的耦合可以包括耦合多个突触,每个突触在尖峰神经网络的相应的节点对之间。在一些实施例中,在310处的耦合包括确定与这些突触中的相应突触以不同方式相关联的权重值。在实施例中,在310处的耦合可以导致禁用任何信令以便实现至少某些类型的状态转换的配置。例如,尖峰神经网络的给定两个节点x和y可以仅保持彼此间接耦合,尖峰神经网络没有直接耦合到节点x和节点y二者的任何突触。在其中突触直接耦合到节点x和节点y二者的替代实施例中,可以为该突触分配权重值,以排除经由突触的任何信令可以导致节点x,y中的一个转换为各自的激活模式的可能性。例如,分配权重值可以包括选择未满足用于识别激活模式转换事件的标准的权重值。这样的选择可以仅在两个可能的(二进制)权重值之间,例如,一个未满足标准的权重值和另一个满足标准的权重值。

方法300可以附加地或替代地包括在320处向多个节点集合提供多个输入尖峰序列。多个输入尖峰序列可以各自对应于不同的相应数据,例如,其中输入尖峰序列各自表示被评估数据所使用的字母表、音节表或其他字符系统的对应一个且仅一个字符。对于多个输入尖峰序列中的每个输入尖峰序列,输入尖峰序列的相应尖峰模式可以指示被评估数据中对应的字符的实例。

替代地或附加地,方法300可以包括操作305以用于基于在310处的耦合和/或在320处的提供来至少部分地利用尖峰神经网络实现逻辑状态机。例如,操作305可以包括,在330处,利用尖峰神经网络的第一节点集合提供逻辑状态机的第一状态,其中尖峰神经网络的多个节点集合包括第一节点集合和第二节点集合。对于多个节点集合中的每个节点集合,节点集合中的每个节点可以对应于(例如,被耦合以用于接收)多个输入尖峰序列的不同的相应输入尖峰序列。附加地或替代地,对于多个节点集合中的每个节点,节点的相应模式(“激活模式”)可以使该节点能够利用多个节点集合的相应节点集合来配置逻辑状态机的相应状态。每个这样的节点可以可操作以用于启用逻辑状态机的相应的下一个或多个状态,其中这种启用是响应于提供给该节点的对应的输入尖峰序列。在330处提供第一状态可以例如包括配置第一节点集合中的每个节点的相应模式。在这样的实施例中,逻辑状态机的每个状态可以对应于多个节点集合中的不同的相应节点集合,其中,对于逻辑状态机的每个状态,该状态包括对应的节点集合中的每个节点的相应模式的配置。

操作305还可以包括:在340处,在逻辑状态机的第一状态期间,在第一节点集合处接收与第一节点集合中的节点相对应的输入尖峰序列。在340处接收的输入尖峰序列的尖峰模式可以指示被评估数据中该输入尖峰序列所对应的字符的实例。响应于在340处的接收,操作305还可以在350处执行利用第二节点集合提供逻辑状态机的第二状态,包括配置第二节点集合中的每个节点的相应模式。在第二状态期间,响应于多个输入尖峰序列中对应的一个,第二节点集合中的每个节点可以准备好发信号通知:逻辑状态机的对应的下一个或多个状态将被实现。

尽管一些实施例在这方面不受限制,但是操作305可以进一步包括例如使逻辑状态机成为非确定性有限自动机(nfa)的附加的一个或多个过程(未示出)。逻辑状态机的非确定性可以至少部分地通过使多个状态中的两个或更多个状态能够彼此并发地实现来提供。例如,操作305可以进一步包括:响应于在340处接收到输入尖峰序列,利用多个节点集合中的第三节点集合提供逻辑状态机的第三状态。提供第三状态可以包括配置第三节点集合中的每个节点的相应模式,例如,其中第三状态与第二状态并发地配置。在该并发配置期间,响应于多个输入尖峰序列中对应的一个,第二节点集合中的每个节点以及第三节点集合中的每个节点可以准备好发信号通知:逻辑状态机的对应的下一个或多个状态将被实现。

在实施例中,操作305可以包括附加过程(未示出),以用于在350处提供的第二状态之后(或之前)实现一个或多个其他状态转换。例如,这样的附加过程可以包括在第一节点集合的另一节点处接收多个尖峰序列中的另一个,其中所述接收是在用第一节点集合实现的第一状态的某个较晚(或替代地,较早)的实例期间。响应于该另一个输入尖峰序列的尖峰模式,第一节点集合的接收节点可以发信号通知:第一节点集合的至少其他节点的相应模式将被重新配置或维持。因此,第一状态可以作为将跟在第一状态的当前实例之后的一个或多个下一状态中的一个来继续(或重新断言)。

在一些实施例中,方法300包括配置尖峰神经网络的初始化状态,包括配置多个节点集合中的一个节点集合中的每个节点的相应模式。在这样的实施例中,初始化状态的配置可以独立于多个输入尖峰序列中的任意输入尖峰序列。初始化状态可以是第一状态的实例,例如,诸如在330处提供的。替代地,初始化状态可以是在330处提供之前的第一状态(或逻辑状态机的另一状态)的较早实例。

在一些实施例中,多个节点集合中的至少一个节点集合包括输出指示是否已经满足测试标准的信号(诸如信号254)的节点。例如,节点集合中的每个节点可以输出指示是否已经满足测试标准的相应信号。测试标准可以包括例如用于检测被评估数据的字符串或其他此类正则表达式的搜索标准。

图4a、图4b示出了根据实施例的用于执行逻辑状态机的状态转换的尖峰神经网络400的特征。例如,尖峰神经网络400可以包括尖峰神经网络100、210的其中一个的特征。尖峰神经网络400是实施例的一个示例,用于实现各自具有不同的相应网络节点集合的多个逻辑状态,并且用于以不同方式实现各自响应于相应的输入尖峰序列的状态转换。在一些实施例中,实现一个或多个这样的状态和/或状态转换可以包括方法300的操作。

如图4所示,尖峰神经网络400可以包括多个节点集合,包括例如节点sa、sb的说明性集合420、节点aa、ab的集合422、节点ba、bb的集合424、节点ca、cb的集合426、和节点da、db的集合428。节点集合420、422、424、426、428可以以不同方式耦合,以便分别用于接收多个输入尖峰序列,例如,包括所示的说明性尖峰序列ia,ib。例如,节点sa、aa、ba、ca、da可以分别经由信号线410耦合以便接收尖峰序列ia,其中节点sb、ab、bb、cb、db分别经由信号线412耦合以便接收尖峰序列ib。在例如其中节点集合420、422、424、426、428在功能上对应于节点集合230,240,...,250并且信号线410、412在功能上对应于信号线222,...,224的一个实施例中,输入尖峰序列ia,ib可以在功能上对应于输入尖峰列ia,…,in。

图4a还示出了可以用尖峰神经网络400实现的逻辑状态机430的一个示例。在所示的示例实施例中,逻辑状态机430包括状态s、a、b、c和d(例如,其中状态s是初始化状态)以及分别在状态s、a、b、c和d的相应两个状态之间的各种状态转换。在一些实施例中,逻辑状态机430的一个或多个状态可以是接受或拒绝状态,例如,其中状态c或状态d的实现可以导致指示用于检测被评估数据中的正则表达式的处理的结果的信号。

例如,可以在状态机的当前一个或多个状态期间,响应于尖峰输入尖峰序列ia,ib之一的特定尖峰模式,来以不同方式执行给定的状态转换。作为说明而非限制,可以响应于指示被评估数据中的字符a的实例的输入尖峰序列ia来执行从状态s到状态a的转换。替代地或附加地,可以响应于指示被评估数据中的字符b的实例的输入尖峰序列ib来执行从状态s到状态b的转换。逻辑状态机430的特定状态和状态转换、尖峰序列ia,ib的特定数量以及节点集合420、424、424、426、428的特定数量、尺寸和配置仅是说明性的,并且在其他实施例中是非限制性的。

尖峰神经网络400可以进一步包括多个突触(图4a中未示出),这些突触将节点集合420、422、424、426、428的每个节点以不同方式耦合到节点集合420、422、424、426、428中相应的一个或多个。一些或所有此类节点与相应的突触的耦合和/或向一些或所有此类突触的相应权重值的分配可以至少部分地启用逻辑状态机430的一个或多个状态转换。逻辑状态机430的给定状态转换可以基于当前用节点集合420、424、424、426、428中的一个来实现的状态,并且还基于尖峰序列ia,ib中的一个的并发尖峰模式。

例如,图4b示出了表440,该表440图示出尖峰神经网络400的相应节点之间的突触连接。表440的行和列分别对应于“驱动神经元”和“被驱动神经元”。“驱动神经元”是指将产生信令的节点,该信令导致一个或多个其他节点的相应激活模式。进而,至少相对于所讨论的驱动节点,那些一个或多个其他节点因此是“被驱动神经元”。节点可以相对于一个状态转换是驱动神经元(或“驱动节点”)并且相对于另一个状态转换是被驱动神经元(或“被驱动节点”)。在一些实施例中,替代地或附加地,节点可以是其自身的驱动节点(和被驱动节点)。

在表440中,包括数字“1”的单元对应于其中对应的驱动节点能够配置对应的被驱动节点的激活模式的实例。例如,在行sa中和列aa中的单元具有值“1”,从而指示:响应于尖峰序列ia,节点sa能够发信号通知节点aa过渡到其激活模式。类似地,在行sa中和列ab中的单元具有值“1”,从而指示:响应于尖峰序列ia,节点sa能够发信号通知节点ab过渡到其激活模式。再次参考逻辑状态机430,这样的信令可以响应于指示字符a的实例的尖峰序列ia的尖峰模式来实现从状态s到状态a的转换。

相反,包括数字“0”的单元对应于其中对应的驱动节点被防止配置对应的被驱动节点的激活模式的实例。防止这种配置可以是例如由于对应的驱动节点和对应的被驱动节点之间不存在任何突触。替代地,防止该配置的原因可以是由于分配给任何这种突触的权重值。

图4b还示出了时序图450,其图示出尖峰神经网络400如何执行逻辑状态机430的一系列状态转换的示例。如时序图450所示,尖峰神经网络400可以在时刻t0之前被初始化为状态s(作为示例),例如,包括配置对应的节点集合420的节点sa,sb的相应激活模式。在配置状态s时,尖峰神经网络可以开始接收输入尖峰序列ia,ib的相应信号尖峰,例如,其中所述尖峰序列导致一系列状态转换。

作为说明而非限制,在各个时刻tv、tw和tx处的输入尖峰序列ia的信号尖峰,结合在各个时刻ty和tz处的输入尖峰列ib的信号尖峰,可以指示正在由尖峰神经网络400评估的数据包括字符序列aaabb。响应于这样的信号尖峰,尖峰神经网络400可以执行一系列状态转换,以从初始化状态s的转换为起始。例如,响应于在时刻tv的信号尖峰,节点sa可以发信号通知:节点集合422的每个节点ax(其中“ax”用于指代节点aa,ab中的一个或两个)将转换为相应的激活模式以实现逻辑状态a。可以在时刻tw之前的时刻t2之前完成从状态s到状态a的转换,从而启用节点集合422的节点来发信号通知序列的下一个状态转换的配置。

例如,响应于时刻tw的信号尖峰,节点aa可以发信号通知:节点集合424的每个节点bx都将转换为各自的激活模式以实现逻辑状态b。因此,可以完成从状态a到状态b的转换,使得在时刻tx之前的时刻t4之前,节点集合424被启用以便发信号通知序列的下一个状态转换的配置。例如,响应于时刻tx的信号尖峰,节点ba可以发信号通知:节点集合424的每个节点bx都将维持(或者替代地,重新配置)各自的激活模式以再次实现逻辑状态b。可以完成从状态b到状态b的转换,使得在时刻ty之前的时刻t6之前,节点集合424被启用以便发信号通知序列的下一个状态转换的配置。

例如,响应于时刻ty的信号尖峰,节点bb可以发信号通知:节点集合426的每个节点cx都将转换为各自的激活模式以实现逻辑状态c。可以完成从状态b到状态c的转换,使得在时刻tz之前的时刻t8之前,节点集合426被启用以便发信号通知序列的下一个状态转换的配置。例如,响应于时刻tz的信号尖峰,节点cb可以发信号通知:节点集合428的每个节点dx都将转换为各自的激活模式以实现逻辑状态d。可以在时刻t10之前完成从状态c到状态d的转换,从而启用节点集合428来发信号通知序列的任何下一个状态转换的配置。

在所示的示例实施例中,实现逻辑状态机430包括提供nfa。例如,替代信号尖峰序列可以包括尖峰序列ib的信号尖峰,该尖峰序列ib在实现逻辑状态机430的状态s的同时在尖峰神经网络400处接收。在这种情形下,尖峰神经网络400将从利用节点集合420实现状态s转换为并发地利用节点集合424实现状态b和利用节点集合426实现状态c。例如,节点sb可以通过向节点ba、bb、ca和cb发信号通知它们将转换为其各自的激活模式,来响应尖峰序列ib的信号尖峰。

可以完成从状态s到状态b和状态c两者的转换,使得节点集合424、426各自被启用以便发信号通知序列的相应下一个状态转换的配置。在一个这样的情形下,在并发地实现状态b和c的同时,可以在尖峰神经网络400处接收尖峰序列ib的另一个后续信号尖峰。响应于该后续信号尖峰,节点集合426的节点cb可以发信号通知从状态c到状态d的转换。然而,节点集合424的节点bb可以并发地发信号通知从状态b到状态c的转换。因此,在一些实施例中,逻辑状态机的并发状态和并发状态转换可以被以不同方式实现以提供nfa的非确定性功能。

图5图示出根据一个实施例的计算设备500。计算设备500容纳板502。板502可包括多个组件,包括但不限于处理器504和至少一个通信芯片506。处理器504物理地以及电气地耦合至板502。在一些实现中,至少一个通信芯片506也物理地和电气地耦合至板502。在进一步实现中,通信芯片506是处理器504的一部分。

取决于其应用,计算设备500可包括可物理地以及电气地耦合至板502或者可以不物理地以及电气地耦合至板502的其他组件。这些其它组件包括但不限于易失性存储器(例如dram)、非易失性存储器(例如rom)、闪存、图形处理器、数字信号处理器、密码处理器、芯片组、天线、显示器、触摸屏显示器、触摸屏控制器、电池、音频编码解码器、视频编码解码器、功率放大器、全球定位系统(gps)装置、指南针、加速度计、陀螺仪、扬声器、照相机以及大容量存储装置(诸如硬盘驱动器、紧凑盘(cd)、数字多功能盘(dvd)等等)。

通信芯片506实现无线通信以用于去往计算设备500和来自计算设备500的数据传输。术语“无线”和其衍生词可用于描述可通过使用经调制的电磁辐射来使数据传递通过非固态介质的电路、设备、系统、方法、技术、通信信道等。尽管在一些实施例中相关联的设备可以不包含任何线,但是该术语“无线”并不暗示相关联的设备不包含任何线。通信芯片506可实现多种无线标准或协议中的任一种,包括但不限于wi-fi(ieee802.11系列)、wimax(ieee802.16系列)、ieee802.20、长期演进(lte)、ev-do、hspa+、hsdpa+、hsupa+、edge、gsm、gprs、cdma、tdma、dect、蓝牙及其衍生物以及称为3g、4g、5g以及更高的任何其它无线协议。计算设备500可包括多个通信芯片506。例如,第一通信芯片506可专用于较短程的无线通信,诸如wi-fi和蓝牙;而第二通信芯片506可专用于较长程的无线通信,诸如gps、edge、gprs、cdma、wimax、lte、ev-do等。

计算设备500的处理器504包括封装在处理器504内的集成电路。术语“处理器”可表示任何设备或设备的一部分,其处理来自寄存器和/或存储器的电子数据,以将该电子数据转换成可存储于寄存器和/或存储器中的其它电子数据。通信芯片506还可包括封装在通信芯片506内部的集成电路管芯。

在多个实现中,计算设备500可以是膝上型计算机、上网本、笔记本、超极本、智能手机、平板、个人数字助理(pda)、超移动oc、移动电话、桌面计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制单元、数字照相机、便携式音乐播放器或数字视频记录仪。在进一步的实现方式中,计算设备500可以是处理数据的任何其他电子设备。

一些实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储有指令的机器可读介质,这些指令可以用来对计算机系统(或其他电子设备)编程以执行根据实施例的过程。机器可读介质包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光学存储介质、闪存设备等)、机器(例如,计算机)可读传输介质(电、光、声或其他形式的传播信号(例如红外信号、数字信号等))等。

图6示出了计算机系统600的示例性形式的机器的图示性表示,在该计算机系统600内,可执行用于使机器执行本文中所描述的方法中的任何一个或多个的一组指令。在替代实施例中,可以在局域网(lan)、内联网、外联网或因特网中将该机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机机器操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。进一步地,虽然仅图示出单个机器,但是,术语“机器”也应当被认为包括单独地或联合地执行一组(或多组)指令以执行本文中所描述的方法中的任何一种或多种方法的机器(例如,计算机)的任何集合。

示例性计算机系统600包括处理器602、主存储器604(例如,只读存储器(rom)、闪存、动态随机存取存储器(dram)(诸如,同步dram(sdram)或rambusdram(rdram)等)、静态存储器606(例如,闪存、静态随机存取存储器(sram)等)以及次存储器618(例如,数据存储设备),它们经由总线630彼此进行通信。

处理器602表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体而言,处理器602可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现其他指令集的处理器、或实现指令集的组合的处理器。处理器602也可以是一个或多个专用处理设备,诸如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。处理器602被配置为执行用于执行本文描述的操作的处理逻辑626。

计算机系统600可以进一步包括网络接口设备608。计算机系统600还可以包括视频显示单元610(例如,液晶显示器(lcd)、发光二极管显示器(led)、阴极射线管(crt)或触摸屏)、字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标)、以及信号生成设备616(例如,扬声器)

次存储器618可包括其上存储有一个或多个指令集(例如,软件622)的机器可访问存储介质(或者更具体地,计算机可读存储介质)632,该指令集具体化本文描述的方法或功能中的任何一个或多个。在由计算机系统600对软件622的执行期间,该软件622也可完全或至少部分地驻留在主存储器604之内和/或处理器602之内;该主存储器604和处理器602也构成机器可读存储介质。可以进一步在网络620上经由网络接口设备608发送或接收软件622。

虽然机器可访问存储介质632在示例性实施例中被示出为单个介质,但术语“机器可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可读存储介质”包括能够存储或编码由机器执行并且使该机器执行一个或多个实施例中的任何实施例的任何介质。术语“机器可读存储介质”应当相应地被认为包括但不限于固态存储器以及光和磁介质。

示例1是一种用于利用尖峰神经网络检测正则表达式的计算机设备,所述计算机设备包括用于执行以下步骤的电路:利用尖峰神经网络的第一节点集合提供逻辑状态机的第一状态,其中所述逻辑状态机表示要检测的正则表达式,并且其中所述尖峰神经网络的多个节点集合包括第一节点集合和第二节点集合,其中对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点用于对应于多个输入尖峰序列中不同的相应输入尖峰序列,并且对于所述多个节点集合中的每个节点,所述节点的相应模式用于启用所述节点以便响应于所述对应的输入尖峰序列,利用所述多个节点集合的相应节点集合配置所述逻辑状态机的相应状态。所述计算机设备还包括用于执行以下步骤的电路:在所述第一状态期间,在所述第一节点集合处接收对应于所述第一节点集合中的节点的输入尖峰序列;以及响应于所述输入尖峰序列,利用所述第二节点集合提供所述逻辑状态机的第二状态,包括用于配置所述第二节点集合中的每个节点的所述相应模式的电路。

在示例2中,示例1的主题可选地包括:其中,所述逻辑状态机的每个状态对应于所述多个节点集合中的不同的相应节点集合,其中,对于所述逻辑状态机的每个状态,所述状态包括所述对应的节点集合中的每个节点的所述相应模式的配置。

在示例3中,示例1和示例2中任意一个或多个示例的主题可选地包括进一步用于执行以下步骤的电路:响应于在所述第一节点集合处接收到所述输入尖峰序列,利用所述多个节点集合中的第三节点集合提供所述逻辑状态机的第三状态,包括用于配置所述第三节点集合中的每个节点的所述相应模式的电路,其中所述第三状态用于与所述第二状态并发。

在示例4中,示例1至示例3中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点用于配置所述逻辑状态机的不同的相应的一个且仅一个状态。

在示例5中,示例1至示例4中任意一个或多个示例的主题可选地包括:其中,所述第一节点集合中的另一个节点用于:接收另一个输入尖峰序列;以及响应于所述另一个输入尖峰序列,发信号通知所述第一节点集合中的每个节点的所述相应模式将被重新配置或维持。

在示例6中,示例1至示例5中任意一个或多个示例的主题可选地包括:其中,所述尖峰神经网络用于执行所述逻辑状态机的状态转换,每个状态转换用于检测所述正则表达式的相应字符。

在示例7中,示例1至示例6中任意一个或多个示例的主题可选地包括:其中,所述多个输入尖峰序列各自用于对应于不同的一个且仅一个字符,其中,对于所述多个输入尖峰序列中的每个输入尖峰序列,尖峰序列的相应尖峰模式用于指示所述正则表达式的所述对应字符的实例。

在示例8中,示例1至示例7中任意一个或多个示例的主题可选地包括计算机设备,所述计算机设备还包括用于执行以下步骤的电路:配置所述尖峰神经网络的初始化状态,包括用于配置所述第一节点集合中的每个节点的所述相应模式的电路,其中所述初始化状态将独立于所述多个输入尖峰序列中的任意输入尖峰序列被配置。

在示例9中,示例1至示例8中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的一个节点集合,所述一个节点集合中的节点用于输出指示已经满足搜索标准的信号,所述搜索标准包括字符串。

在示例10中,示例9的主题可选地包括:其中,所述节点集合中的每个节点用于输出指示已经满足所述搜索标准的相应信号。

示例11是至少一种机器可读介质,包括指令,所述指令在被机器执行时,使所述机器执行用于利用尖峰神经网络检测正则表达式的操作,所述操作包括:利用所述尖峰神经网络的第一节点集合提供逻辑状态机的第一状态,其中所述逻辑状态机表示要检测的正则表达式,并且其中所述尖峰神经网络的多个节点集合包括第一节点集合和第二节点集合,其中,对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点对应于多个输入尖峰序列中不同的相应输入尖峰序列,并且对于所述多个节点集合中的每个节点,所述节点的相应模式启用所述节点以便响应于所述对应的输入尖峰序列,利用所述多个节点集合的相应节点集合配置所述逻辑状态机的相应状态。所述操作还包括:在所述第一状态期间,在所述第一节点集合处接收对应于所述第一节点集合中的节点的输入尖峰序列;以及响应于所述输入尖峰序列,利用所述第二节点集合提供所述逻辑状态机的第二状态,包括用于配置所述第二节点集合中的每个节点的所述相应模式的电路。

在示例12中,示例12的主题可选地包括:其中,所述逻辑状态机的每个状态对应于所述多个节点集合中的不同的相应节点集合,其中,对于所述逻辑状态机的每个状态,所述状态包括所述对应的节点集合中的每个节点的所述相应模式的配置。

在示例13中,示例11至示例12中任意一个或多个示例的主题可选地包括所述操作还包括:响应于在所述第一节点集合处接收到所述输入尖峰序列,利用所述多个节点集合中的第三节点集合提供所述逻辑状态机的第三状态,包括配置所述第三节点集合中的每个节点的所述相应模式,其中所述第三状态与所述第二状态并发。

在示例14中,示例11至示例13中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点被耦合以用于配置所述逻辑状态机的不同的相应的一个且仅一个状态。

在示例15中,示例11至示例14中任意一个或多个示例的主题可选地包括:所述操作还包括:在所述第一节点集合中的另一个节点处:接收另一个输入尖峰序列;以及响应于所述另一个输入尖峰序列,发信号通知所述第一节点集合中的每个节点的所述相应模式将被重新配置或维持。

在示例16中,示例11至示例15中任意一个或多个示例的主题可选地包括:其中,所述尖峰神经网络执行所述逻辑状态机的状态转换,每个状态转换用于检测所述正则表达式的相应字符。

在示例17中,示例11至示例16中任意一个或多个示例的主题可选地包括:其中,所述多个输入尖峰序列各自对应于不同的一个且仅一个字符,其中,对于所述多个输入尖峰序列中的每个输入尖峰序列,尖峰序列的相应尖峰模式指示所述正则表达式的所述对应字符的实例。

在示例18中,示例11至示例17中任意一个或多个示例的主题可选地包括:所述操作还包括:配置所述尖峰神经网络的初始化状态,包括配置所述第一节点集合中的每个节点的所述相应模式,独立于所述多个输入尖峰序列中的任意输入尖峰序列来配置所述初始化状态。

在示例19中,示例11至示例18中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的一个节点集合,所述一个节点集合中的节点输出指示已经满足搜索标准的信号,所述搜索标准包括字符串。

在示例20中,示例19的主题可选地包括:其中,所述节点集合中的每个节点用于输出指示已经满足所述搜索标准的相应信号。

示例21是用于利用尖峰神经网络检测正则表达式的计算机方法,所述方法包括:利用所述尖峰神经网络的第一节点集合提供逻辑状态机的第一状态,其中所述逻辑状态机表示要检测的正则表达式,并且其中所述尖峰神经网络的多个节点集合包括第一节点集合和第二节点集合,其中,对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点对应于多个输入尖峰序列中不同的相应输入尖峰序列,并且对于所述多个节点集合中的每个节点,所述节点的相应模式启用所述节点以便响应于所述对应的输入尖峰序列,利用所述多个节点集合的相应节点集合配置所述逻辑状态机的相应状态。所述方法还包括:在所述第一状态期间,在所述第一节点集合处接收对应于所述第一节点集合中的节点的输入尖峰序列;以及响应于在所述第一节点集合处接收到所述输入尖峰序列,利用所述第二节点集合提供所述逻辑状态机的第二状态,包括配置所述第二节点集合中的每个节点的所述相应模式。

在示例22中,示例21的主题可选地包括:其中,所述逻辑状态机的每个状态对应于所述多个节点集合中的不同的相应节点集合,其中,对于所述逻辑状态机的每个状态,所述状态包括所述对应的节点集合中的每个节点的所述相应模式的配置。

在示例23中,示例21至示例22中任意一个或多个示例的主题可选地包括所述方法还包括:响应于在所述第一节点集合处接收到所述输入尖峰序列,利用所述多个节点集合中的第三节点集合提供所述逻辑状态机的第三状态,包括配置所述第三节点集合中的每个节点的所述相应模式,其中所述第三状态与所述第二状态并发。

在示例24中,示例21至示例23中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的每个节点集合,所述节点集合中的每个节点被耦合以用于配置所述逻辑状态机的不同的相应的一个且仅一个状态。

在示例25中,示例21至示例24中任意一个或多个示例的主题可选地包括:所述方法还包括:在所述第一节点集合中的另一个节点处:接收另一个输入尖峰序列;以及响应于所述另一个输入尖峰序列,发信号通知所述第一节点集合中的每个节点的所述相应模式将被重新配置或维持。

在示例26中,示例21至示例25中任意一个或多个示例的主题可选地包括:其中,所述尖峰神经网络执行所述逻辑状态机的状态转换,每个状态转换用于检测所述正则表达式的相应字符。

在示例27中,示例21至示例26中任意一个或多个示例的主题可选地包括:其中,所述多个输入尖峰序列各自对应于不同的一个且仅一个字符,其中,对于所述多个输入尖峰序列中的每个输入尖峰序列,尖峰序列的相应尖峰模式指示所述正则表达式的所述对应字符的实例。

在示例28中,示例21至示例27中任意一个或多个示例的主题可选地包括:所述方法还包括:配置所述尖峰神经网络的初始化状态,包括配置所述第一节点集合中的每个节点的所述相应模式,独立于所述多个输入尖峰序列中的任意输入尖峰序列来配置所述初始化状态。

在示例29中,示例21至示例28中任意一个或多个示例的主题可选地包括:其中,对于所述多个节点集合中的一个节点集合,所述一个节点集合中的节点输出指示已经满足搜索标准的信号,所述搜索标准包括字符串。

在示例30中,示例29的主题可选地包括:其中,所述节点集合中的每个节点用于输出指示已经满足所述搜索标准的相应信号。

本文描述了用于利用尖峰神经网络检测正则表达式的技术和架构。在上文描述中,为了便于解释,阐述了很多具体细节以提供对某些实施例的透彻理解。然而,对本领域技术人员而言将显而易见的是,某些实施例可在无需这些具体细节的情况下实施。在其他实例中,以框图形式示出结构和设备以避免使说明变得含糊。

在说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中的不同位置处出现短语“在一个实施例中”不一定全都指同一个实施例。

本文中的详细描述的一些部分在对计算机存储器内数据位的操作的算法和符号表示方面来呈现。这些算法描述和表示是计算机领域内技术人员使用的手法,它最有效地将其工作本质传达给本领域内其它技术人员。算法在本文中被一般地构思成达到所要求结果的自洽步骤序列。这些步骤是需要对物理量进行物理操纵的那些步骤。通常但非必须,这些量采用能够被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、元素、符号、字符、项、数字等被证明是方便的。

然而,应当记住,所有这些和类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非以其他方式明确指明,否则如从本文的讨论中显而易见的,可以理解,贯穿说明书,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论,指的是计算机系统或类似电子计算设备的动作和进程,该计算机系统或类似电子计算设备操纵在该计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成在该计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。

某些实施例还涉及用于执行本文中操作的装置。该装置可专门构造成用于所需目的,或者该装置可包括通用计算机,该通用计算机由存储在计算机内的计算机程序选择性地激活或重新配置。此类计算机程序可以存储在计算机可读存储介质中,这些计算机可读存储介质诸如但不限于任何类型的盘,包括软盘、光盘、cd-rom、磁光盘、只读存储器(rom)、诸如动态随机存取存储器(ram)(dram)的ram、eprom、eeprom、磁卡或光卡、或适用于存储电子指令且耦合至计算机系统总线的任何类型的介质。

本文呈现的算法和显示并非固有地与任何特定计算机或其他装置相关。可以将各种通用系统与根据本文教导的程序一起使用,或可以证明构造更专门的装置来实现所要求的方法步骤是方便的。各种这些系统的所需结构将从本文中的描述呈现。另外,某些实施例不是参考任何特定编程语言来描述的。将会理解,可以使用各种编程语言来实现本文所描述的此类实施例的教导。

除了本文所描述的内容,可对所公开的实施例及其实现作出多种修改而不背离其范围。因此,本文中的说明和示例应当被解释成说明性的,而非限制性的。本发明的范围应当仅通过参照所附权利要求书来界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1