CN112241782A - 具有建模原语的神经编程解释器 - Google Patents
具有建模原语的神经编程解释器 Download PDFInfo
- Publication number
- CN112241782A CN112241782A CN202010678297.2A CN202010678297A CN112241782A CN 112241782 A CN112241782 A CN 112241782A CN 202010678297 A CN202010678297 A CN 202010678297A CN 112241782 A CN112241782 A CN 112241782A
- Authority
- CN
- China
- Prior art keywords
- npi
- model
- primitive
- neural network
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000001537 neural effect Effects 0.000 title claims abstract description 12
- 230000006870 function Effects 0.000 claims abstract description 122
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000003062 neural network model Methods 0.000 claims abstract description 13
- 238000013528 artificial neural network Methods 0.000 claims description 36
- 238000003860 storage Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 16
- 238000012549 training Methods 0.000 claims description 15
- 210000002569 neuron Anatomy 0.000 description 28
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 210000002364 input neuron Anatomy 0.000 description 10
- 210000004205 output neuron Anatomy 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及具有建模原语的神经编程解释器。用于生成程序的方法和系统包括将高阶函数参数化以用原语函数来替换数据。针对所述高阶函数来训练神经编程解释器NPI模型。针对每个原语函数来训练相应的神经网络模型。所述神经网络模型在被调用时生成用于所述NPI模型的数据。
Description
技术领域
本发明一般地涉及神经编程解释器(neural programmer interpreter),并且更具体地,涉及使用神经编程解释器来学习程序以学习程序的结构,以及使用神经网络来学习程序的原语(primitive)的特定数据处理。
背景技术
神经编程解释器(NPI)使用来自程序的一组执行踪迹来复制该程序。NPI从而可以采取现有程序并且生成新程序,如果给出相同的输入,则该新程序生成相同的输出。但是,并不容易提供可证明的通用化保证,以使得可以证明所生成的程序针对任何输入都生成与原始程序相同的输出。这是因为NPI使用可以根据问题而变化的用户定义的外部环境,并且因为输入数据可能不完全代表可能的输入。此外,NPI设计中的任何错误都可以对其普遍性具有影响。
发明内容
一种用于生成程序的方法包括将高阶函数参数化以用原语函数来替换数据。针对所述高阶函数来训练神经编程解释器(NPI)模型。针对每个原语函数来训练相应的神经网络模型。所述神经网络模型在被调用时生成用于所述NPI模型的数据。
一种用于生成程序的系统包括NPI训练器,被配置为将高阶函数参数化以用原语函数来替换数据,并且针对所述高阶函数来训练NPI模型。原语模型训练器被配置为针对每个原语函数来训练相应的神经网络模型,所述神经网络模型在被调用时生成用于所述NPI模型的数据。
从以下将结合附图阅读的对本发明的说明性实施例的详细描述,本发明的这些和其他特性和优点将变得显而易见。
附图说明
以下描述将参考以下附图提供优选实施例的细节,这些附图是:
图1是根据本发明的实施例的神经编程解释器(NPI)模型的框图,该NPI模型复制某个原始程序的功能,并且将高阶函数与原语函数分离以简化输入的通用化;
图2是示出根据本发明的实施例的神经网络的不同层之间的功能关系的示例性神经网络的框图;
图3是示出根据本发明的实施例的可以应用于NPI模型和原语函数模型的神经网络的特定结构化实现的示例性神经网络的图;
图4是根据本发明的实施例的用于使用二级NPI学习过程基于原始程序来生成新程序的方法的框图/流程图,该新程序将高阶函数与原语函数相分离以简化输入的通用化;
图5是根据本发明的实施例的用于执行新程序的方法的框图/流程图,该新程序将高阶函数与原语函数相分离以简化输入的通用化;
图6是根据本发明的实施例的使用二级NPI学习过程基于原始程序来生成新程序的系统的框图,该新程序将高阶函数与原语函数相分离以简化输入的通用化;以及
图7是根据本发明的实施例的可以用于实现NPI系统的处理系统的框图。
具体实施方式
本发明的实施例将神经编程解释器(NPI)的任务分成被独立地学习的两个部分。第一部分处理高阶函数的结构,从而处理结构化递归特性。该第一部分可以通过NPI来训练。第二部分通过产生抽象层来处理特定程序的细节,由高阶函数调用的原语函数被使用抽象表示来处理。然后,使用输入数据的细节通过单独的神经网络来训练这些原语函数。当由本实施例生成的程序被执行时,它调用原语函数的模型来确定要在给定实例中使用的适当数据值。
然后,高阶函数可以仅被训练一次并且可以被重用,而原语函数只需用少量数据来训练。这使得针对所生成的程序设计训练数据更容易,并且提高其通用性。由本实施例生成的程序可以用于各种目的。例如,在语言识别应用中,在验证某些类型的标记语言(例如XML和HTML)中的方括号是否正确匹配时存在问题。在机器人导航应用中,本实施例可以用于生成从一个位置移动到另一位置的规划。
因此,本实施例可以使用在有限的输入上操作的程序来学习并生成可以在新的输入上操作的新程序。为了使用一个示例,本实施例可以采取可以将1位数相加的现有程序,并且生成将n位数相加的新程序。本实施例减轻了用户产生良好的训练数据集的负担。用户仅需要准备少量数据来训练原语函数。原语函数通常非常简单(例如,将两个1位数相加),并且很容易针对它们产生训练数据。这在输出程序中提供了出色的通用化。
现在参考图1,示出了NPI核心的状态程序。NPI核心102可以例如使用基于长短期记忆架构的神经网络来表示,并且复制某个原始程序的函数。NPI核心102接收输入104,例如用于执行所表示的程序的函数的一组输入数据。使用该输入,NPI核心102执行如由NPI核心的设计所规定的某个运算。NPI核心102可以与暂存区(scratch pad)交互以保存其运算的状态(如果需要多个步骤)。当从一个状态移动到下一个状态时,NPI核心102可以进入下一个内部状态112,或者可以备选地进入终止状态110或将控制转移到下一个程序108。在下一个程序转变108或终止转变110中,NPI核心102输出其运算的结果。
应该理解,本实施例使用两个不同的抽象级别来实现NPI核心102。如上所述,通过NPI学习来确定NPI核心102的通用结构(例如,确定要在给定时间执行哪些运算),而通过学习后的神经网络来确定数据处理原语(例如,为变量赋值以及其他基本运算)。在一些实施例中,NPI核心102仅包括三个子程序,它们包括:用于递归的高阶函数调用,用于在暂存区106中移动指针的移动语句,以及调用原语函数的写入语句。
移动语句可以采取两个参量:标识指针在暂存区106中的位置的环境行ID,和移动指针的方向(例如,左或右)。写入语句也可以采取两个参量:标识值在暂存区106中的位置的环境行ID,和原语函数标识符。应该注意,写入语句不需要对要被写入的实际数据进行编码,在这种高级程序表达中,它只是被标识的抽象原语函数。当写入语句被NPI核心102调用时,以下面描述的方式使用神经网络来实现原语函数以生成适当的数据值。
暂存区106可以例如包括针对空列表和非空列表的不同状态。暂存区106实现用于由NPI核心102调用的原语函数的接口。NPI核心102和暂存区106共享原语函数的标识符。
现在参考图2,示出了人工神经网络(ANN)以说明可以用于实现本实施例的NPI和原语函数的概念。ANN是受生物神经系统(例如大脑)启发的信息处理系统。ANN的关键元素是信息处理系统的结构,其包括大量并行工作以解决特定问题的高度互连的处理元素(被称为“神经元”)。此外,ANN是在使用中被训练的,并且学习涉及调整神经元之间存在的权重。通过这样的学习过程,ANN被配置用于诸如模式识别或数据分类之类的特定应用。
ANN展示了从复杂或不精确的数据中获得含义的能力,并且可以用于提取模式和检测趋势,这些模式和趋势太复杂而无法由人类或其他基于计算机的系统来检测。通常已知神经网络的结构具有输入神经元202,输入神经元202向一个或多个“隐藏”神经元204提供信息。输入神经元202与隐藏神经元204之间的连接208被加权,然后这些加权输入由隐藏神经元204根据隐藏神经元204中的某个功能来处理,并且在层之间具有加权连接208。可以存在任何数量的隐藏神经元204层,以及存在任何数量的执行不同功能的神经元。还存在不同的神经网络结构,例如卷积神经网络、最大输出网络等。最后,一组输出神经元206接受并处理来自最后一组隐藏神经元204的加权输入。
这表示“前馈”计算,其中信息从输入神经元202传播到输出神经元206。在完成前馈计算时,将输出与可从训练数据中获得的期望输出进行比较。然后,在“反馈”计算中处理相对于训练数据的误差,其中隐藏神经元204和输入神经元202接收关于从输出神经元206反向传播的误差的信息。一旦反向误差传播已完成,权重更新就被执行,其中更新加权连接208以考虑所接收的误差。这仅表示一种ANN。
现在参考附图,其中相同的标号表示相同或类似的元素,并且首先参考图3,其中示出了关于ANN架构300的附加细节。应该理解,本架构仅是示例性的,并且可以改为使用其他架构或类型的神经网络。具体地,尽管本文描述了ANN的硬件实施例,但是应该理解,可以以软件实现或模拟神经网络架构。包括本文描述的硬件实施例旨在以高级通用性来说明神经网络计算的一般原则,并且不应被解释为以任何方式进行限制。
此外,下面描述的神经元层和连接它们的权重通过一般方式进行了描述,并且可以由具有任何适当程度或类型的互连性的任何类型的神经网络层替换。例如,层可以包括卷积层、汇集层、全连接层、软最大层或任何其他适当类型的神经网络层。此外,可以根据需要添加或删除层,并且可以针对更复杂形式的互连而省略权重。
在前馈运算期间,一组输入神经元302各自并行地向相应权重304行提供输入电压。在本文描述的硬件实施例中,权重304各自具有可设置的电阻值,使得电流输出从权重304流到相应的隐藏神经元306以表示加权输入。在软件实施例中,权重304可以简单地被表示为乘以相关神经元输出的系数值。
根据硬件实施例,由给定权重304输出的电流被确定为其中V是来自输入神经元302的输入电压,r是权重304的设置电阻。来自每个权重的电流按列相加,并且流向隐藏神经元306。一组参考权重307具有固定电阻,并且将它们的输出组合成提供给每个隐藏神经元306的参考电流。因为电导值只能是正数,所以需要一些参考电导来编码矩阵中的正值和负值。由权重304产生的电流是连续取值的并且是正的,因此参考权重307用于提供参考电流,在该参考电流之上,电流被认为具有正值,而在该参考电流之下,电流被认为具有负值。在软件实施例中不需要使用参考权重307,其中可以精确和直接地获得输出和权重的值。作为使用参考权重307的备选方案,另一个实施例可以使用单独的权重304阵列来捕获负值。
隐藏神经元306使用来自权重304阵列和参考权重307的电流来执行一些计算。隐藏神经元306然后将它们自己的电压输出到另一权重304阵列。该阵列以相同的方式执行,其中一列权重304从它们各自的隐藏神经元306接收电压,以产生按行相加并且被提供给输出神经元308的加权电流输出。
应当理解,通过插入附加阵列层和隐藏神经元306,可以实现任何数量的这些级。还应当注意,一些神经元可以是向阵列提供恒定输出的恒定神经元(constant neuon)309。恒定神经元309可以存在于输入神经元302和/或隐藏神经元306之间,并且仅在前馈运算期间使用。
在反向传播期间,输出神经元308提供反向跨越权重304阵列的电压。输出层将所生成的网络响应与训练数据进行比较并计算误差。该误差作为电压脉冲被施加到阵列,其中脉冲的高度和/或持续时间被与误差值成比例地调制。在该示例中,权重304的行从相应的输出神经元308并行地接收电压,并且将该电压转换成电流,该电流逐列相加以向隐藏神经元306提供输入。隐藏神经元306将加权反馈信号与其前馈计算的导数相合并,并且在将反馈信号电压输出到其相应列的权重304之前存储误差值。这种反向传播通过整个网络300,直到所有隐藏神经元306和输入神经元302都存储了误差值。
在权重更新期间,输入神经元302和隐藏神经元306正向施加第一权重更新电压,并且输出神经元308和隐藏神经元306通过网络300反向施加第二权重更新电压。这些电压的组合在每个权重304内产生状态变化,使得权重304呈现新的电阻值。以这种方式,可以训练权重304以使神经网络300适应其处理中的误差。应当注意,前馈、后向传播、以及权重更新这三种操作模式彼此不重叠。
如上所述,可以例如使用相对复杂的加权电路或使用阻性交叉点器件,以软件或硬件来实现权重304。这样的阻性器件可以具有开关特性,这些开关特性具有可以用于处理数据的非线性。权重304可以属于被称为阻性处理单元(RPU)的一类器件,因为它们的非线性特性被用于在神经网络300中执行计算。RPU器件可以用阻性随机存取存储器(RRAM)、相变存储器(PCM)、可编程金属化单元(PMC)存储器或者具有非线性阻性开关特性的任何其他器件来实现。这样的RPU器件还可以被视为忆阻系统。
现在参考图4,示出了用于使用二级NPI来生成程序的方法。方框402接受要被复制的程序的一组执行踪迹作为输入。这些执行踪迹可以包括例如由原始程序针对各种不同输入和不同条件而执行的多组有序系统调用和运算。应该理解,原始程序的运算不可直接确定(例如,源代码不可用,并且在某些情况下,可执行二进制代码甚至可能不可用)。因此,本实施例设法仅使用原始程序的执行记录来复制原始程序。
方框402可以执行输入踪迹的规范化。这可以包括搜索每个递归调用中的输入指针并且使用新输入替换这些输入指针(例如,通过对这些输入指针进行程序转换(tupling))。因此,如果存在两个指针移动运算MOVE INPUT1_PTRLEFT和MOVE INPUT2_PTRLEFT,则这些运算可以由新运算MOVE INPUT_PTRLEFT替换,其中“INPUT_PTR”指向具有值(INPUT1,INPUT2)的元组。然后,方框402可以规范化递归调用,从而搜索未采取高阶函数的结构化形式的递归调用并且将它们变成结构化递归调用。例如,方框420可以插入不影响计算但产生高阶函数形式的运算。
方框404从原始程序中提取高阶函数。“高阶函数”是可以采取其他函数作为输入的函数。因此,可以递归地使用高阶函数。术语“高阶”在本文中与“原语”函数形成对比,原语函数在本文中被简单地定义为不是高阶函数的那些函数。高阶函数包括诸如“accumulate(累加)”、“scan(扫描)”、“map(映射)”、“fold(折叠)”和“reduce(化简)”之类的函数。原语函数包括例如改变存储变量的值的数据赋值运算。高阶函数的类型相对较少,从而可以确定存在于原始程序中的高阶函数。例如,方框404可以查询模板数据库以了解各种高阶函数。对于每个结构化递归调用,方框404通过与模板数据库相匹配来确定哪个高阶函数对应于该调用。
方框406通过用对原语函数的调用替换函数中的特定数据,来将所提取的高阶函数参数化。例如,对读取或写入暂存区106中的一部分内存的每个调用被相应的原语函数所替换。每个原语函数与相应的标识符相关联。应该注意,给定运算的多个实例可以存在于特定高阶函数中,并且可以由不同的相应原语函数来表示。
方框408产生所提取的高阶函数的踪迹。这可以通过识别输入踪迹中的真实数据并且用原语函数调用替换这些数据运算(通过用相应的原语函数标识符替换该数据)来完成。然后,方框410使用修改后的执行踪迹,针对程序中的相应高阶函数来训练一个或多个NPI模型。
方框412产生原语函数的踪迹。对于每个原语函数,根据该函数的定义来识别一组输入。例如,在Accumulate高阶函数的情况下,原语函数P可以具有两个输入:元组(INPUT1,INPUT2)和运算“carry(进位)”。针对每个递归调用产生了训练数据,其中输入是在当前状态下函数的输入的所有值,并且其中输出是由原语函数替换的值。例如,可以通过在对应于原语函数的执行踪迹中查找真实数据值,来获得原语函数P的训练数据。
然后,方框414使用在方框412中产生的踪迹,针对每个原语函数训练相应的神经网络模型。用于训练原语函数的神经网络可以是任何与现有的特定问题相一致的适当结构。但是,期望可以使用相对简单的神经网络(例如,全连接神经网络)对简单的原语函数进行建模。
现在参考图5,示出了用于执行已通过本实施例的二级NPI生成的复制程序的方法。方框502加载所生成的程序的NPI核心102。方框504使用NPI核心102来执行一个或多个高阶函数,每个高阶函数可以调用一个或多个原语函数以处理特定数据。对于每个原语函数调用,方框506执行对应的训练后的模型以在给定一组当前输入的情况下,输出由训练后的模型规定的特定数据值或其他运算。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
本说明书中对本发明的“一个实施例”或“实施例”以及它们的其他变型的引用指结合该实施例描述的特定特性、结构、特征等被包括在本发明的至少一个实施例中。因此,本说明书的各种位置中出现的短语“在一个实施例中”或“在实施例中”以及任何其他变型不一定都指同一实施例。
应该理解,以下“/”、“和/或”以及“至少一个”(例如,在“A/B”、“A和/或B”以及“A和B中的至少一个”的情况下)的任意一个的使用旨在包含仅选择第一列出的选项(A),或者仅选择第二列出的选项(B),或者选择两个选项(A和B)。作为进一步实例,在“A、B和/或C”以及“A、B和C中的至少一个”的情况下,这样的措词旨在包含仅选择第一列出的选项(A),或者仅选择第二列出的选项(B),或者仅选择第三列出的选项(C),或者仅选择第一和第二列出的选项(A和B),或者仅选择第一和第三列出的选项(A和C),或者仅选择第二和第三列出的选项(B和C),或者选择所有三个选项(A和B和C)。这可以扩展到所列出数量的项,如本领域和相关领域的普通技术人员容易地显而易见的。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以,作为一步实现,并行地执行,基本并行地执行,以部分或全部暂时重叠的方式执行,或者它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
现在参考图6,示出了NPI系统600。NPI系统包括硬件处理器602和存储器604,并且还可以包括一个或多个功能模块。功能模块可以以存储在存储器604中并由硬件处理器602执行的软件的形式实现。在其他实施例中,一个或多个功能模块可以以一个或多个分离硬件组件的形式(例如以专用集成芯片或现场可编程门阵列的形式)实现。
NPI核心606使用神经网络来实现,该神经网络由NPI训练器608使用一组执行踪迹来训练。首先,NPI训练器608将NPI核心606参数化以识别使用特定数据的实例,并且用原语函数调用替换这些实例。然后,NPI训练器608使用存储在存储器604中的一组执行踪迹605来训练NPI核心606的高阶函数。原语模型训练器610使用基于最相关用例的训练数据,针对每个原语函数训练相应的原语函数模型612。
在执行期间,NPI核心606被执行以执行复制程序的高阶函数。只要NPI核心606执行原语函数,对应的原语函数模型612就被用于提供用于该运算的适当值。
现在参考图7,示出了可以表示NPI系统600的示例性处理系统700。处理系统700包括至少一个处理器(CPU)704,CPU 704经由系统总线702在操作上耦接到其他组件。高速缓存706、只读存储器(ROM)708、随机存取存储器(RAM)710、输入/输出(I/O)适配器720、声音适配器730、网络适配器740、用户接口适配器750和显示适配器760在操作上耦接到系统总线702。
第一存储设备722通过I/O适配器720在操作上耦接到系统总线702。存储设备722可以是以下任何一项:磁盘存储设备(例如磁盘或光盘存储设备)、固态磁设备等。存储设备722可以是相同类型的存储设备或不同类型的存储设备。
扬声器732通过声音适配器730在操作上耦接到系统总线702。收发器742通过网络适配器740在操作上耦接到系统总线702。显示设备762通过显示适配器760在操作上耦接到系统总线702。
第一用户输入设备752通过用户接口适配器750在操作上耦接到系统总线702。用户输入设备752可以是以下任何一项:键盘、鼠标、小键盘、图像捕获设备、运动感测设备、麦克风、包括至少两个上述设备的功能的设备等。当然,还可以使用其他类型的输入设备,同时保持本原理的精神。用户输入设备752可以是相同类型的用户输入设备或不同类型的用户输入设备。用户输入设备752用于向系统700输入信息以及从系统700输出信息。
当然,如本领域的技术人员很容易构想的,处理系统700还可以包括其他元件(未示出),以及可以省略某些元件。例如,可以在处理系统700中包括各种其他输入设备和/或输出设备,具体取决于处理系统700的特定实现,如本领域的普通技术人员很容易理解的。例如,可以使用各种类型的无线和/或有线输入和/或输出设备。此外,还可以利用采用各种配置的附加处理器、控制器、存储器等,如本领域的普通技术人员很容易理解的。给出本文提供的本原理的教导,本领域的普通技术人员很容易构想处理系统700的这些和其他变型。
NPI核心606和原语函数模型610还可以与总线602对接,以彼此通信以及与其他硬件通信。相应的训练器608和612与NPI核心606和原语函数模型610通信,并且从适当的存储设备访问运算所需的适当执行踪迹。
在描述具有建模原语的神经编程解释器的优选实施例(它们旨在是说明性的而非限制性的)之后,应该注意,本领域的技术人员可以根据上面的教导做出修改和变型。因此,应该理解,可以在所公开的特定实施例中进行改变,这些改变在由所附权利要求概述的本发明的范围内。已经以专利法所要求的细节和特殊性描述了本发明的各个方面,由专利证书要求保护和期望保护的事物在所附的权利要求中给出。
Claims (21)
1.一种用于生成程序的方法,包括:
使用处理器将高阶函数参数化以用原语函数来替换数据;
针对所述高阶函数来训练神经编程解释器NPI模型;以及
针对每个原语函数来训练相应的神经网络模型,所述相应的神经网络模型在被调用时生成用于所述NPI模型的数据。
2.根据权利要求1所述的方法,其中,训练所述NPI模型包括:识别包括用于原语函数标识符的参量的写入语句。
3.根据权利要求1所述的方法,其中,将所述高阶函数参数化包括:识别数据值赋值运算,并且用相应的原语函数来替换每个所识别的数据值赋值运算。
4.根据权利要求1所述的方法,还包括:基于原始程序的执行踪迹,确定所述原始程序内的一个或多个高阶函数。
5.根据权利要求4所述的方法,还包括:通过用来自多个运算的相应输入指针的元组替换所述多个运算中的输入指针,来规范化所述原始程序的所述执行踪迹。
6.根据权利要求4所述的方法,其中,每个执行踪迹包括由所述原始程序执行的系统调用的日志。
7.根据权利要求1所述的方法,还包括:通过使用新的输入执行训练后的NPI模型来执行所生成的程序,其中,所述训练后的NPI模型在原语函数被调用时调用所述相应的神经网络模型。
8.根据权利要求1所述的方法,其中,表示原语函数的每个神经网络模型被实现为全连接神经网络。
9.根据权利要求1所述的方法,其中,所述NPI模型被实现为长短期记忆神经网络。
10.根据权利要求1所述的方法,其中,针对每个原语函数来训练所述相应的神经网络模型包括:确定用于每个原语函数的相应训练数据集。
11.一种计算机可读存储介质,包括用于生成程序的计算机可读程序,其中,所述计算机可读程序在计算机上被执行时使得所述计算机执行根据权利要求1至10中任一项所述的方法的步骤。
12.一种用于生成程序的系统,包括:
神经编程解释器NPI训练器,被配置为将高阶函数参数化以用原语函数来替换数据,并且针对所述高阶函数来训练NPI模型;以及
原语模型训练器,被配置为针对每个原语函数来训练相应的神经网络模型,所述相应的神经网络模型在被调用时生成用于所述NPI模型的数据。
13.根据权利要求12所述的系统,其中,所述NPI训练器还被配置为:识别包括用于原语函数标识符的参量的写入语句。
14.根据权利要求12所述的系统,其中,所述NPI训练器还被配置为:识别数据值赋值运算,并且用相应的原语函数来替换每个所识别的数据值赋值运算。
15.根据权利要求12所述的系统,其中,所述NPI训练器还被配置为:基于原始程序的执行踪迹,确定所述原始程序内的一个或多个高阶函数。
16.根据权利要求15所述的系统,其中,所述NPI训练器还被配置为:通过使用来自多个运算的相应输入指针的元组替换所述多个运算中的输入指针,来规范化所述原始程序的所述执行踪迹。
17.根据权利要求15所述的系统,其中,每个执行踪迹包括由所述原始程序执行的系统调用的日志。
18.根据权利要求12所述的系统,其中,训练后的NPI模型被配置为:在原语函数被调用时调用所述相应的神经网络模型。
19.根据权利要求12所述的系统,其中,表示原语函数的每个神经网络模型被实现为全连接神经网络。
20.根据权利要求12所述的系统,其中,所述NPI模型被实现为长短期记忆神经网络。
21.一种包括模块的系统,所述模块被分别配置为执行根据权利要求1至10中任一项所述的方法的每个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/514528 | 2019-07-17 | ||
US16/514,528 US11836613B2 (en) | 2019-07-17 | 2019-07-17 | Neural programmer interpreters with modeled primitives |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112241782A true CN112241782A (zh) | 2021-01-19 |
Family
ID=74170687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010678297.2A Pending CN112241782A (zh) | 2019-07-17 | 2020-07-15 | 具有建模原语的神经编程解释器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11836613B2 (zh) |
CN (1) | CN112241782A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681280A (zh) * | 2007-05-25 | 2010-03-24 | 微软公司 | 使用外部调试基础结构的进程内调试 |
CN102708053A (zh) * | 2012-04-27 | 2012-10-03 | 北京邮电大学 | 程序路径中确定函数调用的上下文环境影响的方法 |
CN104662513A (zh) * | 2012-07-10 | 2015-05-27 | 洛林·克雷默 | 自动改进程序编译中的并行处理的方法及其系统 |
US20160162517A1 (en) * | 2014-12-08 | 2016-06-09 | International Business Machines Corporation | Defining pairing rules for connections |
US20160260011A1 (en) * | 2015-03-05 | 2016-09-08 | International Business Machines Corporation | Cardinality estimation using artificial neural networks |
US20170140271A1 (en) * | 2015-11-12 | 2017-05-18 | Google Inc. | Neural programming |
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN108053033A (zh) * | 2017-12-27 | 2018-05-18 | 中南大学 | 一种函数调用序列生成方法和系统 |
US20180321916A1 (en) * | 2017-05-02 | 2018-11-08 | International Business Machines Corporation | Method, computer readable storage medium, computer program product and computer |
CN109952580A (zh) * | 2016-11-04 | 2019-06-28 | 易享信息技术有限公司 | 基于准循环神经网络的编码器-解码器模型 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7448022B1 (en) * | 2004-02-10 | 2008-11-04 | Prasad Ram | Dynamic software composition in a component-based software system |
US20200233855A1 (en) * | 2019-01-21 | 2020-07-23 | saf.ai | Methods For Self-Aware, Self-Healing, And Self-Defending Data |
-
2019
- 2019-07-17 US US16/514,528 patent/US11836613B2/en active Active
-
2020
- 2020-07-15 CN CN202010678297.2A patent/CN112241782A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681280A (zh) * | 2007-05-25 | 2010-03-24 | 微软公司 | 使用外部调试基础结构的进程内调试 |
CN102708053A (zh) * | 2012-04-27 | 2012-10-03 | 北京邮电大学 | 程序路径中确定函数调用的上下文环境影响的方法 |
CN104662513A (zh) * | 2012-07-10 | 2015-05-27 | 洛林·克雷默 | 自动改进程序编译中的并行处理的方法及其系统 |
US20160162517A1 (en) * | 2014-12-08 | 2016-06-09 | International Business Machines Corporation | Defining pairing rules for connections |
US20160260011A1 (en) * | 2015-03-05 | 2016-09-08 | International Business Machines Corporation | Cardinality estimation using artificial neural networks |
US20170140271A1 (en) * | 2015-11-12 | 2017-05-18 | Google Inc. | Neural programming |
CN109952580A (zh) * | 2016-11-04 | 2019-06-28 | 易享信息技术有限公司 | 基于准循环神经网络的编码器-解码器模型 |
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
US20180321916A1 (en) * | 2017-05-02 | 2018-11-08 | International Business Machines Corporation | Method, computer readable storage medium, computer program product and computer |
CN108053033A (zh) * | 2017-12-27 | 2018-05-18 | 中南大学 | 一种函数调用序列生成方法和系统 |
Non-Patent Citations (2)
Title |
---|
DA XIAO 等: "Improving the universality and learnablity of neural programmer-interpreters with combinator abstraction", 《ARXIV:1802.02696V1[CS.LG]》, 8 February 2018 (2018-02-08), pages 1 - 16 * |
解笑: "基于神经编程解释器的程序生成方法研究", 《WWW.BAIDU, XUESHU》, 19 December 2018 (2018-12-19), pages 1 - 58 * |
Also Published As
Publication number | Publication date |
---|---|
US20210019613A1 (en) | 2021-01-21 |
US11836613B2 (en) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924227B (zh) | 电阻处理单元 | |
Michel et al. | Qualitative analysis and synthesis of recurrent neural networks | |
Skapura | Building neural networks | |
US9330355B2 (en) | Computed synapses for neuromorphic systems | |
JP2022153634A5 (zh) | ||
JP6724870B2 (ja) | 人工ニューラルネットワーク回路の訓練方法、訓練プログラム、及び訓練装置 | |
US20150269481A1 (en) | Differential encoding in neural networks | |
US11010560B2 (en) | Multi-resolution convolutional neural networks for sequence modeling | |
US10552734B2 (en) | Dynamic spatial target selection | |
US11263516B2 (en) | Neural network based acoustic models for speech recognition by grouping context-dependent targets | |
US11341413B2 (en) | Leveraging class information to initialize a neural network language model | |
KR20210117331A (ko) | 회귀 신경망의 르장드르 메모리 유닛 | |
Bi et al. | Avoiding the local minima problem in backpropagation algorithm with modified error function | |
CN116134521A (zh) | 用于更新模拟交叉型阵列的稀疏可修改比特长度确定性stic脉冲生成 | |
Ugur et al. | A web‐based tool for teaching neural network concepts | |
Ortega-Zamorano et al. | FPGA implementation of neurocomputational models: comparison between standard back-propagation and C-Mantec constructive algorithm | |
US11836613B2 (en) | Neural programmer interpreters with modeled primitives | |
Harsha et al. | Artificial neural network model for design optimization of 2-stage op-amp | |
CN113490955A (zh) | 用于产生金字塔层的架构的系统和方法 | |
WO2023107207A1 (en) | Automated notebook completion using sequence-to-sequence transformer | |
US11443171B2 (en) | Pulse generation for updating crossbar arrays | |
WO2020054402A1 (ja) | ニューラルネットワーク処理装置、コンピュータプログラム、ニューラルネットワーク製造方法、ニューラルネットワークデータの製造方法、ニューラルネットワーク利用装置、及びニューラルネットワーク小規模化方法 | |
US20200151569A1 (en) | Warping sequence data for learning in neural networks | |
Vaidyaraman et al. | Braille–Latin conversion using memristive bidirectional associative memory neural network | |
CN114375447A (zh) | 计算系统中的语言语句处理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |