CN111142857A - 基于离线监督学习的函数式程序自动合成方法 - Google Patents
基于离线监督学习的函数式程序自动合成方法 Download PDFInfo
- Publication number
- CN111142857A CN111142857A CN201911301796.3A CN201911301796A CN111142857A CN 111142857 A CN111142857 A CN 111142857A CN 201911301796 A CN201911301796 A CN 201911301796A CN 111142857 A CN111142857 A CN 111142857A
- Authority
- CN
- China
- Prior art keywords
- candidate
- subprogram
- state tree
- program
- steps
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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/045—Combinations of 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于离线监督学习的函数式程序自动合成方法,首先利用约束逻辑编程系统miniKanren将用户提供的输入输出示例编码成包含关系约束信息的状态树的形式,然后结合状态树中路径信息和上下文信息作为特征信息输入到神经网络中,输出各个候选子程序被选择的概率分布,并在每个迭代过程中选择概率最高的候选子程序来构建出满足输入输出示例的函数式程序。此外,为了提高离线监督学习的效率,本发明还提出了三种不同的训练样本生成策略生成丰富多样性的训练样本,不仅使得基于离线监督学习神经网络模型具备高合成精度和强泛化性,并大幅度地减少了程序合成步长,极大地提高了程序合成的效率,使得基于本方法而设计出的程序合成系统具备实时性。
Description
技术领域
本发明涉及程序语言与人工智能交叉领域,具体涉及一种离线监督学习的函数式程序自动合成方法。
背景技术
随着软件工程的发展,程序合成技术在减少软件从事人员的负担,提高软件开发的生产力等方面发挥着至关重要的作用。在程序合成领域,通过少量的输入输出示例自动地合成满足用户需求的程序(Programming By Examples,简称PBE)受到越来越多的关注。其原因一方面是因为对于一般的用户而言,相比数理逻辑表达式,撰写输入输出示例更容易;另一方面是更容易利用统计模型来实现这种程序合成策略。
过去,主要有两类方法来解决PBE问题。一类是基于符号系统在给定目标语言的领域空间中使用枚举搜索或演绎推理算法合成满足需求的程序。这类方法的穷举搜索空间一般是异常巨大的,因此会导致可扩展性很差,无法合成大规模的程序;另一类是使用统计模型,即基于数据驱动的机器学习技术。通过给定大规模的训练数据集得到一个统计模型并利用其合成满足需求的程序。此类方法可以有效地缩减搜索空间,但是由于机器学习的不可解释性,无法保证合成程序的正确性。
因此,当下最新的研究思路是将上述两种类方法做有机的结合,通过机器学习技术来指导符号系统的搜索,不仅有效地缩减了搜索空间,并提高了合成程序的正确性。但是因为两种系统本质的差异性,如何做到更好的有机结合,以兼顾程序合成的效率,正确性等方面依然是一个具备挑战性的问题。
发明内容
本发明提出了一种基于离线监督学习的函数式程序自动合成方法,利用神经网络模型指导符号系统搜索,通过用户给定的输入输出示例,自动地合成满足输入输出示例的程序。其中神经网络模型的训练采用离线监督学习的方式,不仅简化了模型参数优化操作,还可以提高程序合成的准确率和效率。
本发明提出的一种基于离线监督学习的函数式程序自动合成方法,包括以下步骤:
步骤一:对给定的输入输出示例对,利用miniKanren约束逻辑编程系统基于三种不同的策略生成状态树形式的训练样本;
步骤二:从状态树中提取关系约束,并用神经网络模型对其进行编码,得到关系约束的嵌入信息;
步骤三:从状态树中提取程序执行轨迹,即候选子程序的信息,利用神经网络对其进行编码,得到候选子程序的嵌入信息;
步骤四:针对每个候选子程序计算其上下文的嵌入信息;
步骤五:将关系约束、候选子程序以及候选子程序上下文三者的嵌入信息进行拼接,得到特征矩阵,输入到神经网络中,计算出候选子程序的概率分布;
步骤六:根据目标程序的子程序计算出对应的one-hot向量,设计损失函数计算候选子程序的概率分布与该one-hot向量的误差,并将其反向传播,调整神经网络模型参数。
步骤七:重复步骤二至步骤六,直至神经网络模型的精度在训练集和验证集上均达到预期。
步骤八:利用训练好的神经网络模型基于给定的输入输出示例和miniKanren进行交互,合成满足需求的程序。
本发明中,所述步骤一中利用miniKanren约束逻辑编程系统基于三种不同的策略生成状态树形式的训练样本包括以下步骤:
步骤A1:将输入输出示例输入到miniKanren中,输出状态树;对状态树的叶子节点进行展开,将得到的所有状态树插入到训练样本队列中。每次所选取的叶子节点满足性质:从状态树的根节点到该叶子节点的路径上的程序构成目标程序的子程序。
步骤A2:设置状态树展开步数T,其数值等于2倍的目标程序合成步数。将输入输出示例输入到miniKanren中,得到状态树。随机选择状态树的叶子节点进行展开,当展开步数达到T时结束展开,将得到的所有状态树插入到训练样本队列中。
步骤A3:设置随机种子S,S∈[0,1],S是实数。设置状态树展开步数T,其值与步骤A2中设置的步数相同。将输入输出示例输入到miniKanren中,输出状态树。根据S的值,对状态树进行不同的展开;当S小于0.5时,按照步骤A1的策略选择叶子节点对状态树进行展开;当S大于等于0.5时,按照步骤A2的策略选择叶子节点对状态树进行展开;当展开步数达到T时结束展开,将得到的所有状态树插入到训练样本队列中。
本发明中,所述步骤二具体包括以下步骤:
步骤B1:获取状态树叶子节点的关系约束,将关系约束进行分词并使用word2vector模型计算出对应分词的嵌入词向量。
步骤B2:将关系约束的嵌入词向量输入到以LSTM为内核的编码器中计算出关系约束的嵌入向量,得到关系约束的嵌入信息。
本发明中,所述步骤三中利用神经网络对其进行编码,得到候选子程序的嵌入信息包括以下步骤:
步骤C1:读取从状态树的根节点到叶子节点的一条路径信息作为一个候选子程序。
步骤C2:将候选子程序进行分词并使用word2vector模型计算出对应分词的嵌入词向量。
步骤C3:将候选子程序的嵌入词向量输入到以LSTM为内核的编码器中并计算出候选子程序的嵌入向量,得到候选子程序的嵌入信息;其中使用的编码器与步骤B2中使用的编码器一致。
本发明中,所述步骤四中针对每个候选子程序计算其上下文的嵌入信息的方式如公式(1)所示:
本发明中,所述步骤六中one-hot向量计算包括以下步骤:
步骤D1:初始化向量V=[0],n为候选子程序的数目。
步骤D2:从左至右遍历状态树的叶子节点,获取与含有与目标子程序相同程序信息的叶子节点,并获取下标信息index。
步骤D3:令V[index]=1,得到one-hot向量V。
本发明中,所述步骤六中损失函数如公式(2)所示:
loss=-V log P (2)
其中P为概率分布,V为one-hot向量。
本发明中,所述步骤八具体包括以下步骤:
步骤E1:设置信号变量Signal,最大合成时间Tmax,最大合成迭代次数Imax;初始化信号变量Signal为空,最大合成时间Tmax为10分钟,最大合成迭代次数Imax为两倍的目标程序长度。
步骤E2:通过候选子程序的概率分布,选取概率最高的候选子程序。
步骤E3:检查当前时间Tcur和当前迭代次数Icur,若超过指定的最大合成时间和最大合成迭代次数,则停止迭代合成,表示程序合成失败;反之进入步骤E4;
步骤E4:将步骤E2选取的候选子程序输入到miniKanren中,返回得到Signal的更新值。当Signal的值为Solved,表示程序合成成功,程序合成结束;反之,跳转至步骤E2。
本发明提出的基于离线监督学习的函数式程序自动合成方法的优点主要体现在以下两个方面:
(1)利用神经网络指导符号系统搜索,对使用符号系统对输入输入示例进行编码得到关系约束,在其基础上,增加了候选子程序和对应的上下文信息作为特征,提高了程序合成的正确性和效率。
(2)引入了三种不同的训练样本生成策略,丰富了数据集。使得训练得到的神经网络模型具备更好的泛化性。
附图说明
图1表示实施本发明的基于离线监督学习的函数式程序自动合成方法的系统架构示意图;
图2表示本发明的基于离线监督学习的函数式程序自动合成方法的训练样本生成流程图;
图3表示本发明的基于离线监督学习的函数式程序自动合成方法的三种生成训练样本策略示意图;
图4表示本发明的基于离线监督学习的函数式程序自动合成方法的状态树结构示意图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明提出的基于离线监督学习的函数式程序自动合成方法通过离线监督学习的方式训练神经网络模型指导符号系统miniKanren搜索合成函数式程序。在本实施例中,以函数式语言Lisp文法的子集作为目标语言的文法集,即程序合成的搜索空间。合成的程序均为满足Lisp语言文法的lambda定义函数表达式。
图1是实施本发明,基于离线监督学习的函数式程序自动合成方法的系统架构示意图。基于该系统架构进行函数式程序合成包括以下步骤:
步骤一:如图2所示,将用户给定的输入输出样例输入到miniKanren中,生成状态树。以该状态树作为起始状态,每次通过三种不同的策略选择一条路径,利用miniKanren进行展开,得到新的状态树,并插入到训练样本池中。
其中输入输出样例包含5对满足Lisp文法的list或atom数据结构。三种选择状态树路径的策略如图3所示,具体表现为:
策略一:选择的路径读取出的子程序与目标程序的子程序重叠。如图3上部分所示,目标程序为(lambda(car(cdr(car(car(var()))))))。在第一颗状态树中,从根节点到最左侧的叶子节点的路径的子程序为(lambda(car())),目标程序最顶层部分重叠;在展开得到的第二颗状态树中,从根节点到左起第二个叶子节点的路径的子程序为(lambda(car(cdr())))与目标程序的前两个函数部分重叠;通过该策略展开,直至得到的状态树中存在包含目标程序的路径,依次得到的状态树(包括初始的状态树)加入到训练样本队列中。
策略二:设置随机种子rand,rand∈[0,1],S为实数。由于从根节点到叶子的节点的路径唯一确定,因此路径的选择等价于叶子节点的选择。则叶子节点选择的操作如公式(3)所示:
leafi=ceil(n·rand) (3)
leafi为从左至右被选中叶子节点的下标,ceil是上取整函数,n为叶子节点数目。如图3中部所示,第一颗状态树对应的rand为0.6,叶子节点的数目为3,因此第二个叶子节点被选中。该策略的展开最大次数设置为目标程序长度的两倍,图3所示的例子目标函数的长度为5,因此最终会得到10个状态树,除去初始状态树以外的其余状态树均被插入到训练样本队列中。
策略三:设置轮盘roulette以及随机种子rand。roulette与rand的取值均为0到1之间的实数。如图3所示,当轮盘的指针落于右侧(roulette的值在0至0.5之间)时,对状态树展开的策略采用策略一;反之,采用策略二展开状态树。该策略的展开最大次数设置同策略二,除去初始状态树以外的其余状态树均被插入到训练样本队列中。
通过上述三种策略得到的训练样本队列中的训练样本将被用于训练下述步骤描述的神经网络模型。
步骤二:从训练样本队列中取出训练样本,提取出关系约束。如图4所示,关系约束存储在状态树的叶子节点中(图4非叶子节点的关系约束信息用于表示该状态树的展开过程)。由于从根节点到叶子节点的路径信息是候选子程序,因此关系约束是候选子程序的等价的表达形式。对所有叶节点的关系约束进行分词操作,以图4中的灰色叶子节点var的关系约束为例,分词的结果如下所示:
关系约束中,H与D代表逻辑变量,统一使用相同的标号logic_var表示。分词后,使用word2vector模型对其进行编码,得到对应的词向量。按照标识符与词向量一一对应的关系,使用词向量序列表示关系约束。并输入到以LSTM为内核的编码器中,输出对应关系约束的嵌入信息。由于每个叶子节点包含的关系约束存在合取的关系,即所有的关系约束均必须被满足。因此,将得到的关系约束的嵌入信息进行对应位置做均值的操作,得到该叶子节点的关系约束的最终嵌入信息。
步骤三:从训练样本队列中取出训练样本,提取出候选子程序。如图4所示,叶子节点包含着候选子程序的信息。获取候选子程序的嵌入信息的操作同步骤二对关系约束的操作。由于一个叶子节点只包含一个候选子程序,因此通过编码器输出的向量即为该叶子节点的最终候选子程序的嵌入信息。
步骤四:计算每个候选子程序的上下文信息。通过公式(1)进行计算。
步骤五:将关系约束、候选子程序以及候选子程序上下文三者的嵌入信息进行拼接,得到特征矩阵,输入到神经网络中,计算出候选子程序的概率分布;
步骤六:根据目标程序的子程序计算出对应的one-hot向量,设计损失函数计算候选子程序的概率分布与该one-hot向量的误差,并将其反向传播,调整神经网络模型参数。其中损失函数如公式(2)所示,one-hot向量计算包括以下步骤:
(1)初始化向量V=[0],n为候选子程序的数目。
(2)从左至右遍历状态树的叶子节点,获取与含有与目标子程序相同程序信息的叶子节点,并获取下标信息index。
(3)令V[index]=1,得到one-hot向量V。
步骤七:重复步骤二至步骤六,直至神经网络模型的精度在训练集和验证集上均达到预期。
步骤八:利用训练好的神经网络模型基于给定的输入输出示例和miniKanren进行交互,合成满足需求的程序。包括以下步骤:
(1)设置信号变量Signal,最大合成时间Tmax,最大合成迭代次数Imax;初始化信号变量Signal为空,最大合成时间Tmax为10分钟,最大合成迭代次数Imax为两倍的目标程序长度。
(2)通过候选子程序的概率分布,选取概率最高的候选子程序。
(3)检查当前时间Tcur和当前迭代次数Icur,若超过指定的最大合成时间和最大合成迭代次数,则停止迭代合成,表示程序合成失败;反之进入步骤E4;
(4)将步骤(2)选取的候选子程序输入到miniKanren中,返回得到Signal的更新值。当Signal的值为Solved,表示程序合成成功,程序合成结束;反之,跳转至步骤(2)。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (8)
1.一种基于离线监督学习的函数式程序自动合成方法,其特征在于:包括以下步骤:
步骤一:对给定的输入输出示例对,利用miniKanren约束逻辑编程系统基于三种不同的策略生成状态树形式的训练样本;
步骤二:从状态树中提取关系约束,并用神经网络模型对其进行编码,得到关系约束的嵌入信息;
步骤三:从状态树中提取程序执行轨迹,即候选子程序的信息,利用神经网络对其进行编码,得到候选子程序的嵌入信息;
步骤四:针对每个候选子程序计算其上下文的嵌入信息;
步骤五:将关系约束、候选子程序以及候选子程序上下文三者的嵌入信息进行拼接,得到特征矩阵,输入到神经网络中,计算出候选子程序的概率分布;
步骤六:根据目标程序的子程序计算出对应的one-hot向量,设计损失函数计算候选子程序的概率分布与该one-hot向量的误差,并将其反向传播,调整神经网络模型参数;
步骤七:重复步骤二至步骤六,直至神经网络模型的精度在训练集和验证集上均达到预期;
步骤八:利用训练好的神经网络模型基于给定的输入输出示例和miniKanren进行交互,合成满足需求的程序。
2.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:步骤一所述利用miniKanren约束逻辑编程系统基于三种不同的策略生成状态树形式的训练样本包括以下步骤:
步骤A1:将输入输出示例输入到miniKanren中,输出状态树;对状态树的叶子节点进行展开,将得到的所有状态树插入到训练样本队列中;每次所选取的叶子节点满足性质:从状态树的根节点到该叶子节点的路径上的程序构成目标程序的子程序;
步骤A2:设置状态树展开步数T,其数值等于2倍的目标程序合成步数;将输入输出示例输入到miniKanren中,得到状态树;随机选择状态树的叶子节点进行展开,当展开步数达到T时结束展开,将得到的所有状态树插入到训练样本队列中;
步骤A3:设置随机种子S,S∈[0,1],S是实数;设置状态树展开步数T,其值与步骤A2中设置的步数相同;将输入输出示例输入到miniKanren中,输出状态树;根据S的值,对状态树进行不同的展开;当S小于0.5时,按照步骤A1的策略选择叶子节点对状态树进行展开;当S大于等于0.5时,按照步骤A2的策略选择叶子节点对状态树进行展开;当展开步数达到T时结束展开,将得到的所有状态树插入到训练样本队列中。
3.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:所述步骤二具体包括以下步骤:
步骤B1:获取状态树叶子节点的关系约束,将关系约束进行分词并使用word2vector模型计算出对应分词的嵌入词向量;
步骤B2:将关系约束的嵌入词向量输入到以LSTM为内核的编码器中计算出关系约束的嵌入向量,得到关系约束的嵌入信息。
4.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:步骤三所述利用神经网络对其进行编码,得到候选子程序的嵌入信息包括以下步骤:
步骤C1:读取从状态树的根节点到叶子节点的一条路径信息作为一个候选子程序;
步骤C2:将候选子程序进行分词并使用word2vector模型计算出对应分词的嵌入词向量;
步骤C3:将候选子程序的嵌入词向量输入到以LSTM为内核的编码器中并计算出候选子程序的嵌入向量,得到候选子程序的嵌入信息;其中,使用的编码器与步骤B2中使用的编码器一致。
6.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:所述步骤六中one-hot向量计算包括以下步骤:
步骤D1:初始化向量V=[0]n,n为候选子程序的数目;
步骤D2:从左至右遍历状态树的叶子节点,获取与含有与目标子程序相同程序信息的叶子节点,并获取下标信息index;
步骤D3:令V[index]=1,得到one-hot向量V。
7.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:步骤六所述损失函数如公式(2)所示:
loss=-VlogP (2)
其中P为概率分布,V为one-hot向量。
8.如权利要求1所述的基于离线监督学习的函数式程序自动合成方法,其特征在于:所述步骤八具体包括以下步骤:
步骤E1:设置信号变量Signal,最大合成时间Tmax,最大合成迭代次数Imax;初始化信号变量Signal为空,最大合成时间Tmax为10分钟,最大合成迭代次数Imax为两倍的目标程序长度;
步骤E2:通过候选子程序的概率分布,选取概率最高的候选子程序;
步骤E3:检查当前时间Tcur和当前迭代次数Icur,若超过指定的最大合成时间和最大合成迭代次数,则停止迭代合成,表示程序合成失败;反之进入步骤E4;
步骤E4:将步骤E2选取的候选子程序输入到miniKanren中,返回得到Signal的更新值。当Signal的值为Solved,表示程序合成成功;反之,跳转至步骤E2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911301796.3A CN111142857B (zh) | 2019-12-17 | 2019-12-17 | 基于离线监督学习的函数式程序自动合成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911301796.3A CN111142857B (zh) | 2019-12-17 | 2019-12-17 | 基于离线监督学习的函数式程序自动合成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142857A true CN111142857A (zh) | 2020-05-12 |
CN111142857B CN111142857B (zh) | 2023-04-25 |
Family
ID=70518600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911301796.3A Active CN111142857B (zh) | 2019-12-17 | 2019-12-17 | 基于离线监督学习的函数式程序自动合成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142857B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577603A (zh) * | 2017-08-31 | 2018-01-12 | 中国科学院软件研究所 | 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法 |
US20180275967A1 (en) * | 2017-03-27 | 2018-09-27 | Microsoft Technology Licensing, Llc | Neural network for program synthesis |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN110489110A (zh) * | 2019-08-20 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种基于深度学习的代码生成方法及装置 |
-
2019
- 2019-12-17 CN CN201911301796.3A patent/CN111142857B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180275967A1 (en) * | 2017-03-27 | 2018-09-27 | Microsoft Technology Licensing, Llc | Neural network for program synthesis |
CN107577603A (zh) * | 2017-08-31 | 2018-01-12 | 中国科学院软件研究所 | 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN110489110A (zh) * | 2019-08-20 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种基于深度学习的代码生成方法及装置 |
Non-Patent Citations (1)
Title |
---|
张银珠: "程序合成研究进展", 《软件》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111142857B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Formal query building with query structure prediction for complex question answering over knowledge base | |
US11972365B2 (en) | Question responding apparatus, question responding method and program | |
Weidenbach et al. | SPASS Version 3.5 | |
Pierrot et al. | Learning compositional neural programs with recursive tree search and planning | |
Clarke et al. | Verifying parameterized networks using abstraction and regular languages | |
Plemenos et al. | Intelligent scene modeling | |
Shin et al. | Synthetic datasets for neural program synthesis | |
Wang et al. | TranS^ 3: A transformer-based framework for unifying code summarization and code search | |
CN110110331B (zh) | 文本生成方法、装置、介质和计算设备 | |
CN105786715A (zh) | 一种程序静态自动分析方法 | |
CN113408430B (zh) | 基于多级策略和深度强化学习框架的图像中文描述系统及方法 | |
CN111651765B (zh) | 基于生成式对抗网络的程序执行路径生成方法 | |
Zhao et al. | A differential-based harmony search algorithm with variable neighborhood search for job shop scheduling problem and its runtime analysis | |
Hajipour et al. | Samplefix: Learning to correct programs by sampling diverse fixes | |
CN113641819A (zh) | 基于多任务稀疏共享学习的论辩挖掘系统及方法 | |
CN116594601A (zh) | 一种基于知识库和多步提示的预训练大模型代码生成方法 | |
Jang et al. | PyOpenDial: a python-based domain-independent toolkit for developing spoken dialogue systems with probabilistic rules | |
KR102028665B1 (ko) | 프로그램 합성 방법 | |
CN111142857B (zh) | 基于离线监督学习的函数式程序自动合成方法 | |
CN112274935A (zh) | Ai模型训练方法、使用方法、计算机设备及存储介质 | |
CN116578336A (zh) | 一种基于抄袭者-检测器对抗的软件克隆检测方法 | |
Liu et al. | A sublinear Sudoku solution in cP Systems and its formal verification | |
Meng | An intelligent code search approach using hybrid encoders | |
Gall et al. | An operational semantics for the cognitive architecture ACT-R and its translation to constraint handling rules | |
CN114707655A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |