用于神经网络的基于标记的装置和方法与流程

文档序号:11655054阅读:242来源:国知局
用于神经网络的基于标记的装置和方法与流程

本发明专利申请是国际申请号为pct/us2013/032546,国际申请日为2013年3月15日,进入中国国家阶段的申请号为201380025107.5,名称为“用于神经网络的基于标记的装置和方法”的发明专利申请的分案申请。

相关申请的交叉引用

本申请是于2011年9月21日提交的题为“elementarynetworkdescriptionforneuromorphicsystems(用于神经元形态系统的元素式网络描述)”的美国专利申请no.13/239,123的部分接续案,该申请通过援引明确纳入于此。

本申请涉及于2012年1月27日提交的共同拥有的题为“tag-basedapparatusandmethodsforneuralnetworks(用于神经网络的基于标记的装置和方法)”的美国专利申请s/n.13/xxx.xxx、于2011年9月21日提交的共同拥有的题为“elementarynetworkdescriptionforefficientimplementationofevent-triggeredplasticityrulesinneuromorphicsystems(用于在神经元形态系统中高效实现事件触发式可塑性规则的元素式网络描述)”的美国专利申请s/n.13/239,163、于2011年9月21日提交的共同拥有的题为“elementarynetworkdescriptionforefficientmemorymanagementinneuromorphicsystems(用于神经元形态系统中的高效存储器管理的元素式网络描述)”的美国专利申请s/n.13/239,155、以及于2011年9月21日提交的共同拥有的题为“elementarynetworkdescriptionforefficientlinkbetweenneuronalmodelsneuromorphicsystems(用于神经元形态系统中的神经元模型之间的高效链路的元素式网络描述)”的美国专利申请s/n.13/239,148,上述每一件申请的全部内容通过援引纳入于此。

版权

本专利文档公开的一部分包含受版权保护的资料。版权所有人不反对任何人对该专利文档或专利公开按照其在专利商标局的专利文件或记录中的原样进行复制,但除此以外保留其它所有版权权利。

cd-rom上的计算机程序列表附录

本专利的文件包括具有呈ascii文件格式的四十六(46)个只读存储器文件的压缩盘(cd-rom)的复制拷贝。文件详情在下表1中给出。这些ascii文件包含表示用于本公开的计算机程序列表的示例性实现的代码行。该cd-rom和其上所包含并在表1中列出的每一文件的全部内容通过援引纳入于此。

表1

本创新涉及人工神经网络的高效设计和实现。



背景技术:

绝大多数现有的神经元模型和系统包括具有简单单元(称为神经元(neuron))的网络,这些简单单元经由称为突触的连接彼此交互。此类神经元系统中的信息处理可并行地执行。

有许多专门软件工具可以帮助神经科学家模拟神经系统的模型。这些工具的示例可包括可能设计成主要供神经科学家使用的高级实现,诸如neuron、genesis、nest、brian、和/或其它高级实现中的一者或多者。此类工具可能通常要求大量专门知识,可能是麻烦的,并且可能要求定制才能在使用特定软件和硬件引擎来执行的模拟期间达成高效性能(尤其是在要求实时性能时,如在自主机器人应用中)。

类似地,低级实现(诸如汇编语言、低级虚拟机(llvm)语言、java字节码、因芯片而异的指令集、和/或其它低级实现中的一者或多者)可被设计用于x86、armtm、和/或其它硅芯片上的高效硬件实现。然而,此类实现可能不适合用于神经元系统的并行模拟,这主要是因为硅芯片不是为用于此类并行神经元模拟而设计的。

总体上,现有的办法具有实质性缺点,因为它们不能提供设计神经网络中的足够灵活性,要求专业知识、和/或因平台而异的定制才能利用专门硬件。

相应地,存在对用于以人类可阅读且机器可解读的简单且无歧义的方式来定义网络架构的通用高级网络描述的显著需求。



技术实现要素:

本发明尤其通过提供用于神经元形态系统的高级网络描述的装置和方法等来满足上述需求。

本发明的一个方面涉及一种实现神经网络的由计算机实现的方法。在一些实现中,该网络可包括多个元素。该方法可包括标识这多个元素的子集。该方法可包括向该子集的个体元素指派标记。给定标记的指派可被配置成使得能生成包括该子集的至少一部分元素的新网络元素。

在一些实现中,该标记可包括被配置成标识一个或多个个体元素的唯一性标识符。

在一些实现中,个体元素可从这多个元素中随机地选择。该子集的个体元素可包括单元。该标记可包括串(strng)标识符。

在一些实现中,该标记可包括字母数字标识符,其可被适配成标识该子集的相应各个元素的空间坐标。该子集可包括多个节点。该字母数字标识符可包括这多个节点中的至少一个节点的标识符。

在一些实现中,该新网络元素可包括连接。该连接可包括以下一者或多者:(i)突触、(ii)结、和/或与连接相关联的其它特征。

本发明的另一方面涉及一种在神经网络中生成多个连接的由计算机实现的方法。该神经网络可包括多个元素。在一些实现中,该方法可包括以下一者或多者:(i)执行至少包括第一标记和第二标记的第一逻辑表达式,至少部分地基于该执行,(ii)标识这多个元素的第一子集和第二子集,(iii)生成第一子集的至少一部分与第二子集的至少一部分之间的多个连接,和/或其它操作。在一些实现中,第一子集的一个或多个个体元素可包括第一标记。第二子集的个体元素可包括第二标记。

在一些实现中,第一子集和/或第二子集的个体元素可包括该网络的节点。该方法可包括向第一子集的一个或多个个体元素指派第一标记。

在一些实现中,第一标记或第二标记中的一者或两者可由有限生存期来表征。

本发明的又一方面涉及一种动态划分计算机化神经网络的方法。在一些实现中,该方法可包括以下一者或多者:(i)标识该网络的元素子集、(ii)将标记指派给该子集的每一元素、和/或其它操作。根据一些实现,该标识和该指派可协作以使得能使用单个选择操作来选择该子集的一个或多个个体元素。

在一些实现中,该网络可包括多个元素。该子集可包括这多个元素的多个节点。

在一些实现中,标识该子集可以至少部分地基于执行包括一个或多个关键字(包括and(与)、not(非)、or(或)和/或其它关键字)的布尔表达式。

在一些实现中,该方法可包括以下一者或多者:(i)标识该网络的另一元素子集、(ii)将另一标记指派给该另一子集的每一元素、(iii)启用该子集内的至少一部分元素与该另一子集的元素之间的多个连接、和/或其它操作。

在一些实现中,这多个连接中的一个或多个个体连接可包括突触和结之一。这多个连接中的一个或多个个体连接可至少部分地基于该标记和该另一标记来启用。

本发明的又一方面涉及一种处理装置。在一些实现中,该处理装置可包括被配置成存储多个指令的非易失性存储介质,该多个指令在被执行时可以实行根据一种方法的对神经网络的动态划分。该方法可包括以下一者或多者:(i)标识该神经网络的元素子集、(ii)将标记指派给该元素子集的每一元素、和/或其它操作。该标记可包括被配置成标识一个或多个个体元素的标识符。在一些实现中,指派标记可被配置成使得能生成包括该元素子集的新网络元素。

在一些实现中,该方法可以利用专用集成电路(asic)使用asic指令集来实现。

在一些实现中,该方法可包括由该处理装置执行被配置成标识该子集的一个或多个个体元素的数学表达式。该数学表达式可包括布尔运算。

在一些实现中,该子集的一个或多个个体元素可以使用随机选择操作来选择。

在一些实现中,该方法可包括将该标记指派给该新网络元素。将标记指派给该子集可被配置成使得能将该网络表示为有向图。

在一些实现中,该方法可包括将第二标记指派给该子集。第二标记可与前述标记相异。

本发明的进一步方面涉及一种神经元网络逻辑。在一些实现中,该神经元网络逻辑可包括在数字处理器上执行的一系列计算机程序步骤和/或指令。在一些实现中,该逻辑可包括硬件逻辑(例如,在asic或fpga中实施)。

本发明的又一方面涉及一种计算机可读装置。在一些实现中,该装置可包括其上存储有至少一个计算机程序的存储介质。该程序可被配置成在被执行时实现人工神经元网络。

本发明的另一方面涉及一种系统。在一些实现中,该系统可包括有多个节点与之相关联的人工神经元(例如,尖峰)网络、受控装置(例如,机器人或假体装置)、和/或其它组件。

在参照附图考虑了以下描述和所附权利要求之后,本公开的这些以及其它目的、特征和特性、以及有关结构元素的操作方法和功能及部件组合和制造的组织体系将变得更为明了,所有附图构成本说明书的一部分,其中相同的附图标记在各图中指示对应部件。然而要清楚理解的是,附图仅用于解说和描述目的,并且无意作为对本公开的限定的定义。如在本说明书及所附权利要求中使用的,单数形式的“一”、“某”和“该”包括复数指示对象,除非上下文清楚规定并非如此。

附图说明

图1是解说根据一个或多个实现的包括多个节点和节点连接的人工神经网络的框图。

图2是解说根据一个或多个实现的作为网络对象的神经节点类型的框图。

图3a是解说根据一个或多个实现的节点互连的框图。

图3b是解说根据一个或多个实现的包括均匀树突的节点互连的框图。

图3c是解说根据一个或多个实现的非均匀节点互连的框图。

图4是解说根据一个或多个实现的公共多房室神经元(mcn)的框图。

图5是解说根据一个或多个实现的公共节点声明的示例性伪码。

图6是解说根据一个或多个实现的使用公共节点定义的公共节点互连的框图。

图7是解说根据一个或多个实现的包括两个输入接口和单个输出接口的私有mcn的框图。

图8是解说根据一个或多个实现的私有神经元互连的框图。

图9是解说根据一个或多个实现的节点子集标记添加的图形。

图10是解说根据一个或多个实现的空间标记继承的框图。

图11是解说end引擎的各种示例性实现的框图。

图12是解说根据一个或多个实现的使用hlndgui界面进行节点创建的框图。

图13是解说根据一个或多个实现的使用hlndgui界面进行节点子集选择的框图。

图13a是解说根据一个或多个实现的使用hlndgui界面进行节点子集选择的框图。

图13b是解说根据一个或多个实现的使用hlndgui界面进行节点子集选择的框图。

图14是解说根据一个或多个实现的使用hlndgui界面进行节点选择、标记添加和连接生成的框图。

图15是解说根据一个或多个实现的使用hlnd和end描述进行神经网络计算的框图。

图16是解说根据一个或多个实现的可与hlnd框架联用的计算机化装置的框图。

图17是解说根据一个或多个实现的可与hlnd框架联用的数据流的框图。

本文公开的所有附图是版权2013brain公司。保留所有权利。

具体实施方式

现在将参照附图来详细描述本公开的实现,提供附图仅作为解说性示例以便使本领域技术人员能够实践本公开。值得注意的是,以下的附图和示例并不旨在将本公开的范围限定于单个实现,相反,藉由与一些或全部所描述或所解说的元素的交换或组合,其它实现也是可能的。在任何方便的地方,相同附图标记将贯穿附图始终用于指代相同或类似部分。

在这些实现的某些元素可部分或完全使用已知组件来实现的情况下,将仅描述此类已知组件的对于理解本公开所必要的那些部分,并且此类已知组件的其它部分的详细描述将被省略以便不会混淆本公开。

在本说明书中,示出单数组件的实现不应被认为构成限定;确切而言,本公开旨在涵盖包括多个相同组件的其它实现,反之亦然,除非本文另外明确声明。

此外,本公开涵盖了本文藉由解说所引述的组件的现在和将来已知的等效物。

如本文所使用的,术语“总线”一般意在标示被用于访问突触和神经元存储器的所有类型的互连或通信架构。“总线”可以是光学、无线、红外、和/或另一类型的通信介质。总线的确切拓扑可以是例如标准“总线”、阶层式总线、片上网络、地址-事件-表示(aer)连接、和/或用于访问例如基于脉冲的系统中的不同存储器的其它类型的通信拓扑。

如本文所使用的,术语“计算机”、“计算设备”、和“计算机化设备”可包括以下一者或多者:个人计算机(pc)和/或微型计算机(例如,台式计算机、膝上型计算机、和/或其它pc)、大型计算机、工作站、服务器、个人数字助理(pda)、手持式计算机、嵌入式计算机、可编程逻辑器件、个人通信器、平板计算机、便携式导航辅助、装备有j2me的设备、蜂窝电话、智能电话、个人集成通信和/或娱乐设备、和/或能够执行指令集并处理传入数据信号的任何其它设备。

如本文所使用的,术语“计算机程序”或“软件”可包括执行功能的人类和/或机器可认知步骤的任何序列。此类程序可用包括以下一者或多者的编程语言和/或环境来呈现:c/c++、c#、fortran、cobol、matlabtm、pascal、python、汇编语言、标记语言(例如,html、sgml、xml、voxml)、面向对象的环境(例如,共用对象请求代理架构(corba))、javatm(例如,j2me、javabeans)、二进制运行时环境(例如、brew)、和/或其它编程语言和/或环境。

如本文所使用的,术语“连接”、“链路”、“传输信道”、“延迟线”、“无线”可包括任何两个或更多个实体(无论是物理的还是逻辑/虚拟的)之间的因果链路,该链路可以实现各实体之间的信息交换。

如本文所使用的,术语“存储器”可包括集成电路和/或适配成用于存储数字信号的其它存储设备。藉由非限定性示例,存储器可包括以下一者或多者:rom、prom、eeprom、dram、移动dram、sdram、ddr/2sdram、edo/fpms、rldram、sram、“闪”存(例如,nand/nor)、忆阻器存储器、psram、和/或其它类型的存储器。

如本文所使用的,术语“微处理器”和“数字处理器”一般意在包括数字处理设备。藉由非限定性示例,数字处理设备可包括以下一者或多者:数字信号处理器(dsp)、精简指令集计算机(risc)、通用(cisc)处理器、微处理器、门阵列(例如,现场可编程门阵列(fpga))、pld、可重配置计算机织构(rcf)、阵列处理器、安全微处理器、专用集成电路(asic)、和/或其它数字处理设备。此类数字处理器可被包含在单个酉ic管芯上,或跨多个组件分布。

如本文所使用的,术语“网络接口”是指与组件、网络、和/或进程的任何信号、数据、和/或软件接口。藉由非限定性示例,网络接口可包括以下一者或多者:火线(例如,fw400、fw800等)、usb(例如usb2)、以太网(例如,10/100、10/100/1000(千兆比特以太网)、10-gig-e(10千兆比特以太网)等)、moca、coaxsys(例如,tvnettm)、射频调谐器(例如,带内或oob、电缆调制解调器等)、wi-fi(802.11)、wimax(802.16)、pan(例如802.15)、蜂窝(例如,3g、lte/lte-a/td-lte、gsm等)、irda族、和/或其它网络接口。

如本文所使用的,术语“突触信道”、“连接”、“链路”、“传输信道”、“延迟线”和“通信信道”包括任何两个或更多个实体(无论是物理的(有线或无线)、还是逻辑/虚拟的实体)之间的链路,该链路实现各实体之间的信息交换,并且可由影响此信息交换的一个或多个变量来表征。

如本文所使用的,术语“wi-fi”包括以下一者或多者:ieee标准802.11、ieee标准802.11的变体、与ieee标准802.11有关的标准(例如,802.11a/b/g/n/s/v)、和/或其它无线标准。

如本文所使用的,术语“无线”意指任何无线信号、数据、通信、和/或其它无线接口。藉由非限定性示例,无线接口可包括以下一者或多者:wi-fi、蓝牙、3g(3gpp/3gpp2)、hsdpa/hsupa、tdma、cdma(例如,is-95a、wcdma等)、fhss、dsss、gsm、pan/802.15、wimax(802.16)、802.20、窄带/fdma、ofdm、pcs/dcs、lte/lte-a/td-lte、模拟蜂窝、cdpd、卫星系统、毫米波或微波系统、声学、红外(即,irda)、和/或其它无线接口。

综览

本公开尤其提供了可被配置成以简单和无歧义方式来定义神经元网络架构的计算机化高级网络描述装置和方法等。

在一些实现中,一种计算机化装置可被配置成实现高级网络描述(hlnd)内核。该hlnd内核可使用户能使用人类可阅读且机器可解读的统一且无歧义的表示来定义神经元形态网络架构。

在一些实现中,hlnd格式可被用于定义节点类型、节点至节点连接类型、实例化针对不同节点类型的节点实例、使用标记来动态地标识和/或选择网络的子集、使用此类子集来生成这些节点之间的连接的实例、和/或与节点和/或标记相关联的其它信息。

hlnd格式可以提供计算神经科学家所要求的一些或所有灵活性并且可以向在建模神经元方面经验有限的用户提供用户友好的界面。

在一些实现中,hlnd内核可包括至元素式网络描述(end)的接口。end引擎可被配置成以独立于硬件的方式来高效表示神经元系统和/或可以实现hlnd模型描述至用于由各种处理模块执行的硬件指令的无缝转译。

在一些实现中,hlnd框架可包括图形用户界面(gui),其被配置成使用户尤其能创建节点、选择节点子集、经由gui使用图形动作来连接选定子集、和/或执行与本公开一致的其它操作等。gui引擎可被配置成生成hlnd语句,其可对应于以上用户动作,而无需来自用户的进一步输入。hlnd框架可被配置成将hlnd语句转换为经由gui呈现的对网络的图形表示。hlnd可包括一个或多个组件,这些组件包括(i)使用gui的网络图形描绘、(ii)hlnd语句的对应列表、和/或其它组件。hlnd的一个或多个组件可被配置成一致地表示关于网络的相同信息,因为一种表示中的变化可被一致地应用于其它表示,藉此来反映对该网络的一些或所有修改。

在一些实现中,hlnd可应用于任意的图结构(例如,具有任意复杂架构的神经网络)。

现在提供本公开的装置和方法的各个实现的详细描述。尽管本公开的某些方面可以在用于设计神经网络架构的高级网络描述格式的上下文中最好地理解,但本公开并不被如此限定并且本公开的实现可被用于实现为以硬件无关方式来高效表示其它系统(例如,生物或金融)而最优化的指令集。

本公开的实现可以例如部署在神经元形态计算机系统的硬件和/或软件实现中。在一些实现中,机器人系统可包括实施在专用集成电路中的处理器,该处理器可被适配成或配置成在嵌入式应用(诸如假体设备)中使用。

图1解说了可用于本公开的神经元网络配置的一个实现。图1中示出的网络100包括不同类型的节点(图1中的节点类型102、104)。如以下详细描述的,hlnd框架允许用户动态地选择网络节点的任意子集(图1中的子集106、108)并经由连接(图1中的连接110)互连选定子集的节点。网络100的一些节点(例如,节点104_1)可以接收来自一个以上节点(例如,图1中的节点102_1、102_2)的输入。反之,一些节点(诸如,节点102_1、102_2)可以向若干节点递送输出,如图1中所解说的。

hlnd框架设计综览

根据一个或多个实现,示例性hlnd框架可被配置成促成神经网络(诸如图1的网络100)的设计。一些实现可以提供描述具有任意复杂性的神经元网络的能力。一些实现可以促成对网络生成过程使用预定义节点和/或预定义连接类型。即,不同节点类型的多个实例可以被生成、布局、和/或使用不同连接类型的多个实例来连接。一些实现可以提供对新节点类型的灵活定义,从而新节点类型可包括元素式网络描述(end)单元类的实现和/或网络对象(例如,节点布局、连通性集、和/或这些的组合)的实现。新定义的节点类型可在网络生成过程中使用。end框架在以上纳入的题为“elementarynetworkdescriptionforneuromorphicsystems(用于神经元形态系统的元素式网络描述)”的美国专利申请s/n.13,239,123中描述。一些实现可以提供对连接类型的灵活定义。连接类型可包括end结类、end突触类、和/或其它类的实现。在一个实现中,新定义的连接类型可在网络生成过程中使用。一些实现可促成对一些或所有网络元素(包括节点、连接、节点集合、和/或其它网络元素)使用通用标记(或标签)。在一些实现中,标记可被用于标识节点群和/或连接群。标记可被用于动态地选择网络的各部分。一个或多个布尔运算,诸如and、or、not、和/或其它布尔运算可被应用于标记。一些实现可以提供使用图形用户界面(gui)来实现hlnd网络的能力。个体描述构造可以对应于gui中的用户动作。在一些实现中,中等复杂性的模型可以使用hlndgui界面来建成而无需使用键盘。在一些实现中,hlndgui可以使用触摸屏、光笔输入设备、和/或其它输入技术来操作。一些实现可以促成用于定义网络解剖结构的hlnd语句的呈现。定义网络解剖结构可包括以用户可阅读语言(自然英语)来对节点和/或连接进行布局以便于非计算机专业网络设计者理解。一些实现可以提供使用hlnd来生成end实例的能力。

网络定义方法

定义神经网络可包括定义要创建多少和/或什么类型的节点、如何布局这些节点、如何连接这些节点实例(例如,图1的网络布局)、和/或其它操作。在一些实现中,hlnd定义方法包括(1)定义新节点类型和/或用于这些新节点类型的连接类型,(2)定义网络内的节点布局(例如,要创建多少和/或什么类型的节点,以及如何在正被创建的网络内安排这些节点),(3)定义这些节点如何彼此连接,和/或其它操作。在神经网络构造期间,以上步骤1-3可个体地和/或顺序地重复多次。在一些实现中,以上步骤1可被跳过并且可取而代之在定义网络时使用预定义类(其定义期望节点类型)。

在一些实现中,专用软件包可被配置成(i)处理定义网络的hlnd语句和/或(ii)实例化网络节点和连接。这一处理和/或实例化可能经受一个或多个约束,包括(i)仅所定义的节点类型和所定义的连接类型可被实例化并在hlnd网络定义过程中使用,(ii)仅现有节点实例之间的连接可被实例化,和/或其它约束。换句话说,根据一个或多个实现,在定义连接的hlnd过程中仅可使用与所定义的节点实例相对应的连接。在一些实现中,专用软件包可包括end引擎,其可被配置成生成网络模型的end实例,如在以上纳入的共同拥有的题为“elementarynetworkdescriptionforneuromorphicsystems(用于神经元形态系统的元素式网络描述)”的美国专利申请s/n.13/239,123中所描述的。

定义节点类型

节点类型的定义可以提供节点的实现指令,这些实现指令可被配置成指令网络处理装置根据节点类型在节点实例化期间执行特定步骤。在一些实现中,节点定义可进一步指定节点类型的内部实现(例如,指定神经元类型的动态)。在一个或多个实现中,节点定义可包括该节点的输入端口和/或输出端口的定义。

在一些实现中,节点类型可被定义为简单节点,其中节点定义指定该节点的“内部构造”。节点的内部构造可包括end单元(即,神经元)的实现和/或神经元房室(compartment)的end实现。

在一些实现中,节点类型可被定义为复杂网络对象,其可以提供关于如何实例化预定义节点类型的指令、关于如何连接各节点的指令、和/或其它指令。关于如何连接各节点的指令可包括对具有任意复杂性的网络的hlnd描述,被配置成指定节点和/或连接实例生成的细节的算法、和/或其它指令。本领域技术人员将领会,术语“网络对象”可被用于描述可使用hlnd框架来实现的任何网络。

在hlnd框架描述内,个体节点类型可包括节点内连接并且可以定义用于传入连接和/或传出连接的一个或多个接口。

作为end单元的节点类型

在一些实现中,end单元类可以使用节点实现细节(例如,更新规则、事件规则)来生成。与end单元类相关的附加细节参见例如美国专利申请s/n.13,239,123。

作为网络对象的节点类型

在一些实现中,网络对象的定义可以类似于网络的定义的方式来配置,其中主要区别在于网络对象是可重用的。即,可以实例化一网络对象的多个实例。网络对象的一些或所有元素(例如,单元、标记、和/或其它元素)可以是有范围的,即,它们可能具有与特定范围相关联的有限生命期。在一些实现中,网络对象可被配置成提供可被用于将该网络对象与其它节点相连接的i/o接口。网络对象可以类似于模型中的构件块(参见例如http://www.mathworks.com/products/simulink/index/html)、计算机辅助设计(cad)软件中的p-cell(p细胞)、c++语言代码中的函数/类、和/或其它编程元素。

在一些实现中,网络对象可被允许使用在外部(即,在这一节点类型的范围外)定义的预定义节点。因此,父节点(即,网络对象)和(诸)子节点(即,在网络对象中使用的节点类型)可能不包括相同类型的节点。换句话说,根据一些实现,‘x’类型节点的定义可以不实例化‘x’类型节点。

现在参照图2,网络对象的一个示例性实现被解说和详细描述。网络对象200可包括以下一者或多者:网络定义、对象输入/输出(i/o)接口的规范、和/或其它信息。

网络定义可以指定对象实例生成的一个或多个步骤。网络定义可经由标准hlnd网络定义来实现。标准hlnd网络定义可包括使用预定义分布函数来指定每一预定义节点的实例数量和/或其空间安排的节点实例化和/或布局。标准hlnd网络定义可包括连通性描述,其可定义节点之间的连通性。在一些实现中,连通性描述可以定义和/或使用节点的空间突起。作为非限定性示例,定义节点的空间突起可包括定义节点的轴突和/或树突突起(例如,(i)树突幅员、(ii)突触结的分布、(iii)轴突末端的分布),定义节点(例如,模型神经元)的轴突如何连接至另一节点(例如,模型神经元)的树突、和/或定义与节点的空间突起相关联的其它信息。

藉由非限定性示例,标准hlnd网络定义可被用于(i)定义预定义节点的特定布局;(ii)定义多房室神经元(例如,与预定义end结相连接的预定义end单元的集合);(iii)定义包括多个神经元的任意复杂的网络;和/或定义与标准hlnd网络定义相关联的其它信息。在一些实现中,网络可包括突触和/或结。

在一些实现中,网络的定义可包括使用算法的实例生成,该算法可被配置成使用以上对象定义来描述网络对象实例生成的一个或多个步骤。藉由非限定性示例,该算法可包括以下一者或多者:(i)使用预定义节点类型和/或定义此类节点类型的实例生成过程的算法;(ii)使用预定义节点类型和/或连接类型和/或定义此类节点和/或连接类型的实例生成过程的任意算法;(iii)定义树突树的算法;和/或其它算法。

以上示例性算法可以利用实现神经房室的多个预定义end单元类型和/或被设计成以定义各房室的布局和其间的连接的算法将此类房室相连接的预定义end结类型。(参见例如cuntzh.、forstner,f.、borst.a和hausser,m.的(2010)“oneruletogrowthemall:ageneraltheoryofneuronalbranchinganditspracticalapplication.ploscomputationalbiology,6(8)(用一个规则来使之全体生长:神经元分支化的一般理论及其实践应用,plos计算生物学,6(8))”,其全部内容通过引用纳入于此)。i/o接口可以指定为网络对象实现的输入/输出连接。

连接类型的定义

根据一个或多个实现,在hlnd内,连接类型的定义可以提供必要的实现细节(例如,事件前规则、事件后规则、更新规则、和/或其它细节)以生成包括(i)end突触或(ii)end结中的一者或两者的连接。

实例化节点

在一些实现中,hlnd可以定义管控节点实例化的规则。hlnd节点实例化指令可随后被提供给解读这些指令并实例化适当节点的软件包(例如,end内核)。根据一些实现,在实例化期间,一些或所有节点类型可被等同对待,不管它们是简单节点(例如,神经元的end实现)还是网络对象(例如,整体网络描述)。在一些实现中,可能需要以下信息来实例化和布局节点:(i)要实例化的节点类型,(ii)要实例化的节点类型的实例数量,和/或其它信息。

以基本形式,hlnd实例化语句可以使用与给定节点类型相对应的默认定义来创建该节点类型的n个实例。在实例化期间,可以使用附加参数以尤其(i)设置用于初始化被实例化的节点类型的参数,(ii)设置被实例化的节点如何在空间中布局(例如,如何指派位置标记),(iii)将附加标记添加至新的节点实例,和/或执行与hlnd实例化相关联的其它操作。在hlnd内,操作范围内可用的所定义的节点类型可被无限制地实例化。

在一些实现中,位置坐标(即,空间标记)可在节点实例化期间被指派给所生成的节点实例。为了实现这一功能性,hlnd框架可以支持使用向每一个被实例化的节点指派空间标记的预定义分布函数。此种分布函数可被配置成从给定的概率密度函数采样n个点。藉由非限定性示例,hlnd语句:

uniform(n,boundaryparameters)

可以描述在由边界参数(boundaryparameters)自变量所定义的空间范围内采样均匀(uniform)分布的n个点。类似地,hlnd语句:

normal(n,sigma,boundaryparameters)

可以描述在由边界参数(boundaryparameters)所指定的空间范围内采样n个正态(normal)分布点。

除了个体生成的节点可以具有的唯一性id标记之外,可在实例化过程期间任选地指派额外标记并且这些额外标记可被用于标识新实例化节点的集合。在一些实现中,特殊的保留标记(例如,“in”(输入)、“out”(输出)、或其它特殊的保留标记)可被用于指定所生成的单元是网络的输入或输出接口,因此使得这些节点是从外部可访问的(可读和/或可写)。示例(example)性hlnd调用在以下列表1中示出:

a)创建100个‘exc’节点类型(假定‘exc’end类/网络对象存在)

example1_exc_neurons=(100,‘exc’)

b)创建200个‘exc’节点类型并使用给定pdf(概率分布函数)来分布它们:

example2_exc_neurons=(200,‘exc’,_exc_parameters_,pdf)

c)创建实现视网膜(retina)的网络对象类型的1个节点(假定先前已实现‘retina’网络对象类型):

example3_retina=(1,‘retina’,_retina_parameters_)

列表1。

形态/扩展

在一些实现中,在连接实例化期间可以使用形态/扩展。以上关于图2描述的形态定义指定了被实例化的节点可如何突起和/或扩展到网络空间中。即,形态可以定义空间延及范围,其中被实例化的节点被允许(i)“接收”来自该空间扩展的传入连接,和/或(ii)向该空间扩展“发送”传出连接。注意,根据一些实现,节点扩展的添加可以不更改该节点的大小和/或位置。取而代之,各扩展可以使节点能在节点互连的实例化期间“搜索”其它节点。换句话说,扩展可以提供节点的附加“视图”,该视图可在连接节点的过程期间使用。

在一些实现中,可以仅在各节点交迭的情况下才允许使用空间标记来连接节点。各节点可默认具有零扩展。在一些实现中,仅共处节点可被连接。为了扩展节点连通性,可以定义非零节点输入(树突)和节点输出(轴突)突起。在一些实现中,这些突起可在连接任何两个节点时使用。例如,一个节点的输出突起可被连接至另一节点的输入突起。

为了创建扩展,根据一个或多个实现,可能要求以下信息中的一些或所有:(1)用于标识为其创建扩展的各节点的源标记;(2)被用于标识将创建的扩展的扩展标记;和/或(3)定义i/o点分布以定义在其中节点能接收传入连接的空间/扩展,并定义在其中节点能具有传出连接的空间。

对于传入扩展,可以指定接收末端的分布。接收末端的分布可类似于神经元情形中的树突(dendrite)幅员、和/或突触结分布。对于传出扩展,可以指定突起幅员。突起幅员可以类比于轴突(axon)末端。

对于接收末端和突起幅员的分布,hlnd可以支持预定义函数(例如,有界高斯和/或均匀分布)。一般来说,可以使用任意密度函数。

示例性hlnd调用在以下列表2中示出:

example1_exc_neurons_axon=(‘example1_exc_neurons’,pdf1)

example2_exc_neurons_dendrite=(‘example2_exc_neurons’,pdf2)

列表2。

在另一办法中,连接被实例化而不使用形态/扩展。

连接节点

hlnd连接语句可包括被配置成实例化从一个节点集到另一节点集的(给定连接类型的)连接的指令。在一些实现中,可能要求以下信息中的一些或所有以便实现这些节点至节点连接:(1)“来自子集”、(2)“去往子集”、和/或(3)“连接类型”。“来自子集”可包括由唯一性地标识源节点/扩展(例如,连接所将源自的节点/扩展)的标记所选择的节点子集。“去往子集”可包括由唯一性地标识目的地节点/扩展(例如,连接所将终结于的节点/扩展)的标记所选择的节点子集。连接类型可包括用于将<来自子集>节点/扩展连接至<去往子集>节点/扩展的连接类型。

在一些实现中,hlnd连接语句可以用从所有可用的<来自标记>节点到所有可用的<去往标记>节点的给定连接类型来指导连接实例化。根据一些实现,连接参数可被用于滤除连接。即,过滤器约束可应用于一些或所有可能的<来自标记>至<去往标记>连接。因此,可能的<来自标记>至<去往标记>连接的子集可被实例化,这可允许从<来自标记>至<去往标记>的任意连接映射的实例化。在一些实现中,连接可被表达为函数调用。在一些实现中,连接可使用表格来表达。在一些实现中,连接过滤器可被配置成生成所有至所有连接,其中所有的<来自标记>被连接至所有的<去往标记>。

顺便提及,可在各种实现中使用两种注记格式<来自标记>和<来自子集>,因为这两种注记均可以使hlnd为子集生成连接。例如,注记<‘来自标记1’and‘来自标记2’>可以描述具有标记‘来自标记1’和‘来自标记2’两者的节点的集合(例如,集合1)。相应地,可代替地使用注记:<‘集合1’>而产生相同结果。

藉由非限定性示例,可以采用以下连接语句:

exc2exc=(pre='example1_exc_neurons_axon',

post='example2_exc_neurons_dendrite',100connections/cell,

syntype='glu',_other_parameters_)。

在一些实现中,hlnd连接语句可被配置成实现参数化的连接建立,从而各参数可传递给连接类型以设置连接实例中的连接变量。在一些实现中,连接参数可被用于设置突触节点连接的权重。在一些实现中,节点信息(例如,“来自节点”和“去往节点”的位置)可被用于基于节点之间的距离来设立连接权重。

藉由非限定性示例,可以采用以下连接语句中的一个或多个:(1)将每一<来自节点>节点连接至n个<去往节点>节点;(2)将n个<来自节点>节点连接至每一<去往节点>节点;和/或(3)从所有可能连接中随机采样n个。

在一些实现中,节点可包括位置标记和/或可以具有零默认扩展。此类节点可以连接至共处节点。用空间标记来连接节点可能要求交迭,从而交迭节点可被连接。

现在参照图3a,示出并详细描述了hlnd框架节点互连的示例性实现。图3a的网络300可包括a节点群302和b节点群304。为了清楚,网络300可使用一维配置来配置,从而具有匹配的x坐标306(即,图3a中节点索引i=1:7)的各节点被允许经由连接308来连接。具体地,当i=j时(诸如举例而言,分别为图3a中的节点312、314),可以允许来自节点群302的节点a_i连接至节点群304的相应节点b_j。由实线308解说了若干可能连接。

在一些实现中,诸如在图3b-3c中所解说的,节点扩展可被分别添加至各节点群的节点,以便实现复杂连接并实现更为灵活的连接映射。节点扩展可被尤其用于将源节点(例如,图3b中的群322的节点a)的空间坐标映射到接收节点(例如,图3b中的节点324)。这些扩展可被用于定义潜在连接的概率密度函数,诸如在图3c中解说的示例性实现中那样。

图3b解说了包括节点扩展的节点至节点连接配置的示例性实现。图3b的网络320可包括a节点a_1:a_7的群322和单个b节点324。图3b的网络320可使用单个维度来配置,从而具有匹配的x坐标306的各节点可以形成连接。图3b的b节点324可包括具有维度332的均匀树突扩展330。a节点群322的个体节点(诸如节点322_1)可包括具有维度328的均匀轴突扩展326。轴突维度328可小于树突维度332。术语“均匀扩展”可被用于描述用于实现交迭扩展(这一示例中的轴突或树突)的连接的均匀概率分布。即,根据一些实现,节点连接可被以均等的可能性提供其扩展交迭。对于一维扩展(例如,图3b中的扩展330),这可对应于沿扩展330的延及范围332的均匀连接概率。对于多维扩展,均匀扩展可对应于在所有维度中的均匀连接概率。

当轴突326_i与树突330的空间维度332交迭时,图3b中解说的网络配置可以允许a群322的节点a_i与b_1节点324之间的连接。如图3b中所解说的,节点a_3、a_4、a_5可经由这些连接来被连接至节点b_1,如图3b中的实箭头308所描绘的。其它a节点之间的不活跃(例如,不被允许的)连接318在图3b中由虚箭头描绘。标记<‘轴突’>和<‘树突’>可指代节点的另一‘视图’。

如图3b中所解说的,可以构造以下扩展:(i)至图3b中的b节点330的均匀圆形扩展(表示为树突);(ii)至图3b中的所有a节点的均匀圆形扩展(表示为轴突);和/或(iii)将<a轴突>连接至<b树突>。a至b节点连接是可能的并且可被实例化,因为发送和接收扩展两者可以是均匀的。在这一示例中,连接语句正在查找扩展交迭——即,节点<a>的<轴突>扩展是否与节点<b>的<树突>扩展交迭。

在hlnd框架内,各节点可包括不同的视图,诸如举例而言,轴突或树突。节点标记‘轴突’或‘树突’可在hlnd中被用于指代同一节点。轴突/树突可以具有不同的空间性质。

图3c解说了包括非均匀节点扩展的节点至节点连接配置的示例性实现。图3c中描绘的网络338可包括a节点的群322和b节点344。这些a节点中的个体节点可包括均匀扩展326。b节点344可包括非均匀扩展340。术语非均匀扩展可被用于描述跨扩展的至少一个维度具有非均匀连接概率分布的节点扩展(轴突或树突)。对于一维扩展(例如,图3c中的扩展340),这对应于沿扩展延及范围342的非均匀扩展连接概率分布。在一些实现中,扩展连通性参数p可包括连接似然性,其可由作为扩展延及范围342的函数的概率函数来表征。

非均匀扩展340的连通性剖视(参见图3c)可使用高斯分布和/或其它分布的形状来配置。扩展340可以节点344为中心。扩展340可由特定方差σ2和半径348来表征。

经由非均匀扩展的节点连接在图3c中解说。当轴突326_i与非均匀树突340的空间维度342交迭时,图3c中解说的网络配置可以允许a群322的节点a_i与b节点344之间的连接。网络338中的可能连接包括a_3、a_4、…、a_10轴突至b树突,因为a_1轴突、a_2轴突、和a_11轴突不与树突340空间扩展342交迭。

非均匀扩展(例如,图3c中的扩展340)可以使连接选择偏向与非均匀树突的最高概率区域交迭的轴突。虽然扩展维度交迭可被用于标识所有可能的连接,但对可能的连接的采样可以遵循扩展的连通性剖视(概率)。当选择可能的连接的子集时,可能需要考虑该扩展的(描述连接似然性的)连通性剖视(形状)。藉由非限定性示例,当将单个任意<a轴突>326连接至<b树突>340时(参见图3c),最有可能的结果可能是节点a_6与节点344之间的连接,而非节点a_1、a_10与节点344之间的连接。

在一些实现中,用于使用非均匀扩展来连接节点群体的hlnd示例性操作序列可以是:(1)将以节点为中心的具有固定半径r1的高斯扩展添加至诸b节点并将这些扩展标记为<树突>;(2)将具有固定半径r2的均匀扩展添加至诸a节点并将这些扩展标记为<轴突>;以及(3)将n个随机<a轴突>连接至<b树突>。可能的连接可以是在<a>节点的<轴突>扩展与<b>节点的<树突>扩展交迭之处。被实例化的连接可对应于最高连通性。在一些实现中,最高连通性可基于高斯和均匀函数的乘积来确定。

用于网络对象的i/o

在hlnd框架的一些实现中,网络对象可包括一个或多个成员以及输入/输出(i/o)接口。该i/o接口可指定如何与网络的其它元素对接(例如,建立连接)。在一些实现中,网络对象的成员可包括节点。在一些实现中,网络对象的成员可包括节点和连接。i/o接口可以定义可如何从网络对象的范围的外部访问对象成员。在定义期间,网络对象的个体成员(及其值)可被声明为公共或私有。私有成员可能对于该网络对象外的外部网络元素是不可见的(即,不可直接访问)。私有对象成员可经由为该成员定义的i/o接口来访问。即,网络对象的私有成员可能从该网络对象的范围外部不可见。在这一情形中,可能要求i/o接口来实现连接。

在一些实现中,网络对象可被定义为‘开放’的。定义为开放的网络对象的成员可以是公共的并且从该网络对象的范围外部可见。这可减轻公布i/o接口的要求。

网络对象的公共成员可以是由外部元素可见和/或可访问以用于输入和/输出连接。在一些实现中,网络对象的成员可默认是有范围的。即,网络对象内的一些或所有变量的范围可被限于在该网络对象内。同一网络对象类型的多个实例的成员在这些成员使用相同标记时不会产生干扰。

在一些实现中,网络对象可被定义为‘宏’。定义为宏的网络对象可以不被作为有范围的对象来对待。此种宏定义可以允许在宏对象内定义的一些或所有变量由外部元素可访问和/或可见。

藉由非限定性示例,节点_a可以是网络对象no1的公共成员,节点_b(其不是no1的成员)可以直接连接至节点_a,和/或接收来自节点_b的连接。可通过使用标记<no2>和<节点_a>、和/或用no1.节点_a有范围注记来访问no1中的成员节点_a。根据一些实现,作为网络对象no2的私有成员的节点_c可能从外部不可见和/或不可访问,除非为no2的节点_c成员定义了i/o接口。外部节点(其不是no2的成员)不可直接连接至节点_a成员和/或直接接收来自节点_a成员的连接。换句话说,可使用标记和/或其它公共可用信息来访问网络对象的公共成员。

结合图4示出并描述了解说公共多房室神经元(mcn)的hlnd网络对象的示例性实现。mcn神经元400可包括一个或多个公共节点,这一个或多个公共节点可包括树突房室404和胞体房室402。术语公共可指代网络对象(例如,房室402、404)的从其定义的范围外部(例如,mcn400外部)可见的成员。个体房室404可被指派两个标记,这两个标记可包括dendrite(树突)、comp(房室)、和/或其它标记。房室402可被指派三个标记,这三个标记可包括dendrite、comp、soma(胞体)、和/或其它标记。房室402和个体房室404可经由结连接406来连接。

藉由非限定性示例以解说根据一些实现的公共网络元素的功能性,可以考虑公共mcn神经元400的两个实例。一个实例可被标记为‘神经元a’,而另一实例可被标记为‘神经元b’。注记<神经元_aand胞体>集合可指代神经元_a实例中的具有胞体标记的mcn成员402。<神经元_band胞体>集合可指代神经元_b实例中的具有胞体标记的mcn成员402。因为mcn<神经元_a>的一些或所有成员402、404可以是公共的,所以它们对于外部实体(例如,mcn<神经元_b>)可以是可见的,这可使得能够实现<神经元_aand胞体>至<神经元_band树突and房室>的直接连接。

在一些实现中,从<神经元_aand胞体>至<神经元_band胞体>的连接可使用给定的连接类型来实例化。

如将由本领域技术人员领会的,以上注记是示例性的并且可以使用各种其它注记以便使用节点成员的标记来标识、选择、和/或访问节点成员。

图5解说了根据一个或多个实现的公共神经元a和b(在图5中分别由指示符500和520来标示)之间的连接实例化。节点a的个体成员504和节点b的个体成员b524可以是公共的。个体‘a’成员504可被连接至个体‘b’成员524。图5中解说了一示例,其中外突起508可与节点524的多个内突起526交迭,从而可在单个a节点504与一个或多个b节点524之间建立连接508。

图6中给出了与图5中解说的实现相对应的示例性伪码。图6中的语句600和620可被配置成分别生成图5的节点实例504和524。图6中的语句606和626可被配置成分别定义图5的外突起506和/或内突起526。最后的语句610可被配置成定义连接508。

图7解说了包括私有多房室神经元的网络对象的示例性实现。私有mcn神经元700可包括一个或多个私有房室704和/或私有房室702。术语‘私有’可指代在相应网络对象的定义范围的外部(例如,mcn700的外部)不可见的网络成员(例如,房室702和704)。个体房室704可被指派两个标记,这两个标记可包括dendrite、comp、和/或其它标记。房室702可被指派三个标记,这三个标记可包括dendrite、comp、soma(胞体)、和/或其它标记。

藉由非限定性解说,可以考虑私有mcn700类型的两个实例。一个实例可被标记为‘神经元_a’,而另一实例可被标记为‘神经元_b’。因为mcn700类型被定义为私有,所以mcn700成员(例如,<神经元_aand树突&房室>、<神经元_aand胞体>、<神经元_b&树突&房室>、<神经元_b&胞体>、<胞体>集合)可以是从mcn700的外部不可见的。根据一些实现,对于图7中解说的节点配置类型,可能不允许直接将<神经元_aand胞体>连接至<神经元_band树突and房室>。为了实现神经元外部连通性,mcn700定义可包括输入(in)端口714和716、以及输出(out)718端口,其可被用于指定针对该mcn节点类型的i/o接口。mcn700的输入接口可包括至mcn700的私有成员的直接内部连接。至mcn700的私有成员的直接内部连接可包括从输入接口in1714到具有标记“树突”和“房室”的私有成员704的连接726、728和730。至mcn700的私有成员的直接内部连接可包括从输入接口in2716到具有标记“胞体”的私有成员702的连接720。链路722可将私有成员702连接至输出(out)接口718,这可允许节点702被用于传出连接和/或用于传入连接。神经元_a.out可被配置成链接/连接至神经元_b.in1。神经元_b.out可被配置成链接/连接至神经元_a.in2。

图8解说了私有网络对象a和b(分别由图8a中的指示符800和820标示)之间的示例性连接实例化。节点a的成员804中的个体成员和/或节点b的成员824中的个体成员可以是私有的,并且因此可能不可由外部实例访问。即,根据各个实现,‘a’节点成员804可以是不可由‘b’节点成员824访问的,反之亦然。为了使节点实例800能生成至节点820的外部连接,可以要求用于私有节点成员的i/o接口。在一些实现中,i/o接口可包括输入/输出端口(例如,i/o端口714、716和718,以上关于图7描述的)。私有节点实例(例如,实例800)可包括大量(例如,数百万)的其它私有成员。私有节点实例可以为那些成员提供将被用于传出连接的传出接口812。

反之,根据一些实现,虽然可保持节点实例820的成员824中的个体成员为私有,但输入接口822可被用于指定节点成员824如何连接至输入端口822。尽管图8a的实现中解说了单个端口,但这并不旨在构成限定,因为可在一些实现中使用多个被唯一性地标记的输入/输出端口。

因为节点实例800的输出接口812和节点实例820的输入接口822可暴露于外部网络元素和/或对外部网络元素可见,所以可以通过使用输入和输出接口812和822以类似于以上关于图5、图7描述的连接建立的方式在网络对象的节点实例800和820之间建立链路/连接810。

图8b给出了与图8a中解说的连接建立实现相对应的示例性伪码。图8b中的语句830可以创建图8a中的节点实例804并且可以暴露输出端口812。图8b中的语句850可以创建图8a中的节点实例824。图8b中的语句856和852可以分别定义图8a的‘b’节点824的内突起826和/或图8a的输入接口822。语句858可以定义该输入接口与‘b’成员之间的连接。

在一些实现中,第三网络对象860可以分别创建类型a800和b820的实例inst_a和inst_b,和/或可以使用节点实例800的a_输出端口和节点实例820的输入端口将inst_a实例连接至inst_b实例。图8b中示出的示例性hlnd定义步骤可包括(1)创建a的实例(inst_a),(2)创建b的实例(inst_b),和/或将inst_a连接和/或链接到inst_b。

因为节点实例a和b的成员可能是私有的,所以对象c可能无法将实例a的成员直接连接至实例b的成员。取而代之,对象c可以使用暴露的端口inst_a.a_out至inst_b.in。在连接中,声明868可以使用等号注记来标示inst_b.in被赋给(例如,同于)inst_a.a_out。在一些实现中,hlnd编译器可以使用定义868和私有节点b成员的定义通过将inst_b.in与节点实例a800的对应(诸)成员链接(即,间接建立(a的)inst_a与(b的)inst_b之间的连接)来解析虚拟b.in端口与节点b820的实际成员之间的连接。如图8a中所解说的,节点类型800和820可以指定要实行节点至节点连接所可能要求的突起扩展和/或突触类型(syntype)/连接类型。

标记

根据一些实现,网络的个体元素(即,节点、扩展、连接、i/o端口)可被指派至少一个唯一性标记以促成hlnd操作和歧义性消除。各标记可被用于标识和/或引述相应的网络元素(例如,该网络的在指定区域内的节点子集)。

在一些实现中,标记可被用于形成节点的动态群聚,从而这些动态创建的节点群可被彼此连接。即,节点群标记可被用于标识节点子集和/或创建网络内的新连接,如以下结合图9详细描述的。这些附加标记可以不是创建网络元素的新实例,而是可以将标记添加至现有实例,从而附加标记被用于标识经标记实例。

图9解说了使用附加标记来标识经标记实例的示例性实现。网络节点群体900可包括一个或多个节点902(标记为‘我的节点’)、一个或多个节点904(标记为‘我的节点’和‘子集’)、和/或其它节点。图9的节点群体900中的暗三角形可标示标记为‘我的节点’的节点902,而黑白三角形可对应于标记为‘我的节点’和‘子集’的节点子集904。

使用标记‘我的节点’,就可以选择节点集合910。节点集合910可包括节点902和/或904中的诸个体节点(参见例如图9)。节点集合920可以表示标记为<‘我的节点’not‘子集’>的节点。节点集合920可包括节点902中的诸个体节点。节点集合930可以表示标记为‘子集’的节点。节点集合930可包括节点904中的诸个体节点(参见,例如图9)。

在一些实现中,hlnd框架可以使用两种类型的标记,其可包括串标记、数值标记、和/或其它标记。在一些实现中,各节点可包括任意的由用户定义的标记。数值标记可包括数字标识符(id)标记、空间标记、和/或其它标记。

在实例化节点之际,被实例化的节点可以具有串标记(节点类型)和唯一性数值标记(唯一性数值标识符)。在一些实现中,位置标记可在实例化过程期间被指派。

对标记的运算

如图9中所示,各标记可被用于标识网络的子集。为了实现这一功能性,可以对标记使用一个或多个布尔运算。在一些实现中,数学逻辑运算可与数值标记联用。<…>注记可以标识网络的子集,其中由尖括号<>封装的串可以定义配置成标识和/或选择子集的操作。藉由非限定性解说,<‘我的标记’>可以从网络中选择具有标记‘我的标记’的诸个体节点;<‘我的标记1’and‘我的标记2’>可以从网络中选择具有标记‘我的标记1’和‘我的标记2’串标记两者的诸个体节点;<‘我的标记1’or‘我的标记2’>可以从网络中选择具有标记‘我的标记1’或‘我的标记2’串标记的诸个体节点;<‘我的标记1’not‘我的标记2’>可以从网络中选择具有串标记‘我的标记1’但不具有串标记‘我的标记2’的诸个体节点;以及<‘我的标记1’andmymathfunction(空间标记)<数值1>可以从网络中选择具有串标记‘我的标记1’且由mymathfunction(我的数学函数,在被应用该节点的空间坐标时)提供的输出小于数值1的诸个体节点。注意,根据各个实现,这一示例假定存在空间标记,这不是强制的。

标记继承

在一些实现中,hlnd框架可包括阶层式标记继承。在一些实现中,在网络对象内实例化的个体成员可以继承其父亲的串标记。例如,网络对象的具有标记‘父标记1’和‘父标记2’的诸个体成员除了例如在成员实例化期间指派的因成员而异的标记外还可包括标记‘父标记1’和‘父标记2’。

在一些实现中,成员空间标记数据可指代该成员的局部坐标(参照由网络对象定义的空间)。在一些实现中,全局坐标(参照整个网络的空间)可以从网络对象和/或成员的嵌套结构中推断出来。

图10解说了空间标记继承的示例性实现。网络对象b(未示出)可以实例化类型c的节点的单个实例(例如,在位置(1,1)处的节点_c,其在图10中被标示为1002)。网络对象a(未示出)可以实例化节点类型b的两个实例(例如,在位置(1,1)处的节点_b_1和在位置(1,2)处的节点_b_2,其在图10中分别被标示为1004和1006)。节点_c的坐标可参照节点_b_1的范围。节点_b_2的坐标可被设为(1,1)。节点_b_1和节点_b_2的参照节点_a的范围的坐标可被分别设为(1,1)和(1,2)。节点_b_1中的节点_c的参照节点_a的范围的坐标可被确定为(1,1)+(1,1)=(2,2)。节点_b_2中的节点_c的参照节点_a的范围的坐标可被确定为(1,2)+(1,1)=(2,3)。注意,注记节点_c、节点_b_1、节点_b_2和节点_a可被用于分别标识类型c、b和a的被实例化的对象。

根据一个或多个实现,hlnd标记性质和/或特性可被概述为如下:标记类型可包括串标记和数值标记;数值标记可包括数值标识符;布尔运算可被用于标记;对数值标记可允许数学函数;可指派任选的空间标记和串标记;个体节点实例可包括唯一性数值标识符标记;串标记继承可以是阶层式的;空间标记可以指代局部坐标;全局标记坐标可从节点的嵌套结构中推断出;和/或其它性质和/或特性。

标记实现

在一些实现中,标记的hlnd框架实现可被配置成要求以下功能性:(i)至标记-数据生成器和数据处理机的接口;和(ii)嵌套对象的实现以便使得能从任何数量的现有网络对象创建复杂网络对象。

在一些实现中,标记数据处理机可以使用数据库(诸如举例而言,mysql)来实现。网络对象的实例可以使用任意串标记来生成。在一些实现中,网络对象可以使用位置标记以及串标记来生成。标记数据可被置于数据库中。可以生成附加网络数据(例如,连接实例,诸如结、突触等)。连接的实例化可以取决于位置标记和/或查询结果。新数据可被存储在数据库中。

标记实现配置可以使得能将网络软件应用划分为两个部分,其可包括数据生成块、数据存储块、和/或其它部分。数据生成块(例如,用c++实现)可被配置成基于其自身的‘智能’和/或通过与数据库(例如,mysql)交互来生成数据。在一些实现中,数据生成器功能性可被嵌入到数据库服务器内。数据生成器可以使用由触发来激活的服务器侧规程来实现。此类触发可包括存储在数据库服务器上的插入并连接调用/触发规程。

在一些实现中,实例化end突触/结可能要求诸如以下一者或多者之类的信息:突触前单元1的类和id、突触后单元2的类和id、突触前单元1和突触后单元2的空间位置、以及突触前单元1.out和突触后单元2.in的空间突起、和/或其它信息。

可以生成突触/结实例。在一些实现中,附加的外部参数可被用于end突触/结的实例化。外部参数的示例可包括突触权重、突触延迟、和/或其它外部参数。节点至节点连接中的突触权重和/或延迟的使用和功能性在于2011年6月2日提交的共同拥有的题为“apparatusandmethodsfortemporallyproximateobjectrecognition(用于时间上接近的对象的识别的装置和方法)”的美国专利申请no.13/152,105和/或于2011年6月2日提交的共同拥有的题为“apparatusandmethodsforpulse-codeinvariantobjectrecognition(用于脉码不变对象识别的装置和方法)”的美国专利申请no.13/215,575中进一步详细描述,上述每一者的全部内容通过援引纳入于此。

为了连接使用不同空间坐标的不同网络对象,可以公布用于每一网络对象的坐标系。即,坐标系配置可以对某个范围内的个体节点可用。

在hlnd框架内,网络对象之间的连接可按一种或多种方式来建立。在一些实现中,该连接可基于轴突末端分布和突触结分布之间的交迭来建立。在一些实现中,总体连接映射可以使用轴突末端分布和突触结分布的联合概率分布函数(pdf)来获得。联合pdf可被用于建立所需的连接(突触)。在一些实现中,hlnd框架可被配置成分布潜在连接点中的个体连接点。连接点可受制于一个或多个特定条件,诸如空间坐标和/或其它条件。hlnd连接算法可被配置成选择这些连接点的所有(或子集)。hlnd连接算法可被配置成实例化对应的连接。在一些实现中,hlnd可被配置成生成任意的由用户定义的连接集。根据一些实现,hlnd可被配置成生成所有至所有连接。

类sql格式

在一些实现中,hlnd可以完全使用sql来实现。根据一些实现,此种sql实现可以使用mysql数据库和所存储的函数/规程来实行。hlnd语句可根据英语语言语法来构造。

标记示例

如上所述,hlnd内定义的个体网络元素(无论它是节点、单元、突触、或结、或仅是空的占位符)可包括标记。hlnd网络描述的这一特性可以允许经标记的元素尤其作为群被寻址和操控。在一些实现中,空间坐标可以使用(x,y,z)形式的标记来实现。

藉由非限定性示例,网络单元可包括一个或多个标记,其包括单元id数值标识符、‘qif’、‘胞体’、‘棱锥形’、‘层2/3’、‘v1’、空间坐标标记(0.1,0.3,0.5)、和/或其它标记。突触可以具有诸如以下标记:ud,分别标示突触前和突触后节点id的神经元前、神经元后、和/或其它标记,‘顶端’,‘exc’,‘glu’,和空间坐标标记(0.1,0.3,0.4)。

tagged(经标记)算子和标记过滤器

在一些实现中,将标记存储在数据库中可以允许快速访问元素群。对标记进行运算的个体数据库查询语句可充当从数据库中选择(匹配于查询项的)特定元素的标记过滤器(或搜索语句)。例如,在查询中指定<'v1'>可以导致选择在其任何标记中包括'v1'的个体元素,例如整个v1子集。指定(<'v1'and'棱锥形'andnot'层2/3')可得到v1中不位于网络层2和3中的个体棱锥形细胞。

在一些实现中,标记查询的输出可被如下地指派其自己的标记:

<tagfilter>taggednewtag

列表3

一些实现可以允许寻址满足标记过滤器(tagfilter)的元素,而无需复制和粘贴过滤器语句。

示例3。

以下语句:

excorinhtaggedall

可以将标记‘所有’(all)添加至所有的‘exc’和‘inh’神经元以易于引用。

示例4。

以下语句:

(excandid<400)or(inhandid<100)taggedfirst_half

可以通过将额外标记指派给第一半(first_half)元素来将网络切为两半。

of算子和子集

在一些实现中,表达式

nof<tagfilter>

列表4

可以返回满足标记过滤器(tagfilter)条件的n个随机元素的列表。如果标记过滤器返回少于n个元素,则一些元素可被复制,从而由列表5的表达式返回的元素的总数量等于n。of算子可以不指派新的标记。of算子可以选择元素子集。为了向子集的元素指派标记,可以使用tagged算子。表达式

100ofconestaggeds_cones

列表5。

可以从视锥(cone)的节点群体中选择100个元素并且可以将个体选定元素标记为s_cones。类似地,表达式

300of(conesandnots_cones)taggedm_cones

conesandnotm_conesandnots_conestaggedl_cones

列表6。

可以从(不在子集s_cones中的)视锥的节点群体中选择300个元素,可以将个体选定元素标记为m_cones,可以从(既不在s_cones子集中也不在m_cones子集中的)视锥的节点群体中选择个体其余元素,并可以将每一选定元素标记为l_cones。

示例6。

根据一些实现,包括800个激发性(exc)神经元和200个抑制性(inh)神经元的网络可被拆分为两个等同的子网络,即子网络1(subnetwork1)和子网络2(subnetwork2),其各自包括400个exc和100个inh的随机选定的神经元,如下:

400ofexctaggedsubnetwork1

100ofinhtaggedsubnetwork1

400of(excandnotsubnetwork1)taggedsubnetwork2

100of(inhandnotsubnetwork1)taggedsubnetwork2

列表7。

将列表7的实现与以下语句进行对比:

500of(excorinh)taggedsubnetwork1

500of(excorinh)taggedsubnetwork2。

列表8。

列表8的语句不保证子网络1和子网络2中的每一者精确地包括400个激发性神经元和100个抑制性神经元。

put算子和单元的实例化

该put算子可被用于如下地实例化和标记网络单元:

putnofunit_class

列表9。

put算子可以是创建‘单元_类(unit_class)’类型的n个实例并将其标记为(id,unit_class)的指令。附加标记可随后通过使用tagged算子被添加至这些单元。put算子可以调用单元_类的相应构造器函数以实例化个体单元。在列表10中,of关键字可被用于使得通过调用单元_类构造器n次来生成该单元_类的n个副本。

示例8:

根据一些实现,语句

put800ofexc

列表10。

可以创建exc类的800个单元,其中个体实例被标记为(id,exc)。

以下语句

put800ofexctaggedexc_neurons

列表11。

创建exc类的800个单元,其中个体实例被标记为(i)(id,exc);和/或(ii)附加标记exc_neurons,从而个体实例包括两个标记。

在一些实现中,put算子可被如下地用于通过使用过滤器参数来创建单元实例:

put<tagfilter>ofunit_class

列表12。

列表12的指令可被配置成创建unit_class的与由<tagfilter>(标记过滤器)查询字段选定的元素数量相对应的数量的实例。列表12中个体的被实例化的单元可用与单元列表中由该查询选定的相应元素相对应的标记来标记。当构造函数unit_class被调用时,它可以能够访问其实例化的元素的标记(例如,id、坐标等),从而构造器具有充分的信息用于单元构造。

示例9:

语句

800oncircle(l)taggedmy_points//参见以下对on的定义

putmy_pointsofexc

列表13。

可被配置成实例化并在单位圆(circle)上分发exc类的800个单元。可通过使用合成语句put800ofexconcircle(1)来达成相同结果。

connect算子和连接单元

连接(connect)算子可如下被用于突触连接:

connectpre_tagtopost_tagwithsynapse_class

列表14。

其中参数synapse_class(突触_类)标示针对突触连接的类定义,而前标记(pre_tag)和后标记(posttag)标示指定由突触所连接的突触前单元和突触后单元的过滤器掩码。在一些实现中,多个突触前和/或突触后单元可由过滤器掩码来选择,藉此导致在满足过滤器掩码的单元之间生成多个突触连接。

在一些实现中,synapse_class可在connect语句中由junction_class(结_类)来代替,从而可以生成突触结。构造函数synapse_class可以能够访问突触前和/或突触后元素的个体标记。构造函数synapse_class可以决定延迟和/或其它所需有关参数。

示例9。

一些实现可以提供如下语句:

connectnofpre_tagtopost_tagwithsynapse_class

connectpre_tagtonofpost_tagwithsynapse_class

列表15。

列表15中的第一语句可被配置成生成连接矩阵,从而个体post_tag(后标记)单元被连接至n个突触前单元。列表15中的第二语句可被配置成生成从个体pre_tag(前标记)单元到n个post_tag单元的n个传出突触。

列表15中的语句可以使用随机选择的子集。这可通过在所有加了前标记的单元的列表中随机游走并随机选择子集的元素来实现。

示例10。

一些实现可以提供如下语句:

nof(connectpre_tagtopost_tagwithsynapse_class)

connectpre_tagtonearestpost_tagwithsynapse_class

connectnearestpre_tagtopost_tagwithsynapse_class

列表16。

列表16中的第一语句可被配置成实例化包括前-后突触的全连通矩阵的随机子集的突触。术语全连通矩阵可被用于描述所有突触前单元被连接至所有突触后单元的网络配置。与列表15中示出的示例不同,列表16中的第一语句不保证所有突触前单元或所有突触后单元包括相同数量的突触。

列表16中的第二和/或第三语句可被配置成生成基于突触前单元和突触后单元的坐标的突触连接。第二语句可包括配置成将每一突触前单元连接至满足标记掩码的最靠近的突触后单元的环。第三语句可以循环遍历每一post_tag并找到最靠近的(nearest)pre_tag。

在一些实现中,参数nearest1of可被用于代替列表16的语句中的参数nearest。

在一些实现中,个体突触前单元可以使用如下语句被连接至n个最靠近的突触后单元:

connectexctonearestnofexcwithglu

列表17。

其可以创建从个体激发性神经元(即,标记为‘exc’的单元)至n个最靠近的激发性神经元的‘glu’类型突触,这n个最靠近的激发性神经元包括该个体激发性神经元自身(即,导致一个自突触)。

推广的of算子

在一些实现中,推广形式的of选择算子可被配置为:

<tagfilter1>of<tagfilter2>

列表18。

推广的of算子可以执行以下一者或多者:(i)创建满足标记滤波器1(tagfilter1)条件的所有n个元素的列表1(list_1);(ii)创建满足标记滤波器2(tagfilter2)条件的所有m个元素的列表2(list_2);(iii)通过从列表2中(随机地)选择n个元素的子集来创建列表3(list_3),如果n>m,则在列表3中有n-m个元素被重复;(iv)返回合并列表,其中来自列表1的每一元素具有来自列表3中的匹配元素的附加标记;和/或其它动作。如果列表1和列表3两者都包括坐标标记,则合并列表中的个体元素可包括为对应元素的坐标总和的坐标标记,从而可维持每元素的单个坐标(x,y,z)标记。

示例11。

在一些实现中,单元集可用‘视锥(cones)’来标记。随机坐标集可用‘视网膜(retina)’来标记。随机视网膜坐标可使用以下表达式被指派给视锥:

conesofretina

当视锥的数量大于坐标的数量时,则多个视锥可被指派相同的坐标。

on算子和坐标指派

on算子可被用于如下从由参数pdf定义的概率密度函数返回n点的采样:

nonpdf,

示例12

一些实现可以提供如下语句:

1000onsegment(0,1)taggedrnd

1000oncircle(1)taggedcones

列表19。

列表19的第一语句可被配置成生成标记为‘rnd’的元素的列表。这些标记为‘rnd’的元素可被均匀分布在由坐标x=[01]定义的空间段(segment)内。即,元素可以具有标记(rnd,x),其中x值均匀分布在范围[01]中。列表19中的第二语句可被配置成生成标记为‘cones’(视锥)并均匀分布在单位圆上的1000个元素的列表。

在一些实现中,on算子可以使用由函数f返回的个体点:

allonf

per算子和标记组合

算子per可被用于贯穿由例如标记过滤器指定的标记列表(tag_list)进行迭代。对于该列表的个体元素而言,算子per可以调用语句(statement),从而向其传递列表元素的所有标记。per算子的格式可以是:

statementpertag_list

per算子可以返回包含描述所生成的网络元素的数据的表。在一些实现中,per算子可被用于创建每神经元的多个突触。在一些实现中,per算子可被用于创建每位置(location)的多个神经元。在一些实现中,per算子可被用于创建每皮层表面的多个皮层列。

示例13

一些实现提供如下语句:

1000onsegmentperneuron

1000oflocationsperneuron

列表20。

spnet

在可以适用于spnet的一些实现中,单元类exc和inh以及突触类glu和gaba可在spnet定义内来定义。

put800ofexc

put200ofinh

connectexcto100ofexcorinhwithglu

connectinhto100ofexcwithgaba

列表21。

列表21的第一行可被配置成生成exc类型的800个单元。列表21的第二行可被配置成生成inh类型的200个单元。列表21的第三行可被配置成用连接类型glu将具有标记‘exc’(注意,类类型可自动被用作标记)的个体单元连接至具有标记‘exc’或‘inh’的100个随机选择的单元。列表21的第四行可被配置成用连接类型gaba将具有标记‘inh’的个体单元连接至具有标记‘exc’的100个随机选择的单元。

视网膜像素至视锥映射

在一些实现中,hlnd描述可被用于描述视网膜像素至视锥映射。一般来说,视锥细胞或视锥可以是或可以指代眼睛视网膜中负责颜色视觉的感光细胞。视锥细胞可以是在中央凹中密集填塞的,但是朝着视网膜的外围逐渐变得稀疏。以下提供了描述视网膜映射的各个方面的若干示例。

//创建像素(pixel)坐标的100×100正方形网格(squaregrid)

square_grid(100,100)taggedpixels

//在每一像素坐标处创建像素单元(pixelunit)

putpixelsofpixel_unit

//创建视锥坐标的六边形网格(hexagonalgrid)

hexagonal_grid(100,100)taggedcones

//将具有其10%的随机子集标为s视锥

//以及创建适当的s_unit(s_单元)

size(cones)*0.1ofconestaggeds_cones

puts_conesofs_unit

//将具有其余视锥中的30%的随机子集标记为m视锥

size(cones)*0.3ofconesandnots_conestaggedm_cones

putm_conesofm_unit

//其余视锥是l视锥

conesandnots_conesandnotm_conestaggedl_cones

putl_conesofl_unit

//藉由结(junction)将每一像素连接至一个最靠近(nearest)的s视锥

connectpixelstonearests_coneswithp2s_junction

//同样处理m视锥

connectpixelstonearestm_coneswithp2m_junction

//同样处理l视锥

connectpixelstonearestl_coneswithp2l_junction

列表22。

有向图

在一些实现中,标记网络子集的指派可被配置成使得能将网络表示为有向图。有向图或即定向图可包括元素对g=(v,a),其中集合v的元素可被称为顶点或节点,而集合a为有序顶点对、称为弧、有向边、或箭头。在hlnd中,术语节点可被用于顶点,并且连接是边。

hlnd和gui

在一些实现中,hlnd可包括图形用户界面(gui)。gui可被配置成使用适当的句法将用户动作(例如,命令、选择等)转译成hlnd语句。gui可被配置成响应于hlnd语句而更新gui以显示网络的变化。gui可以提供gui中的用户动作与hlnd语句之间的一对一映射。此种功能性可以使用户能尤其通过显示响应于用户动作而创建的hlnd语句等以虚拟方式来设计网络。gui可以反映例如使用gui的文本编辑器模块输入到网络的图形表示中的hlnd语句。

该“一对一映射”可以允许相同或类似的信息以多种格式(例如,gui和hlnd语句)被无歧义地表示,因为不同的格式被一致地更新以反映网络设计中的变化。此开发办法可被称为“往返工程设计”。

hlnd中的用户动作

在一些实现中,gui可以支持用户动作,其包括创建节点、选择网络的一个或多个子集、连接节点、标记选定子集内的节点、和/或其它用户动作。在一些实现中,gui可以支持网络对象的定义。以下详细描述一些示例性用户动作。

创建节点

现在参照图12,解说了根据一个或多个实现的使用gui的节点创建。在一些实现中,创建神经网络的节点可能要求包括要实例化和/或生成的节点的类型、要创建的节点的数量、和/或其它信息的信息。在一些实现中,用户可以提供包括要指派给所创建的节点的列表标记、用于实例化和/或初始化节点的附加参数、和/或其它信息的信息。用于实例化和/或初始化节点的附加参数可以取决于特定的网络实现,诸如举例而言,关于如何布局要实例化的节点(即如何指派数值空间标记)的指令。

以上gui节点创建功能性可由hlnd内核的实现节点生成的一个或多个适当的指令来支持。更多细节参见例如以上列表10。当用户输入hlnd节点生成指令(语句)时,gui可以在图形编辑器中生成与相应(诸)节点相对应的图形表示(例如,唯一性符号、象形图、和/或图标)。用户对hlnd语句的输入可通过各种手段来实行,包括但不限于,文本输入、语音、软键(图标)、和/或配置用于hlnd语句输入的其它手段。

用户可以采用图12的gui1200来执行节点创建。根据一些实现,用户可以从节点类型的可用列表(图12中的列表1210)中选择节点类型;将选定的节点类型(例如,图12中的类型1216)拖放(如经由图12中的箭头1204所解说的)进编辑器面板1202中,其中该节点用唯一性节点符号1208来表示;经由与特定节点类型1216相关联的补充输入手段(诸如举例而言,图12中的弹出菜单1220)提供附加参数(如果需要);和/或执行用于创建节点的其它动作。

搜索框1242可以允许用户使用一个或多个关键字来过滤所显示的节点类型1212、1214和1216的列表。这可促成存在有大量节点类型可用情况下的节点类型选择。弹出菜单1220可以使用户能图形地指定节点的数量1226、用于节点实例化的参数1224、布局过程1230、附加标记1232、和/或与节点创建相关联的其它信息。

gui可以允许用户在文本编辑器(hlnd语句1240)与gui节点创建之间来回切换。藉由非限定性示例,在gui中选择用于节点布局的不同参数/选项可以更新hlnd语句。改变指派给在hlnd语句中创建的节点的附加标记可以更新gui中的这一信息。

图12中示出的gui界面并不旨在构成限定,因为其它实现被构想并落在本公开的范围内。例如,在一些实现中,gui可包括下拉列表、单选按钮、和/或其它元素。

选择网络子集

现在参照图13、13a和13b,示出并详细描述了节点子集选择的不同示例性实现。图13的gui1300可包括网络布局面板1302、两个或更多个选择描述面板1304和1306、和/或其它组件。面板1302中示出的网络可包括具有分别被描绘为‘□’、‘δ’、‘○’的不同标记1305、1308和1310的多个节点。选择描述面板1304和1306可包括hlnd语句的布尔部分,其对应于相应子集。

在一些实现中,“选择网络子集”用户动作可对应于使用gui编辑器(例如,图13的gui)来选择网络的成员。用户可以例如通过使用鼠标(或其它定点设备,诸如轨迹球、类触摸垫设备和来自apple的ipad上的手指、光笔、和/或其它技术)来选择网络的子集。使用gui的子集选择可以经由选择性地点击/轻叩与网络的期望成员相对应的图形符号、点击并拖曳以选择网络的区域、其组合、和/或用于选择子集的其它动作来达成。gui的子集选择动作可由hlnd内核的实现子集选择的相应指令来支持。更多细节参见例如以上列表6-7。

如图13中所示,节点子集1312可包括包含标记1305的节点,而子集1314可包括具有标记1308和1310两者的节点。一旦子集1312和1314被选定,面板1304和1306中的布尔表达式就可被相应地更新。

在一些实现中,图13的gui1320中示出的网络包括两个子集,其包括包含标记1305和1308的子集1322、包含标记1310的子集1314、和/或其它子集。选择描述面板1324可被更新以反映与子集1322的标记内容相对应的布尔表达式。在一些实现中,可以通过形成包括子集1322与1314之间的交集(如由布尔表达式1328所指示)的子集1326来生成附加子集。

藉由非限定性示例,响应于用户输入用于子集选择语句的布尔表达式(例如,图13中的表达式1306),gui可以在图形编辑器中显示(例如,使用图13中的阴影矩形来显示)该子集的对应选定成员。在一些实现中,gui可以在图形编辑器中生成与(诸)子集选择相对应的图形表示,如以下关于图13a-13b所解说的。图形表示的示例可包括唯一性符号、象形图、图标、和/或其它图形表示中的一者或多者。在一些实现中,图形表示可包括图形属性的变化(包括颜色、阴影模式、和/或其它图形属性中的一者或多者的变化)。

图13a解说了节点子集选择的示例性实现,其可被应用于包括大量节点的网络子集,其中个体节点的描绘并非总是切合实际的。图13a的gui实现1330中示出的网络可包括两个子集1332和1334,其可使用不同阴影的矩形来描绘。图13a的gui实现1340中示出的网络可包括子集,其可由具有不同填充图案的形状来描绘(参见例如,图13a中的矩形1342和1344)。图13a中的子集1346可被选择为1342i1344。

在一些实现中,gui用户动作可使用唯一性符号1362和1368来表示,如在图13b中示出的网络1360中所解说的。唯一性符号1362和1368可以分别表示子集1304和1306,并且可以是因子集而异的。藉由非限定性示例,唯一性符号的颜色和/或其它标识质量可根据用于标识子集的标记来配置。图形编辑器面板1302中的符号的形状和位置可根据子集的成员的空间标记来配置。这可由符号1362、1368、1372、1376、1378、1382和1388来解说,其可以描绘gui实现1360、1370和1380解说的网络的子集。在一些实现中,符号可基于元素类型来配置。在一些实现中,符号选取可取决于该子集是包括(i)仅节点、(ii)仅连接、还是(iii)节点和连接。

在一些实现中,相同的网络配置(例如,图13的子集1312)可以使用不同符号/图标在gui图形面板(例如,图13的面板1302)内表示。在可以对应于低程度细节网络视图(对应于例如无缩放或低缩放)的一些实现中,子集可以使用符号(图13b的符号1362)来表示,而无需显示该子集的个体元素。

在可对应于例如具有有限处理能力的网络或配置用于批量更新的网络的一些实现中,子集可以使用符号来表示而无需显示该子集的个体元素。

在可与高程度细节网络视图相关联的一些实现中(对应于例如高缩放程度、和/或当有处理资源可用于处理与子集的个体元素有关的信息时),该子集可使用提供该子集的进一步细节的图形描绘来表示(例如,图13的将个体子集元素解说在其适当位置处的表示1312)。

在一些实现中,可以执行hlnd框架选择操作以将附加标记指派给选定的成员,在连接语句中使用选定成员(在这一情形中为节点)和/或执行其它动作。

gui可以允许用户在文本编辑器(hlnd语句)与gui子集选择之间来回切换。藉由非限定性示例,使用gui来选择不同的节点成员可以使得更新相应的hlnd语句。改变文本编辑器中的选择可以更新图形编辑器中的选择。在一些实现中,更新选择可包括高亮显示和/或另行视觉地强调选定的成员。

连接节点

“节点连接”用户动作可对应于创建网络节点之间的连接。根据一些实现,在创建结点间连接时,hlnd内核可能要求以下一者或多者:第一子集选择(例如,连接将源自的节点子集)、第二子集选择(例如,连接将终结于的节点子集)、用于将第一子集连接至第二子集的连接类型、和/或与连接节点相关联的其它信息。

在一些实现中,可向hlnd内核提供一个或多个附加参数,包括以下一者或多者:用于设置连通性映射(例如,所有对所有、一对一、一对最靠近、和/或其它由用户定义的连接映射)的参数、用于实例化和/或初始化连接实例(例如,初始化突触权重)的参数、要指派给所创建的连接实例的列表标记、和/或其它参数。

hlnd内核可以实现配置成连接网络中的节点的指令。(更多细节参见例如以上列表16-17)。藉由非限定性示例,当用户输入连接指令时,gui可以在图形编辑器中创建对应的图形表示(例如,画出从源到目的地节点选择的链路/箭头)以解说这些连接。

根据一个或多个实现,用户可以使用gui来选择网络成员的源子集选择,选择网络成员的目的地选择,将源选择拖放到目的地选择上以将第一选择连接至第二选择,和/或执行其它动作。gui可以在图形视图中生成表示源成员与目标成员之间的相应连接的链路/箭头元素。

在一些实现中,与连接元素(链路/箭头)相关联的弹出菜单可以允许用户从连接类型的可用列表中选择连接类型。在一些实现中,弹出菜单可以允许用户提供用于实例化和/或初始化连接实例的附加参数。在一些实现中,弹出菜单可以允许用户设置用于设置连通性映射的参数。

gui可以允许用户在文本编辑器(hlnd语句)与gui连接创建之间来回切换。藉由非限定性示例,使用gui来选择不同的节点成员可以使得更新与节点描述相关联的hlnd语句。改变文本编辑器中的选择可以更新图形编辑器中的选择(例如,高亮显示选定的成员)。

图14解说了使用gui来连接两个节点集合的示例性实现。gui1400可包括网络节点视图面板1402、一个或多个节点集合选择域1406和1404、hlnd语句域1442和1444、和/或其它组件。当在hlndgui域1402中使用例如鼠标点击并拖曳动作来选择节点集合1412和1414时,节点集合选择域1404和1406可被更新以反映选定的集合。如图14中所解说的,集合1412可包括具有标记1405(描绘为‘正方形’)的节点。集合1414可包括具有标记1408(描绘为‘三角形’)和具有标记1410(描绘为‘圆形’)的节点。节点集合选择域1404和1406可被更新以分别用与集合1412和1414相对应的标记来显示选定节点。

根据一些实现,可通过在一选择上调用例如右击以便为网络的选定成员指派新标记来向集合1412和1414指派附加标记。用于标记添加的hdln语句可以被自动生成。

在一些实现中,可使用例如右击(如线1418所解说的)来调用补充图形数据输入手段(例如,图14中的弹出菜单1430)。菜单1430可被用于尤其将附加标记1432或新标记1434指派给选定的节点等。

在一些实现中,如由图14中在gui域1402中的箭头1416所解说的,通过使用拖放动作、使用鼠标和/或触摸垫设备上的手指,第一选择可被‘放’到第二选择上,这可指令hlnd引擎创建集合1412的节点1405与集合1414的节点1408和1410之间的连接。

附加的补充图形数据键入手段(例如,图14中的弹出菜单1420)可被尤其用于指定用于连接的参数。指定用于连接的参数可包括以下一者或多者:设置连接类型1422、初始化用于连接类型的参数1424、指定连通性模式1426、将标记指派给连接1428、和/或其它动作。

对于使用gui1400用节点选择1412和1414执行的一个或多个用户动作,对应的hlnd语句可被自动生成并分别在语句域1442和1444中被显示。

图12-14中示出的gui界面并不旨在构成限定,因为其它实现被构想且落在本公开的范围内。例如,一些实现可包括下拉列表、单选按钮、和/或其它组件。

hlnd与end格式的关系

hlnd格式可被设计成与元素式网络描述(end)格式兼容和/或与其结合使用,end格式在以上纳入的于2011年9月21日提交的题为“elementarynetworkdescriptionforneuromorphicsystems(用于神经元形态系统的元素式网络描述)”的美国专利申请s/n.13/239,123中描述。在一些实现中,可以基于hlnd描述(例如,模型神经元的end实现)来生成end单元的实例。end结和/或end突触的实例可有向地连接各单元。hlnd可以定义解剖结构,而神经和突触动态可在所应用的end类中定义。hlnd可以隐藏end的复杂性和/或低级难度,并且可以使网络设计是简单过程。

所生成的end实例可被用于生成实现和/或运行指定模型的神经网络引擎。即,end实例可被用于生成实现由hlnd描述和/或所应用的end类定义的网络的引擎。该引擎可在来自pc、fpga、任何专用end兼容硬件、和/或其它计算机硬件的任意硬件平台上执行。

图11解说了end引擎的三种基本结构,其可在通用risc/cisc中央处理单元(cpu)、图形处理单元(gpu)、集成电路(例如,asic)、和/或其它处理器上实现。end引擎的结构可以对应于图11中的‘单元’1101、‘双联体’1111、和/或‘三联体’1121。end引擎可被配置成执行单元、双联体和三联体规则、和/或访问这些元素的存储器。end格式可被当作将配置具有执行指定神经元网络的此类单元、双联体和三联体的半导体电路的硬件规范语言来对待。

在一些实现中,个体基本结构(例如,单元、双联体、和/或三联体)可被实现为多线程处理器上的单个线程。在一些实现中,个体结构可被实现为超单元、超双联体、和/或超三联体,其可包括配置成分别使用时间复用来处理单元、双联体、和/或三联体的专用电路。一些实现可包括三个不同电路:单元、双联体、和三联体中的每一者有一个电路。

在一些实现中,单元1101可以表示神经元和/或神经元的部分(例如,树突房室)。在另一示例中,单元1101可以表示神经元的群体。神经元的活动可以表示该群体的“平均激发率”活动和/或该群体的活动的其它平均场近似。个体单元可以与存储器变量和描述对其存储器可以执行什么操作的更新规则相关联。各操作可以是基于时钟的(即,在模拟的每个时间步执行)或者它们可以是基于事件的(即,在某些事件被触发时执行)。

取决于单元变量的值,这些单元可以生成经由双联体来触发其它单元中的突触事件的事件(例如,脉冲或尖峰)。例如,图11中的单元1102可以经由双联体1111来影响单元1103,双联体1111可以表示从突触前神经元(突触前单元1102)到突触后神经元(突触后单元1103)的突触。

个体单元可以具有事件后更新规则,该规则可在事件被触发之后得以被触发。这些规则可以负责单元变量因事件引起的修改,例如,电压变量的尖峰后重置。

个体的双联体可以与存储器变量相关联。个体的双联体可以访问突触后单元的变量。此种访问可包括读、写、和/或访问机制。个体的双联体可以与对双联体存储器作出改变以实现突触可塑性的双联体事件规则相关联。个体的双联体可以与对突触后单元存储器作出改变以实现脉冲递送的双联体事件规则相关联。双联体事件规则可以涵盖以上在end格式中描述的一些或所有突触规则。

因为多个双联体(例如,图11中的1116-1118)可以将对应的多个突触前单元1106-1108连接至单个突触后单元1109,所以双联体可以并行和/或以任意次序来修改突触后单元存储器。结果可以是与次序无关的。这可以在对突触后单元存储器的操作是原子加法(如在gpu中那样)、原子乘法(其等同于经由对数变换的加法)、和/或重置为一值(其中所有双联体尝试重置为同一值)时达成。正由双联体事件规则修改的突触后单元变量不可以在该规则中使用。否则,结果可能取决于双联体事件规则的执行次序。

现在参照图15,示出并详细描述了包括hlnd内核和end描述的神经网络定义系统的示例性实现。在图15中,圆形1504、1502和1506可以表示不同的较高级网络描述方法或格式。圆形1510可以表示网络的end描述。来自1504、1502和1506的箭头可以标示至end描述的转换过程。例如,处理网络的hlnd描述(例如,hlnd语句)的软件可以生成同一网络的end描述。图15中的矩形1512、1515、1516和1518可以标示由end描述1510定义的网络的各种硬件平台实现。圆形1510与矩形1512、1515、1516和1518之间的箭头可以标示引擎生成过程。藉由非限定性示例,end描述1510与矩形1512之间的箭头可以表示生成实现end网络并被配置成在cpu上运行的可执行件的过程。hlnd定义1502可被处理并转换为end描述1510。end描述可被配置成被处理(例如,由各个软件应用处理)以生成因平台而异的机器可执行指令。这些因平台而异的机器可执行指令可被配置成在各种硬件平台上执行,这些硬件平台包括但不限于元素通用处理器1512、图形处理单元1514、asic1516、fpga1518、和/或其它硬件平台。

其它网络描述格式可与过程1500联用,诸如举例而言,brian1504和/或配置成生成网络的end描述的其它神经元形态网络描述格式1506(例如,neuron(神经元)),如图15中所解说的。

计算机化的hlnd装置的示例性实现

关于图16示出并描述了配置成在设计神经网络(例如,图15的网络1500)中利用hlnd框架的计算机化网络处理装置的示例性实现。计算机化装置1600可包括处理块(例如,处理器)1602,其耦合至非易失性存储设备1606、随机存取存储器(ram)1608、用户输入/输出接口1610、和/或其它组件。用户输入/输出接口可包括以下一者或多者:键盘/鼠标、图形显示器、触摸屏输入输出设备、和/或配置成从用户接收输入和/或向用户输出信息的其它组件。

在一些实现中,计算机化装置1600可以经由i/o接口1620(诸如,计算机i/o总线(pci-e)、有线(例如,以太网)或无线(例如,wifi)网络连接)耦合至一个或多个外部处理/存储设备。

在一些实现中,输入/输出接口可包括配置成从用户接收人声命令的语音输入设备(例如,话筒)。输入/输出接口可包括配置成从用户接收并识别人声命令的语音识别模块。语音识别的各种方法被认为是落在本公开的范围内。语音识别的示例可包括以下一者或多者:在处理器上运行的基于线性预测编码(lpc)的频谱分析算法、包括梅尔倒频谱系数(mfcc)的频谱分析、耳蜗建模、和/或用于语音识别的其它办法。音素/字识别可以基于hmm(隐式马尔科夫建模)、dtw(动态时间翘曲)、nn(神经网络)、和/或其它过程。

end引擎1510可被配置成将网络的hlnd描述转换为机器可执行格式,该机器可执行格式可以是针对特定硬件或软件实现被最优化的。机器可执行格式可包括可由处理块1602执行的多个机器可执行指令。

本领域技术人员将领会,各种处理设备可与各种实现联用,包括但不限于单核/多核cpu、dsp、fpga、gup、asic、其组合、和/或其它处理器。各种用户输入/输出接口可应用于各种实现,包括但不限于,lcd/led监视器、触摸屏输入和显示设备、语音输入设备、指示笔、光笔、轨迹球、和/或其它用户接口。

gui用户动作的执行

在一些实现中,网络设计系统(例如,图16的系统1600)可以自动将gui动作转换为hlnd指令和/或转换成end语句。hlnd指令可以致使自动更新gui表示和/或end描述。

图17解说了执行与同一网络设计元素相对应的不同表示的无缝更新的一种办法。网络描述1702(例如,节点、连接、子集等)可包含定义网络所必需的信息。在一些实现中,网络描述(1702)可包括节点类型、节点类型参数、节点布局参数、标记、和/或其它信息中的一者或多者。在一些实现中,网络描述(1702)可包括连接类型、连接类型参数、连接模式、标记、和/或其它信息中的一者或多者。可以存在各种其它描述类型(例如,子集),其可包括与之相关联的恰适信息。

如图17中所解说的,单个对象(例如对象1702)可以具有与之有关的一个或多个表示,这些表示可包括gui表示1712(例如,使用图13的gui编辑器1302)、hlnd表示1714(例如,使用以上关于图14描述的hlnd语句)、end表示1716(参见例如图15)、和/或其它表示(由矩形1718来描绘)。响应于正被生成和/或更新的对象性质(即,对象数据元素),该对象的对应表示(例如,表示1712、1714、1716和1718)可以分别使用双向路径1720、1722、1724和1726来更新。

在一些实现中,响应于修改一选择的用户gui动作,对应的(诸)hlnd语句(例如,图17中的hlnd表示1714)可被更新。在一些实现中,end指令(例如,图17中的end表示1722)可被更新。

在一些实现中,end指令可由装置来执行,藉此能够实现对网络的更为详细和准确的表示。

在一些实现中,当创建单元的语句在网络描述框架内可用时,可以使用唯一性彩色符号在gui内呈现节点。

在一些实现中,响应于节点的坐标可用——即当连接语句至少部分地得到处理时,可用唯一性(针对整个子集而言)的符号在gui内将各节点呈现在其正确位置处。

在一些实现中,当连接指令在网络描述框架中可用时,可由gui使用例如单条线来呈现两个子集之间的连接。

在一些实现中,一旦针对连接实例的节点前和节点后信息可用(即,先前已经生成)——即,一旦连接语句至少部分地得到处理,则两个子集之间的连接就可以示出详细连通性结构。

在一些实现中,响应于针对连接实例的节点前信息、节点后信息、和/或初始权重可用——即,一旦连接语句至少部分地得到处理,则两个子集之间的连接就可以用每连接唯一性的性质(例如,表示连接的线宽)来示出详细连通性结构。

如由本领域技术人员所领会的,其它表示(例如,图17中的矩形1718所描绘的)可以存在并可与各种实现兼容,前提是它们符合本文描述的更新框架。

在一些实现中,不同表示(例如,图17中的表示1712、1714、1716和1718)之间的数据交换可以经由通过图17中的箭头1730、1732、1734、1736、1738和1739标示的直接链路来实现。为了清楚起见,图17中并未示出表示1712、1714、1716和1718之间的所有直接连接。

将认识到,尽管按照方法的具体步骤顺序描述了本公开的某些方面,但这些描述仅解说了本公开的较广泛方法,并且可如特定应用所需地进行修改。在某些情况下,可导致某些步骤不必要或者可任选。另外,某些步骤或功能性可被添加至所公开的实现,或者两个或更多个步骤的执行次序可以置换。所有此类变体被认为是被涵盖在本文中所公开和要求保护的本公开内的。

尽管出于解说目的基于当前认为的最实际和优选的实现来详细描述了本公开,但将理解,此类细节仅用于该目的且本公开并不限于所公开的实现,而是相反,本公开旨在涵盖落在所附权利要求的精神和范围内的修改和等效布置。例如,将理解,本公开在尽可能的程度上构想了任何实现的一个或多个特征可与任何其它实现的一个或多个特征结合。

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