一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于定义和执行指定神经网络架构的程序代码的技术的制作方法

2022-03-31 11:26:05 来源:中国专利 TAG:

用于定义和执行指定神经网络架构的程序代码的技术
1.相关申请的交叉引用
2.本技术要求2019年7月8日提交的美国专利申请序列号16/505,525的权益,所述申请据此以引用方式并入本文。


背景技术:

3.各种实施方案的领域
4.本公开的实施方案大体上涉及计算机科学和人工智能,并且更具体地涉及用于定义和执行指定神经网络架构的程序代码的技术。
5.相关技术的描述
6.可训练神经网络以高准确度执行各种各样的任务。因此,神经网络在人工智能领域被广泛采用。神经网络可具有多种多样的网络架构。在更复杂的情形中,神经网络的网络架构可包括许多不同类型的层,其中在不同层之间存在错综复杂的连接拓扑。例如,一些神经网络可具有十层或更多层,其中每一层可包括成百上千个神经元,并且可经由成百上千个单独的连接耦接到一个或多个其他层。
7.在神经网络开发过程期间,设计人员编写程序代码来创建解决特定类型问题的神经网络架构。然后,设计人员使用训练数据和神经网络在处理该训练数据时应产生的目标输出来训练神经网络。例如,设计人员可基于显示各种风景的一组图像以及指示所述一组图像中显示的风景的类型的标签来训练神经网络。
8.在为神经网络编写程序代码时,设计人员通常依赖于一个或多个编程库,所述一个或多个编程库展示促进神经网络设计和整个编码过程的各种工具。使用这些类型的编程库的一个缺点是:为了使用编程库,通常必须安装和执行一个或多个复杂的软件堆栈。例如,为了定义神经网络,开发人员可能必须安装若干库,其中每个库都有数千行代码,即使在定义、训练和/或执行神经网络时,这些库展示的许多功能都没有使用。另外,这些复杂的软件堆栈难以理解和掌握。因此,熟练的神经网络开发人员后备力量仅限于在使用相关复杂的软件堆栈方面已达到必要专业水平的一小部分开发人员。另外,一般来说,复杂的软件堆栈通常需要大量的计算和存储资源才能正确执行。因此,神经网络开发人员后备力量进一步限于能够访问满足那些计算和存储要求的更复杂的硬件的开发人员。
9.在设计神经网络时使用常规编程库的另一个缺点是:这些编程库通常允许设计人员控制仅有限数量的神经网络特征。特别地,编程库通常包括层定义函数,所述层定义函数是严格的,并且对可定义的神经网络层的类型和参数施加限制。例如,一些常规编程库要求设计人员明确指定在训练阶段期间学习神经网络的给定层中的哪些变量,或者具有在训练阶段期间仅允许学习层的权重参数的硬编码规则。这些类型的约束阻止开发人员在设计神经网络时发挥创造力并使开发人员在设计神经网络时不能够探索各种各样的配置。
10.作为使用常规编程库的替代方案,设计人员可使用传统编程语言(诸如python、c、c 或java)为神经网络编写代码。然而,传统编程语言框架并不适合轻易地定义和实现基于数学的操作,例如神经网络架构的核心处的那些操作。因此,设计人员通常必须编写大量
复杂的代码,所述复杂的代码定义神经网络中每个层如何操作,指定各个层如何耦接在一起,并且描绘不同层执行的各种操作。另外,在编译神经网络的代码时,在训练阶段期间学习的变量是未赋值的。当在编译时间期间遇到未赋值的变量时,用于传统编程语言的常规编译器会发出错误。为了解决这些类型的错误,开发人员必须将随机值赋值给未赋值的变量,这可能会将内置偏差引入训练阶段中并且对训练过程和/或经训练的神经网络的准确度产生负面影响。
11.如前述说明,本领域需要用于定义神经网络的更有效的技术。


技术实现要素:

12.各种实施方案包括一种用于生成可执行神经网络的计算机实现的方法。所述方法包括:接收指定多个数学表达式的源代码,所述多个数学表达式定义神经网络的一个或多个层;对包括在所述多个数学表达式中的第一数学表达式执行一个或多个编译操作,所述一个或多个编译操作包括:确定包括在所述第一数学表达式中的第一变量是未赋值的,并且基于所述第一变量是未赋值的来确定在训练所述神经网络时要学习所述第一变量;以及生成与所述第一数学表达式相对应的编译的代码,所述编译的代码在执行时致使生成所述第一变量的值。
13.所公开的技术相对于现有技术的至少一个技术优势在于:所公开的ai设计应用程序可生成复杂神经网络架构,而无需设计人员用户编写大量程序代码或与大量程序代码交互。所公开的技术相对于现有技术的另一个技术优势在于:所公开的ai设计应用程序使设计人员能够控制神经网络架构的任何特征或方面。特别地,神经网络的设计人员将神经网络定义为一系列数学运算,并且完全控制数学运算的细节。另外,ai设计应用程序自动标识将在训练过程期间学习神经网络架构内的哪些变量,而无需硬编码规则或设计人员明确标识那些变量。因此,ai设计应用程序使设计人员能够开发神经网络并且更好地理解神经网络如何操作。
附图说明
14.为了能够详细理解上述各个实施方案的特征的方式,可通过参考各个实施方案(其中一些在附图中示出)对上面简要概括的本发明构思进行更具体的描述。然而应当注意,附图只示出本发明构思的典型实施方案,并且因此不应被视为以任何方式限制范围,并且存在其他等效实施方案。
15.图1示出被配置为实现各种实施方案的一个或多个方面的系统;
16.图2是根据各种实施方案的图1的ai设计应用程序的更详细图示;
17.图3是根据各种实施方案的图2的网络生成器的更详细图示;
18.图4是根据各种实施方案的图3的编译器引擎和合成引擎的更详细图示;
19.图5a至图5b是示出根据各种实施方案的图3的网络生成gui如何促进神经网络的生成的屏幕截图;并且
20.图6是根据各种实施方案的用于以基于数学的编程语言定义和编译神经网络的方法步骤的流程图。
具体实施方式
21.在以下描述中,阐述了许多特定细节以提供对各个实施方案的更透彻理解。然而,对本领域的技术人员将是显而易见的是,在无这些具体细节中的一个或多个的情况下也可实践本发明构思。
22.如上所述,深度神经网络可具有包括许多层和错综复杂的连接拓扑的复杂的网络架构。因此,设计人员可能难以生成深度神经网络。另外,一旦生成深度神经网络,设计人员可能难以分析和理解与深度神经网络相关联的网络架构的复杂性。由于分析和理解深度神经网络的能力有限,设计人员可能更难以评估深度神经网络执行预期任务的效果。最后,由于缺乏对深度神经网络如何操作的明确理解,设计人员无法轻易表征深度神经网络的操作或向他人描述该操作。
23.为了解决这些问题,各种实施方案包括一种人工智能(ai)设计应用程序,其向用户展示用于生成、分析、评估和描述神经网络的各种工具。所述ai设计应用程序包括网络生成器,所述网络生成器生成和/或更新程序代码,所述程序代码基于用户与网络架构的图形描绘的交互来定义神经网络。所述网络生成器使用户能够以基于数学的编程语言定义神经网络。使用基于数学的编程语言创建的源代码的编译包括实现神经网络架构的高效开发的若干特征。ai设计应用程序还包括网络分析器,所述网络分析器响应于测试输入在层级、神经元级和权重级处分析神经网络的行为。ai设计应用程序还包括网络评估器,所述网络评估器跨一系列训练数据样本执行神经网络的综合评估。最后,ai设计应用程序包括网络描述子,所述网络描述子以自然语言阐明神经网络的行为,并且根据一组规则约束该行为。
24.所公开的技术相对于现有技术的至少一个技术优势在于:所公开的ai设计应用程序可生成复杂神经网络架构,而无需设计人员用户编写大量程序代码或与大量程序代码交互。通常,使用所公开的ai设计应用程序生成神经网络架构时所需的程序代码的量比使用常规编程技术生成神经网络架构少一定数量级。所公开的技术相对于现有技术的另一个技术优势在于:所公开的ai设计应用程序使设计人员能够控制神经网络架构的任何特征或方面。特别地,神经网络的设计人员将神经网络定义为一系列数学运算,并且完全控制数学运算的细节。另外,ai设计应用程序自动标识将在训练过程期间学习神经网络架构内的哪些变量,而无需硬编码规则或设计人员明确标识那些变量。因此,ai设计应用程序使设计人员能够开发神经网络并且更好地理解神经网络如何操作。
25.系统概述
26.图1示出被配置为实现各种实施方案的一个或多个方面的系统。如图所示,系统100包括经由网络150耦接在一起的客户端110和服务器130。客户端110或服务器130可以是任何技术上可行的类型的计算机系统,其包括台式计算机、膝上型计算机、移动装置、计算装置的虚拟化实例、分布式和/或基于云的计算机系统等。网络150可以是任何技术上可行的互连通信链路集合,其包括局域网(lan)、广域网(wan)、万维网或互联网等。客户端110和服务器130被配置为经由网络150进行通信。
27.如进一步所示,客户端110包括耦接在一起的处理器112、输入/输出(i/o)装置114和存储器116。处理器112包括被配置为处理数据和执行软件应用程序的任何技术上可行的硬件单元组。例如,处理器112可包括一个或多个中央处理单元(cpu)、一个或多个图形处理单元(gpu)和/或一个或多个并行处理单元(ppu)。i/o装置114包括被配置为执行输入和/或
输出操作的任何技术上可行的装置组,包括例如显示装置、键盘和触摸屏等。
28.存储器116包括被配置为存储数据和软件应用程序的任何技术上可行的存储介质,诸如例如硬盘、随机存取存储器(ram)模块和只读存储器(rom)。存储器116包括数据库118(0)、人工智能(ai)设计应用程序120(0)、ai模型122(0)和图形用户接口(gui)124(0)。数据库118(0)是存储各种类型数据的文件系统和/或数据存储应用程序。ai设计应用程序120(0)是在由处理器112执行时与在服务器130上执行的对应软件应用程序互操作以生成、分析、评估和描述一个或多个ai模型的软件应用程序。ai模型122(0)包括被配置为执行面向通用或专用人工智能的操作的一个或多个人工神经网络。gui 124(0)允许用户与ai设计应用程序120(0)交互。
29.服务器130包括耦接在一起的处理器132、i/o装置134和存储器136。处理器132包括被配置为处理数据和执行软件应用程序的任何技术上可行的硬件单元组,诸如一个或多个cpu、一个或多个gpu和/或一个或多个ppu。i/o装置134包括被配置为执行输入和/或输出操作的任何技术上可行的装置组,诸如显示装置、键盘或触摸屏等。
30.存储器136包括被配置为存储数据和软件应用程序的任何技术上可行的存储介质,诸如例如硬盘、ram模块和rom。存储器136包括数据库118(1)、ai设计应用程序120(1)、ai模型122(1)和gui124(1)。数据库118(1)是与数据库118(1)类似的存储各种类型的数据的文件系统和/或数据存储应用程序。ai设计应用程序120(1)是在由处理器132执行时与ai设计应用程序120(0)互操作以生成、分析、评估和描述一个或多个ai模型的软件应用程序。ai模型122(1)包括被配置为执行面向通用或专用人工智能的操作的一个或多个人工神经网络。gui 124(1)允许用户与ai设计应用程序120(1)交互。
31.一般来说,数据库118(0)和118(1)表示分布式存储实体的独立部分。因此,为简单起见,数据库118(0)和118(1)在本文中统称为数据库118。类似地,ai设计应用程序120(0)和120(1)表示被配置为执行本文所描述的任何和所有本发明操作的分布式软件实体的单独部分。因此,ai设计应用程序120(0)和120(1)在下文中统称为ai设计应用程序120。ai模型122(0)和122(1)同样表示包括一个或多个神经网络的分布式ai模型。因此,ai模型122(0)和122(1)在本文中统称为ai模型122。gui 124(0)和124(1)类似地表示一个或多个gui的分布式部分。gui 124(0)和124(1)在本文中统称为gui 124。
32.在操作中,ai设计应用程序120基于经由gui 124接收的用户输入来生成ai模型122。gui 124展示允许用户创建和编辑ai模型122、探索ai模型122的功能、相对于训练数据评估ai模型122以及生成描述和/或约束ai模型122的性能和/或操作的各种数据、以及进行其他操作的设计和分析工具。下面结合图2更详细地描述ai设计应用程序120内执行上述操作的各种模块。
33.图2是根据各种实施方案的图1的ai设计应用程序120的更详细图示。如图所示,ai设计应用程序120包括网络生成器200、网络分析器210、网络评估器220和网络描述子230。还如图所示,ai模型122包括一个或多个代理240,并且gui 124包括网络生成gui202、网络分析gui 212、网络评估gui 222和网络描述gui 232。
34.在操作中,网络生成器200呈现网络生成gui 202以向用户提供用于设计和连接ai模型122内的代理240的工具。给定代理240可包括执行各种面向ai的任务的神经网络242。给定代理240还可包括执行通用任务的其他类型的功能元件。网络生成器200基于训练数据
250来训练包括在特定代理240中的神经网络242。训练数据250可包括用于训练神经网络的任何技术上可行的类型的数据。例如,训练数据250可包括修改的国家标准与技术研究所(mnist)数字训练集。
35.当训练完成时,网络分析器210呈现网络分析gui 212以向用户提供用于分析和理解给定代理240内的神经网络如何操作的工具。特别地,网络分析器210致使网络分析gui 212显示给定神经网络242内的各种连接和权重并且模拟给定神经网络242对各种输入的响应、以及进行其他操作。
36.此外,网络评估器220呈现网络评估gui 222以向用户提供用于相对于训练数据250评估给定神经网络242的工具。更具体地,网络评估器220经由网络评估gui 222接收指示训练数据250的特定部分的用户输入。然后,网络评估器220模拟给定神经网络242如何对训练数据250的该部分做出响应。网络评估器220还可致使网络评估gui 222过滤训练数据250的致使给定神经网络242生成某些类型的输出的特定部分。
37.结合上文,网络描述子230分析与代理240相关联的给定神经网络242并且生成向用户描述神经网络242的性能的自然语言表达。网络描述子230还可向用户提供与神经网络242如何解释训练数据250有关的各种“常识”事实。网络描述子230经由网络描述gui 232将此数据输出给用户。此外,网络描述子230可经由网络描述gui 232从用户获得基于规则的表达式,然后基于这些表达式来约束网络行为。另外,网络描述子230可生成量化网络性能的各个方面的度量,然后经由网络描述gui 232向用户显示这些度量。
38.大体参考图1至图2,ai设计应用程序120有利地向用户提供用于生成、分析、评估和描述神经网络行为的各种工具。所公开的技术不同于用于生成神经网络的常规方法,所述常规方法通常混淆来自用户的网络训练和后续操作。
39.图3是根据各种实施方案的图1的网络生成器的更详细图示。如图所示,网络生成器200包括编译器引擎300、合成引擎310、训练引擎320和可视化引擎330。
40.在操作中,可视化引擎330生成网络生成gui 202并且经由网络生成gui 202从用户获得代理定义340。编译器引擎300编译包括在给定代理定义340中的程序代码以生成编译的代码302。编译器引擎300被配置为解析、编译和/或解释任何技术上可行的编程语言,所述编程语言包括c、c 、python和相关联的框架、javascript和相关联的框架等。合成引擎310基于编译的代码302和影响该代码如何执行的一个或多个参数来生成初始网络312。初始网络312未经训练并且可能无法以高准确度执行一个或多个预期操作。
41.训练引擎320基于训练数据250来训练初始网络312以生成经训练的网络322。经训练的网络322可以比初始网络312更高的准确度执行一个或多个预期操作。训练引擎320可执行任何技术上可行的类型的训练操作,包括反向传播、梯度下降等。可视化引擎330结合上述操作更新网络生成gui 202,从而以图形方式描绘经由代理定义340定义的网络架构以及示出经训练的网络322的各种性能属性。
42.神经网络代理的基于数学的编程和执行
43.如以上所讨论,为了定义和执行神经网络架构,开发人员通常使用难以掌握的繁琐工具和库,并且常常混淆底层网络架构的许多细节。因此,神经网络只能由在各种工具和库方面具有专业知识的少数开发人员创建。另外,因为网络架构的底层细节嵌套在工具和库的框架内的深处,所以开发人员可能不了解架构如何运作或者如何改变或改进架构。为
了解决神经网络定义范式中的这些和其他缺陷,下面讨论用于定义神经网络架构的基于数学的编程和执行框架。
44.在各种实施方案中,用于以基于数学的编程语言进行神经网络代理定义的源代码是链接数学表达式的流水线。在不需要任何中间库的情况下,源代码被编译成机器代码,其中机器代码表示可训练且可执行的神经网络。为了在源代码中将神经网络架构定义为一系列数学表达式,基于数学的编程语言展示了若干构建块。这些构建块包括用于指定神经网络的层的层符号、用于指定神经网络的两个或更多个层或者两个或更多个神经网络之间的链路的链路符号、用于指定变量源的变量赋值符号(=),以及各种数学运算符号,诸如求和( )、除法(/)、总和(∑)、开括号和闭括号(())、矩阵定义、集合隶属(∈)等。
45.使用以上讨论的构建块以基于数学的编程语言将神经网络的每个层定义为一个或多个数学表达式。例如,可使用以下包括一组数学表达式的源代码来定义卷积层:
46.卷积:
47.其中
[0048][0049][0050][0051][0052]
c=s(y-1)-z t
[0053]
d=s(j-1)-z a
[0054][0055]
在以上的示例中,源代码的第一行指示源代码的后续行与具有输入x和输出y的卷积运算相关。源代码的后续行包括一系列数学表达式,所述一系列数学表达式定义对输入x执行以生成输出y的数学运算。每个数学表达式包括右侧部分和左侧部分。右侧部分指定了在评估左侧部分指定的数学运算时确定的值。例如,在以上所示的数学表达式“c=s(i-1)-z t”中,“c”是右句柄部分,并且指定变量c被赋值给评估“s(i

1)

z t”时生成的值。
[0056]
包括在神经网络代理的源代码中的变量值在神经网络实例化时被赋值,或在神经网络训练期间被学习。与其他神经网络定义范式不同,使用基于数学的编程语言定义的神经网络代理的开发人员可控制在训练期间要学习哪些变量(本文称为“学习变量”)。另外,即使在神经网络被实例化时,在训练期间要学习的变量也可保持未初始化(即,值或值的源未被赋值)。下面结合图4至图6详细讨论在神经网络的编译和训练期间处理这些学习变量的技术。
[0057]
图4是根据各种实施方案的图3的编译器引擎300和合成引擎310的更详细图示。如图所示,编译器引擎300包括语法树生成器406、实例化器408和编译的代码302。合成引擎310包括网络构建器412和包括学习变量410的初始网络312。
[0058]
结合给定代理定义402来描述编译器引擎300和合成引擎310的操作。代理定义402的源代码包括多个层规范,其中每个层规范包括使用基于数学的编程语言定义的一个或多
个数学表达式404(单个称为数学表达式404)。如以上所讨论,每个数学表达式404包括右侧部分,所述右侧部分指定了在评估左侧部分指定的数学运算时确定的值。数学表达式404可被分组,使得每个组与神经网络架构的不同层相对应。代理定义402的源代码指定了不同组的数学表达式404之间的链路。
[0059]
编译器引擎300将代理定义402的源代码编译成编译的代码302。为了生成编译的代码302,编译器引擎300包括语法树生成器406和实例化器408。语法树生成器406解析代理定义402的源代码并且生成源代码的抽象语法树(ast)表示。在各种实施方案中,ast表示包括节点的树结构,其中常量和变量是包括运算符或语句的父节点的子节点。ast封装了源代码的语法结构,即源代码内包含的语句、数学表达式、变量以及它们之间的关系。
[0060]
实例化器408处理ast以生成编译的代码302。在操作中,实例化器408对ast执行语义分析,生成代码的中间表示,执行优化并且生成包括编译的代码302的机器代码。对于语义分析,实例化器408检查源代码的语义正确性。在各种实施方案中,语义检查确定包括在ast中的变量和类型是否正确声明并且确定运算符和对象的类型匹配。为了执行语义分析,实例化器408对包括在源代码中的给定对象或函数类型的所有实例进行实例化。另外,实例化器408生成表示所有命名对象——类、变量和函数——的符号表,所述符号表被创建并且用于对源代码执行语义检查。
[0061]
实例化器408对符号表中的每个变量执行映射运算以确定变量的值是否被赋值给源代码中标识的源。实例化器408将不具有已赋值的源的变量标记为潜在学习变量,即在训练过程期间要学习的变量。在各种实施方案中,这些变量不具有指示变量是学习变量的特殊类型。另外,源代码未明确指示变量是学习变量。实例化器408自动将那些变量标识为潜在变量,这些变量将借助于未赋值给源的那些变量来学习。因此,实例化器408的操作不同于传统编译器和解释器,所述传统编译器和解释器不允许变量未赋值、未声明或以其他方式未定义并且在编译过程期间引发错误。
[0062]
实例化器408将编译的代码302和潜在学习变量列表传输到合成引擎310。如以上所讨论,合成引擎310基于编译的代码302和影响编译的代码302如何执行的一个或多个参数来生成初始网络312。特别地,网络构建器412分析编译的代码302的结构以确定神经网络架构的不同层以及给定层的输出如何链接到一个或多个后续层的输入中。在各种实施方案中,网络构建器412还经由例如用户输入接收包括在编译的代码中的某些变量的值。
[0063]
包括在网络构建器412中的学习变量标识符414标识初始网络312内的学习变量410。在操作中,鉴于由网络构建器412确定的神经网络架构的层的结构和由网络构建器412接收的变量的任何值,学习变量标识器414分析从实例化器408接收的潜在学习变量的列表。对于潜在学习变量中的每一个,学习变量标识符414确定神经网络架构的给定层中的潜在学习变量的源是否是来自神经网络架构的先验层的输出。如果存在这种源,则潜在学习变量不是在神经网络训练期间要学习的变量。类似地,学习变量标识符414确定潜在学习变量的值是否已明确提供给网络构建器412。如果已经提供这种源,则潜在学习变量不是在神经网络训练期间要学习的变量。以此方式,学习变量标识符414处理潜在学习变量中的每一个以确定潜在学习变量是否确实是在训练期间要学习的变量。一旦已经处理了所有潜在学习变量,学习变量标识符414标识未确定源的潜在学习变量中的任何一个。这些变量构成初始网络312的学习变量410。
[0064]
在各种实施方案中,学习变量标识符414致使网络生成gui 202显示由学习变量标识符414标识的学习变量410。学习变量410然后可由gui 202的用户(诸如神经网络架构的开发人员)确认或以其他方式修改。
[0065]
如以上所讨论,训练引擎320基于训练数据250来训练初始网络312以生成经训练的网络322。经训练的网络322包括在训练过程期间学习的学习变量410的值。经训练的网络322可以比初始网络312更高的准确度执行一个或多个预期操作。训练引擎320可执行任何技术上可行的类型的训练操作,包括反向传播、梯度下降等。
[0066]
图5a是示出根据各种实施方案的图3的网络生成gui如何促进神经网络的生成的屏幕截图。如图所示,gui面板500包括模型定义面板502、超参数面板504和学习变量面板508。gui面板500驻留在网络生成gui 202内。
[0067]
模型定义面板502是从用户获得网络架构的源代码的文本字段。例如,模型定义面板502可接收包括定义神经网络架构的不同层的一系列数学表达式的源代码。在一个实施方案中,模型定义面板502展示网络的一部分并且省略不需要由用户编辑的其他部分,诸如模块导入等。
[0068]
在所示示例中,模型定义面板502包括神经网络示例网(examplenet)的定义。如定义的第三行所示,示例网包括十层的流水线:c1、n、p2、c3、n、p4、c5、c6、c7、f8、f9和s10。十层中的每个层都在“其中”子句后面的行中定义。例如,c1被定义为卷积层,p2被定义为最大池化层,f8被定义为全连接层,并且s10被定义为柔性最大值层。卷积、最大池化、全连接和柔性最大值这些类型的层中的每一者都与包括在源代码中的一系列数学表达式相关联。
[0069]
图5b是示出模型定义面板502的另一个部分的屏幕截图,所述部分包括与示例网的网络架构中使用的层的类型中的每一种相关联的数学表达式。在这些数学表达式中,一些变量是明确赋值的,而另一些变量是未赋值的学习变量。特别地,卷积、全连接和柔性最大值数学表达式中的变量w和b是在训练期间要学习的未赋值的变量。如图5b所示,包括这些学习变量的数学表达式没有任何明确标识,所述明确标识标识这些变量是要学习的。相反,这些学习变量使用标准数学符号指定。
[0070]
使用以上结合图4讨论的技术,编译器引擎300和合成引擎310在编译包括在模型定义面板502中的示例网的代码时标识学习变量。在示例网的情况下,因为卷积、全连接和柔性最大值数学表达式中的变量w和b是未赋值的变量,所以编译器引擎300和合成引擎310将c1、c3、c5、c6、c7、f8、f9和s10中的每一者中的变量w和b标识为学习变量。返回参考图5a,学习变量面板508显示为示例网标识的学习变量。用户可与学习变量面板508交互以例如通过添加另外的学习变量和/或通过删除一个或多个标识的学习变量编辑学习变量。
[0071]
超参数面板504是接收影响如何训练神经网络的各种超参数的文本字段。例如,超参数面板504可从用户接收训练时期数和/或学习速率。
[0072]
网络生成器200基于从用户获得的网络架构的描述来实现以上结合图3至图4描述的技术以生成神经网络,诸如图2中所示的那些。网络生成器200还更新gui面板500以包括网络架构506。网络架构506以图形方式描绘了神经网络中层的类型和布置以及与神经网络相关联的任何其他拓扑信息。在所示示例中,网络架构506包括示例网的十层中的每个层的视觉表示。
[0073]
网络生成器200被配置为基于用户与网络架构506的交互来动态地修改在模型定
义面板502中定义的底层神经网络242。例如,网络生成器200可接收指示应修改网络架构506的特定部分的用户输入。作为响应,网络生成器200修改底层神经网络并且还以对应方式更新包括在模型定义面板502中的定义。此外,网络生成器200被配置为基于用户与模型定义面板502的交互来动态地修改网络架构506。例如,gui面板500可接收指示对模型定义面板502中阐述的描述的一个或多个改变的输入。作为响应,网络生成器200修改底层神经网络并且还更新网络架构506以反映改变。在各种实施方案中,网络生成器200在网络浏览器应用程序内操作,使得模型定义面板502中的任何修改经由网络浏览器接口接收。经修改的描述在网络浏览器的执行框架内重新编译。
[0074]
网络生成器200可经由网络生成gui 202实现上述技术,以便创建和修改包括在代理240中的神经网络242。如先前所提及,网络生成器200还可定义执行通用操作的其他类型的代理。
[0075]
上述技术为用户提供了用于创建和更新神经网络的方便机制,所述神经网络被集成到包括众多代理240的潜在复杂ai模型122中。另外,这些技术允许用户经由与对应网络架构的图形描绘的直接交互来修改定义给定代理240的程序代码。网络生成器200基于经由网络生成gui 202进行的用户交互来执行以上描述的各种操作。所公开的技术为用户提供了用于设计神经网络并与之交互的方便工具,所述神经网络向用户展示网络信息,而不是像现有技术中通常发现的那样允许该信息保持隐藏。
[0076]
图6是根据各种实施方案的用于以基于数学的编程语言定义和编译神经网络的方法步骤的流程图。尽管结合图1至图5的系统描述了方法步骤,但是本领域技术人员将理解,被配置为以任何顺序执行方法步骤的任何系统都落入本实施方案的范围内。
[0077]
如图所示,方法600开始于步骤602,其中编译器引擎300接收包括多个数学表达式的神经网络定义的源代码。源代码包括多个层规范,其中每个层规范包括使用基于数学的编程语言定义的一个或多个数学表达式。如以上所讨论,每个数学表达式包括右侧部分,所述右侧部分指定被赋值给由左侧部分指定的数学评估的变量。数学表达式可被分组,使得每个组与神经网络架构的不同层相对应。
[0078]
在步骤604处,编译器引擎300基于源代码的语法树表示来编译神经网络。语法树表示封装了源代码的语法结构,即源代码内包含的语句、数学表达式、变量以及它们之间的关系。在操作中,编译器引擎300对语法树表示执行语义分析,生成代码的中间表示,执行优化并且生成包括编译的代码302的机器代码。对于语义分析,编译器引擎300检查源代码的语义正确性。在各种实施方案中,编译器引擎300生成标识包括在源代码中的每个变量的符号表。
[0079]
在步骤606处,编译器引擎300基于源代码中未赋值的变量来标识在神经网络训练期间要学习的潜在变量。在各种实施方案中,编译器引擎300对符号表中的每个变量执行映射运算以确定变量的值是否被赋值给源代码内的源。编译器引擎将不具有已赋值的源的变量标记为潜在学习变量,即在训练过程期间需要学习的变量。在各种实施方案中,这些变量不具有指示变量是学习变量的特殊类型。另外,源代码未明确指示变量是学习变量。
[0080]
在步骤608处,合成引擎310确定神经网络的一个或多个属性。如以上所讨论,合成引擎310基于编译的代码和影响编译的代码302如何执行的一个或多个参数来生成初始网络312。特别地,合成引擎分析编译的代码302的结构以确定神经网络架构的不同层以及给
定层的输出如何链接到一个或多个后续层的输入中。在各种实施方案中,合成引擎310还经由例如用户输入接收包括在编译的代码中的某些变量的值。
[0081]
在步骤610处,合成引擎310基于在步骤606处标识的潜在学习变量和在步骤608处确定的神经网络的属性来标识神经网络的学习变量的列表。在操作中,合成引擎310根据神经网络架构的层的结构和合成引擎310接收的变量的任何值来分析接收的潜在学习变量。对于潜在学习变量中的每一个,合成引擎310确定神经网络架构的给定层中的潜在学习变量的源是否是来自神经网络架构的先验层的输出。如果存在这种源,则潜在学习变量不是在神经网络训练期间要学习的变量。类似地,合成引擎310确定是否已经明确提供了潜在学习变量的值。如果已经提供这种源,则潜在学习变量不是在神经网络训练期间要学习的变量。以此方式,合成引擎310处理潜在学习变量中的每一个以确定潜在学习变量是否确实是在训练期间要学习的变量。一旦已经处理了所有潜在学习变量,合成引擎310标识未确定源的潜在学习变量中的任何一个。这些变量构成了在步骤610处生成的学习变量的列表。
[0082]
在步骤612处,训练引擎320基于训练数据训练神经网络以确定要学习的变量的列表的值。训练引擎320可执行任何技术上可行的类型的训练操作,包括反向传播、梯度下降等。
[0083]
一般来说,以上描述的用于生成和修改神经网络的技术允许用户比常规方法允许的更快地设计和修改神经网络。除其他外,网络生成器200提供用于执行与网络生成相关联的复杂任务的简单且直观的工具。除此之外,网络生成器200方便地允许对网络架构进行的修改无缝地传播回对应的代理定义。一旦以所描述的方式训练网络,网络分析器210就执行用于分析网络功能的各种技术。
[0084]
总之,一种人工智能(ai)设计应用程序,其向用户展示用于生成、分析、评估和描述神经网络的各种工具。所述ai设计应用程序包括网络生成器,所述网络生成器生成和/或更新程序代码,所述程序代码基于用户与网络架构的图形描绘的交互来定义神经网络。所述网络生成器使开发人员能够使用数学表达式的流水线定义所述神经网络架构,所述数学表达式的流水线可直接编译而无需复杂软件堆栈。所述编译过程允许在训练过程期间要学习的变量在所述神经网络被实例化时处于未赋值。特别地,编译器将这种未赋值的变量标识为具有将在所述训练过程期间确定的值的变量。ai设计应用程序还包括网络分析器,所述网络分析器响应于测试输入在层级、神经元级和权重级处分析神经网络的行为。ai设计应用程序还包括网络评估器,所述网络评估器跨一系列训练数据样本执行神经网络的综合评估。最后,ai设计应用程序包括网络描述子,所述网络描述子以自然语言阐明神经网络的行为,并且根据一组规则约束该行为。
[0085]
所公开的技术相对于现有技术的至少一个技术优势在于:所公开的ai设计应用程序可生成复杂神经网络架构,而无需设计人员用户编写大量程序代码或与大量程序代码交互。所公开的技术相对于现有技术的另一个技术优势在于:所公开的ai设计应用程序使设计人员能够控制神经网络架构的任何特征或方面。特别地,神经网络的设计人员将神经网络定义为一系列数学运算,并且完全控制数学运算的细节。另外,ai设计应用程序自动标识将在训练过程期间学习神经网络架构内的哪些变量,而无需硬编码规则或设计人员明确标识那些变量。因此,ai设计应用程序使设计人员能够开发神经网络并且更好地理解神经网络如何操作。
[0086]
1.一些实施方案包括一种用于生成可执行神经网络的计算机实现的方法,所述方法包括:接收指定多个数学表达式的源代码,所述多个数学表达式定义神经网络的一个或多个层;对包括在所述多个数学表达式中的第一数学表达式执行一个或多个编译操作,其中所述一个或多个编译操作包括:确定包括在所述第一数学表达式中的第一变量是未赋值的,并且基于所述第一变量是未赋值的来确定在训练所述神经网络时要学习所述第一变量;以及生成与所述第一数学表达式相对应的编译的代码,所述编译的代码在执行时致使生成所述第一变量的值。
[0087]
2.如条款1所述的计算机实现的方法,其中所述第一变量在所述第一数学表达式的第一部分中指定,并且所述一个或多个操作包括:基于所述第一数学表达式的第二部分来实例化所述第一数学表达式。
[0088]
3.如条款1-2中任一项所述的计算机实现的方法,其中确定所述第一变量是未赋值的包括:确定所述第一变量的对应值在所述第一数学表达式被实例化之后是否已经赋值。
[0089]
4.如条款1-3中任一项所述的计算机实现的方法,其中确定在训练期间要学习所述第一变量进一步基于包括在所述一个或多个层中的第一层的属性。
[0090]
5.如条款1-4中任一项所述的计算机实现的方法,其中所述第一层的所述属性包括:将所述第一层的输入赋值给包括在所述一个或多个层中的第二层的输出,其中所述第一层的所述输入与所述第一变量相关联。
[0091]
6.如条款1-5中任一项所述的计算机实现的方法,其还包括:在学习变量用户接口中显示所述第一变量。
[0092]
7.如条款1-6中任一项所述的计算机实现的方法,其中在执行所述编译的代码之前,经由所述学习变量用户接口接收确认在训练期间要学习所述第一变量的确认输入。
[0093]
8.如条款1-7中任一项所述的计算机实现的方法,其还包括:在所述神经网络的训练阶段执行所述编译的代码以便确定所述第一变量的所述值。
[0094]
9.如条款1-8中任一项所述的计算机实现的方法,其中所述源代码标识包括在所述一个或多个层中的第一层与第二层之间的关系。
[0095]
10.如条款1-9中任一项所述的计算机实现的方法,其还包括:在网络浏览器应用程序内接收对所述源代码的更新,并且在所述网络浏览器的执行框架内重新编译所更新的源代码。
[0096]
11.一种计算机可读介质,所述计算机可读介质存储指令,所述指令在由处理器执行时致使所述处理器通过执行以下步骤生成可执行神经网络:接收指定多个数学表达式的源代码,所述多个数学表达式定义神经网络的一个或多个层;对包括在所述多个数学表达式中的第一数学表达式执行一个或多个编译操作,其中所述一个或多个编译操作包括:确定包括在所述第一数学表达式中的第一变量是未赋值的,并且基于所述第一变量是未赋值的来确定在训练所述神经网络时要学习所述第一变量;以及生成与所述第一数学表达式相对应的编译的代码,所述编译的代码在执行时致使生成所述第一变量的值。
[0097]
12.如条款11所述的计算机可读介质,其中所述第一变量在所述第一数学表达式的第一部分中指定,并且所述一个或多个操作包括:基于所述第一数学表达式的第二部分来实例化所述第一数学表达式。
[0098]
13.如条款11-12中任一项所述的计算机可读介质,其中确定所述第一变量是未赋值的包括:确定所述第一变量的对应值在所述第一数学表达式被实例化之后是否已经赋值。
[0099]
14.如条款11-13中任一项所述的计算机可读介质,其中确定在训练期间要学习所述第一变量进一步基于包括在所述一个或多个层中的第一层的属性。
[0100]
15.如条款11-14中任一项所述的计算机可读介质,其中所述第一层的所述属性包括:将所述第一层的输入赋值给包括在所述一个或多个层中的第二层的输出,其中所述第一层的所述输入与所述第一变量相关联。
[0101]
16.如条款11-15中任一项所述的计算机可读介质,其还包括:在学习变量用户接口中显示所述第一变量。
[0102]
17.如条款11-16中任一项所述的计算机可读介质,其中在执行所述编译的代码之前,经由所述学习变量用户接口接收确认在训练期间要学习所述第一变量的确认输入。
[0103]
18.如条款11-17中任一项所述的计算机可读介质,其还包括:在所述神经网络的训练阶段执行所述编译的代码以便确定所述第一变量的所述值。
[0104]
19.如条款11-18中任一项所述的计算机可读介质,其中生成所述编译的代码包括:将所述第一数学表达式编译成机器可执行代码。
[0105]
20.一些实施方案包括一种系统,所述系统包括:存储器,所述存储器存储软件应用程序;以及处理器,所述处理器在执行所述软件应用程序时被配置为执行以下步骤:接收指定多个数学表达式的源代码,所述多个数学表达式定义神经网络的一个或多个层;对包括在所述多个数学表达式中的第一数学表达式执行一个或多个编译操作,其中所述一个或多个编译操作包括:确定包括在所述第一数学表达式中的第一变量是未赋值的,并且基于所述第一变量是未赋值的来确定在训练所述神经网络时要学习所述第一变量;以及生成与所述第一数学表达式相对应的编译的代码,所述编译的代码在执行时致使生成所述第一变量的值。
[0106]
任何权利要求中记载的任何权利要求要素和/或本技术中描述的任何要素的任何和所有组合以任何方式落入本发明的预期范围和保护范围内。
[0107]
已呈现各种实施方案的描述以用于说明目的,但并不旨在详列或限于所公开的实施方案。在不背离所描述实施方案的范围和精神的情况下,许多修改和变型对于本领域普通技术人员来说将是显而易见的。
[0108]
本实施方案的各方面可体现为系统、方法或计算机程序产品。因此,本公开的各方面可采用以下形式:完全硬件实施方案、完全软件实施方案(包括固件、常驻软件、微代码等)或结合了软件与硬件方面的实施方案,所述实施方案在本文中通常皆可称为“模块”、“系统”或“计算机”。此外,本公开的方面可采用体现在一个或多个计算机可读介质中的计算机程序产品的形式,所述一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
[0109]
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光学、电磁、红外或半导体系统、设备或装置或前述介质的任何适合组合。计算机可读存储介质的更具体实例(非详尽列表)将包括以下介质:具有一个或多个导线的电气连接、便携式
计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦可编程只读存储器(eprom或快闪存储器)、光纤、便携式光盘只读存储器(cd-rom)、光学存储装置、磁存储装置或前述介质的任何合适组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储供指令执行系统、设备或装置使用或与其联用的程序的任何有形介质。
[0110]
参考根据本公开的实施方案的方法、设备(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应当理解,流程图图示和/或框图的每一个框以及流程图图示和/或框图的框组合可通过计算机程序指令来实现。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以生产机器。指令在经由计算机的处理器或其他可编程数据处理设备执行时能够实现一个或多个流程图和/或框图框中指定的功能/动作。这种处理器可以是但不限于通用处理器、特殊用途处理器、专用处理器或现场可编程门阵列。
[0111]
附图中的流程图和框图示出根据本公开的各种实施方案的系统、方法和计算机程序产品的可能实现方式的架构、功能性和操作。在这个方面,流程图或框图中的每个框可表示代码的模块、区段或部分,所述代码包括用于实现所指定的一个或多个逻辑功能的一个或多个可执行指令。也应当注意,在一些替代实现方式中,框中注明的功能可不按附图中注明的顺序出现。例如,连续示出的两个框实际上可基本上同时执行,或者所述框有时可按相反的顺序执行,这取决于所涉及的功能性。还应当注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可由执行指定的功能或动作的基于特殊用途硬件的系统或者特殊用途硬件和计算机指令的组合来实现。
[0112]
尽管前述内容针对本公开的实施方案,但是可在不背离其基本范围的情况下设计出本公开的其他和另外的实施方案,并且本公开的范围由随附权利要求确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献