CN116266109A - 为程序合成训练模型的方法和装置 - Google Patents
为程序合成训练模型的方法和装置 Download PDFInfo
- Publication number
- CN116266109A CN116266109A CN202211395470.3A CN202211395470A CN116266109A CN 116266109 A CN116266109 A CN 116266109A CN 202211395470 A CN202211395470 A CN 202211395470A CN 116266109 A CN116266109 A CN 116266109A
- Authority
- CN
- China
- Prior art keywords
- program
- programs
- processor
- model
- instructions
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000012549 training Methods 0.000 title claims description 75
- 230000002194 synthesizing effect Effects 0.000 title description 2
- 230000015654 memory Effects 0.000 claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 claims description 42
- 230000002068 genetic effect Effects 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 7
- 230000006403 short-term memory Effects 0.000 claims 1
- 230000015572 biosynthetic process Effects 0.000 abstract description 28
- 238000010801 machine learning Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 36
- 238000004458 analytical method Methods 0.000 description 28
- 238000003860 storage Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000009396 hybridization Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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/08—Learning methods
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- 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
-
- 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/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了为程序合成训练模型的方法和装置所公开的示例装置包括至少一个存储器、指令、以及处理器电路。该处理器电路执行指令以对程序的配对采样,程序的配对包括第一程序和第二程序,第一程序包括自然语言描述,计算与程序的配对相对应的程序相似性得分,并且基于与程序的配对中的一些配对相对应的条目来训练模型,条目中的至少一个条目包括自然语言描述中的相应一个和第二程序中与之配对的一个,以及程序相似性得分中的相应一个。
Description
技术领域
本公开概括而言涉及机器编程,更具体而言,涉及为程序合成训练模型的方法和装置。
背景技术
机器编程(machine programming,MP)与软件开发的自动化有关。例如,程序合成是一种近年来获得关注的MP技术。具体地,遗传算法(genetic algorithm,GA)已越来越多地被实现为程序合成技术,以实现自动的软件构建。对于程序合成系统,通常向系统提供程序行为的规格,以便可以构建和/或生成具有指定行为的程序。许多已知的程序合成系统依赖于输入/输出示例的集合,供程序员指定他们希望程序合成系统创建的程序的行为。根据一些已知的编程合成系统,输入/输出集合的每个元素包含到程序的可能输入,以及相应的期望输出,该输出是通过由合成的程序对输入进行变换而生成的。然而,通过这些技术来合成程序的努力可能是冗长和耗时的。
发明内容
本公开的一个方面提供了一种装置。该装置包括:至少一个存储器;指令;以及处理器电路,用来执行指令以:对程序的配对采样,程序的配对包括第一程序和第二程序,第一程序包括自然语言描述,计算与程序的配对相对应的程序相似性得分,并且基于与程序的配对中的一些配对相对应的条目来训练模型,条目中的至少一个条目包括:自然语言描述中的相应一个和第二程序中与之配对的一个,以及程序相似性得分中的相应一个。
本公开的另一方面提供了一种非暂态计算机可读介质,包括指令。这些指令当被执行时,使得至少一个处理器:对程序的配对采样,程序的配对包括第一程序和第二程序,第一程序包括自然语言描述;计算与程序的配对相对应的程序相似性得分;并且基于与程序的配对中的一些配对相对应的条目来训练模型,条目中的至少一个条目包括:自然语言描述中的相应一个和第二程序中与之配对的一个,以及程序相似性得分中的相应一个。
本公开的另一方面提供了一种方法。该方法包括:通过利用至少一个处理器执行指令,来对程序的配对采样,程序的配对包括第一程序和第二程序,第一程序包括自然语言描述;通过利用至少一个处理器执行指令,来计算与程序的配对相对应的程序相似性得分;并且通过利用至少一个处理器执行指令,来基于与程序的配对中的一些配对相对应的条目来训练模型,条目中的至少一个条目包括:自然语言描述中的相应一个和第二程序中与之配对的一个,以及程序相似性得分中的相应一个。
附图说明
图1是根据本公开的教导的示例程序合成系统的概览。
图2是根据本公开的教导的示例模型分析系统的框图。
图3是基于本文公开的示例可以实现的示例神经网络的概览。
图4是基于本文公开的示例可以实现的另一示例神经网络的概览。
图5和图6的流程图代表了可由示例处理器电路执行来实现图1的示例程序合成系统和/或图2的示例模型分析系统的示例机器可读指令和/或示例操作。
图7是示例处理平台的框图,该处理平台包括处理器电路,该处理器电路被构造来执行图5和/或图6的示例机器可读指令和/或示例操作以实现图1的示例程序合成系统和/或图2的示例模型分析系统。
图8是图7的处理器电路的示例实现方式的框图。
图9是图7的处理器电路的另一示例实现方式的框图。
图10是示例软件分发平台(例如,一个或多个服务器)的框图,该示例软件分发平台用于将软件(例如,与图5和图6的示例机器可读指令相对应的软件)分发到与最终用户和/或消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或次级许可)和/或原始设备制造商(OEM)(例如,用于包括在要被分发到例如零售商和/或诸如直接购买客户之类的其他最终用户的产品中)相关联的客户端设备。
一般而言,相同的标号将在全部(一或多幅)附图和伴随的书面描述的各处被用于指代相同或相似的部件。附图不是按比例的。
除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式指示出任何优先级、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可用于提及某一元素,而同一元素在权利要求中可以用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地标识那些元素,这些元素例如可能在其他情况下共享同一名称。
如本文所使用的,“基本上实时”指的是以近乎瞬时的方式发生,承认现实世界中可能存在计算时间、传输等等方面的延迟。从而,除非另有指明,否则“基本上实时”指的是实时+/-1秒。如本文所使用的,短语“与……通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
如本文所使用的,“处理器电路”被定义为包括(i)一个或多个专用电气电路,其被构造为执行(一个或多个)特定的操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件),和/或(ii)一个或多个通用的基于半导体的电气电路,其被用指令编程以执行特定操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件)。处理器电路的示例包括编程的微处理器、可实例化指令的现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器单元(Central Processor Unit,CPU)、图形处理器单元(Graphics Processor Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、XPU、或者微控制器和集成电路,例如专用集成电路(Application Specific Integrated Circuit,ASIC)。例如,XPU可以由异构计算系统实现,该计算系统包括多种类型的处理器电路(例如,一个或多个FPGA、一个或多个CPU、一个或多个GPU、一个或多个DSP,等等,和/或这些的组合)以及(一个或多个)应用编程接口(application programming interface,API),这些API可以将(一个或多个)计算任务指派给该多种类型的处理电路中最适于执行该(一个或多个)计算任务的任何一个(或多个)。
具体实施方式
公开了为程序合成训练模型的方法和装置。机器编程(MP)与软件开发的自动化有关。例如,遗传算法(GA)已越来越多地被实现为程序合成技术,以实现自动的软件构建。许多已知的程序合成系统依赖于输入/输出示例的集合。然而,利用输入/输出集合进行程序合成可能是冗长和耗时的。
本文公开的示例利用了机器学习(machine learning,ML),该机器学习利用程序与程序行为和/或规格的自然语言描述相结合,来以相对快速和省时的方式准确合地成程序。具体地,本文公开的一些示例可以提高基于GA的程序合成工具能够合成程序的速度。另外,本文公开的示例可以增大系统针对不同功能和/或规格(例如,程序规格)能够访问的程序的数目和/或大小。甚至更进一步,本文公开的示例还可以减少和/或消除程序合成所必需的输入/输出示例的数目。
在模型训练阶段中,本文公开的示例对至少一对程序进行采样,这些程序进而包括具有相应自然语言描述的第一程序,以及第二程序,该第二程序可以被随机生成、在GA中产生和/或被取回/访问(例如,被取回的现有程序)。进而,根据本文公开的示例,为上述一对(或多对)程序计算程序相似性得分。因此,基于与各配对相对应的条目来训练模型。这些条目中有一些包括自然语言描述(与第一程序之一相关联)与相应配对的第二程序之一,以及充当模型的标签的各个程序相似性得分。因此,该模型可以在推理阶段中被利用,以促进和/或实现程序的高效合成,这些程序可以被访问或者生成(例如,随机生成,在GA中生成,等等)。额外地或者替代地,可利用经训练的模型来调整GA的参数和/或方面。在一些示例中,经训练的模型被用来选择具有相对较高的程序相似性得分的程序,以在GA中使用。
在一些示例中,这些配对中有一些被过滤了。对于一些这样的示例,这些配对中具有在其他配对的阈值相似性内的相似性得分的一些配对可以被删除和/或从进一步的分析中移除,以使得具有不同相似性得分的配对的分布更加均匀。在一些示例中,经训练的模型被实现(在被训练之后)以结合自然语言描述(例如,程序的自然语言文本规格)提供与GA程序和/或过程相关联的程序(例如,候选程序)的适配性得分和/或相似性得分。额外地或者替代地,利用经训练的模型来调整、完善和/或进一步训练GA程序和/或过程。可以利用经训练的模型向GA提供程序,这些程序与相应的自然语言文本的相似性得分超过阈值相似性得分值。在一些示例中,相似性得分是利用代码语义相似性计算的,例如机器推理的代码相似性(machine-inferred code similarity,MISIM)系统或者Aroma代码推荐软件。
在一些示例中,第二程序是经由GA生成的程序。在一些这样的示例中,程序被迭代地组合和修改(例如,杂交、选择性杂交、变异,等等)。因此,可以用得分(例如,适配性得分、相似性得分,等等)来评估程序,以表征程序是否在改进(例如,进化),这是GA和/或关联的GA过程的效果。在一些这样的示例中,可以基于利用经训练的模型来调整GA和/或GA的参数。具体地,可以基于由经训练的模型评估的程序的适配性和/或相似性得分来调整GA。额外地或者替代地,提供给GA的程序可以基于由经训练的模型确定的适配性得分。具体地,例如,GA可以优先拷贝、杂交或者变异得分较高的程序,以使其在下一代程序中用较高的相似性得分来表示。
人工智能(artificial intelligence,AI),包括机器学习(machine learning,ML)、深度学习(deep learning,DL)和/或其他人工机器驱动的逻辑,使得机器(例如,计算机、逻辑电路,等等)能够使用模型来处理输入数据,以基于模型先前经由训练过程学习到的模式和/或关联来生成输出。例如,该模型可被用数据来训练以识别模式和/或关联,并且在处理输入数据时遵循这种模式和/或关联,从而使得(一个或多个)其他输入产生与所识别的模式和/或关联相一致的(一个或多个)输出。
存在许多不同类型的机器学习模型和/或机器学习体系结构。在本文公开的示例中,使用了长短期记忆(long-short-term memory,LSTM)模型。例如,使用LSTM模型使得能够对程序和自然语言文本进行编码,以对程序进行适配性和/或相似性评估。一般而言,适合用于本文公开的示例方法中的机器学习模型/体系结构将是递归神经网络(recurrentneural network,RNN)、变换器机器学习模型、门控递归单元(gated recurrent unit,GRU)、或者时间卷积网络(temporal convolutional network,TCN)。然而,可以额外地或者替代地使用其他类型的机器学习模型,例如时间卷积网络,等等。
一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推理阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联来进行操作。一般而言,模型包括指导输入数据如何被变换为输出数据的内部参数,例如通过模型内的一系列节点和连接来将输入数据变换为输出数据。此外,超参数被用作训练过程的一部分,以控制如何执行学习(例如,学习率、机器学习模型中要使用的层的数目,等等)。超参数被定义为在发起训练过程之前确定的训练参数。
基于ML/AI模型的类型和/或预期输出,可以执行不同类型的训练。例如,监督训练使用输入和相应的预期(例如,标记的)输出来为ML/AI模型选择参数(例如,通过在所选参数的组合上迭代),这些参数会减小模型误差。如本文所使用的,标记(labelling)是指机器学习模型的预期输出(例如,分类、预期输出值,等等)。可替代地,无监督训练(例如,用于深度学习、机器学习的子集等等中)涉及从输入推理模式,以选择ML/AI模型的参数(例如,没有预期的(例如,标记的)输出的益处)。
在本文公开的示例中,利用LSTM神经网络来训练ML/AI模型。然而,可以额外地或替代地使用任何其他的训练算法。在本文公开的示例中,执行训练,直到经训练的模型能够以相对准确的程度输出程序相对于自然语言文本的适配性和/或相似性得分为止。在本文公开的一些示例中,执行训练,直到在训练模型时已利用了必要/足够数目的程序(例如,用于训练/学习的所有程序)为止。利用控制如何执行学习的超参数(例如,学习率、机器学习模型中要使用的层的数目,等等)来执行训练。在本文公开的示例中,利用了控制程序的适配性确定方面的超参数。在一些示例中,可以执行重训练。例如,可以响应于可被利用来训练模型和/或经训练的模型以达到确定适配性和/或相似性得分时的必要准确程度的数据量来执行这种重训练。
训练是利用训练数据来执行的。在本文公开的示例中,训练数据来源于自然语言描述和/或程序。因为使用了监督训练,所以训练数据被标记。根据本文公开的示例,标记被应用到训练数据,作为程序相似性得分。
一旦训练完成,模型就被部署来用作可执行构造,该构造基于模型中定义的节点和连接的网络来处理输入并且提供输出。该模型被存储在数据存储设备或者数据存储库中。
一旦经过训练,部署的模型就可在推理阶段中被操作来处理数据。在推理阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。这个推理阶段可以被认为是AI“思考”以基于它从训练中学习到的东西来生成输出(例如,通过执行模型来将学习到的模式和/或关联应用到实况数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前会经历预处理。此外,在一些示例中,输出数据在其由AI模型生成之后可经历后处理,以将输出变换为有用的结果(例如,数据的显示、要由机器执行的指令,等等)。
在一些示例中,部署的模型的输出可被捕捉并被作为反馈来提供。通过分析反馈,可以确定部署的模型的准确度。如果反馈表明部署的模型的准确度低于阈值或其他标准,则可利用反馈和更新后的训练数据集、超参数等等来触发更新后模型的训练,以生成更新后的部署的模型。
图1是根据本公开的教导的示例程序合成系统100的概览。图示示例的示例程序合成系统100包括计算设备101,来利用模型分析系统102执行推理阶段103。在这个示例中,模型分析系统102被提供有第一程序104,其中包括具有相应自然语言描述的程序(例如,程序规格的自然语言描述)。另外,示例模型分析系统102还被提供有第二程序106,其中包括可以被取回、访问和/或生成(例如,随机生成)的程序。例如,可以通过GA过程和/或系统107生成第二程序。然而,可以通过任何适当的过程、系统和/或方法来生成和/或获得(例如,取回)第二程序106。在一些示例中,(一个或多个)输入/(一个或多个)输出108被提供给示例模型分析系统102。在一些示例中,候选程序109由GA过程和/或系统107生成,并且进而被提供给模型分析系统102。
根据图示的示例,实现了示例计算设备111,以用于推理阶段110,其与从示例模型分析系统102提供的经训练的模型112相对应。图示示例的经训练的模型112利用输入114,这些输入可包括候选程序109中的至少一者,与相应的自然语言描述相结合,以提供输出116,该输出在此示例中是相似性或适配性得分。额外地或者替代地,计算设备101也被用于上述推理阶段110。从图1的图示示例中可以看出,计算设备101和/或计算设备111中的至少一者被通信地耦合到网络120和/或(一个或多个)远程计算设备122。然而,可以作为替代实现任何其他适当的计算实现和/或网络拓扑结构。
在操作中,并且正如将在下面联系图2-图9更详细地论述的,本文公开的示例可以被实现来改善在程序合成中利用的程序的生成和/或分析,以及减少生成和/或开发程序的时间。具体地,本文公开的示例利用ML技术来训练有助于程序合成的模型。
为了训练示例模型112,模型分析系统102对第一程序104和第二程序106进行采样,以定义第一程序104中的一些和第二程序106中的一些的配对。具体地,计算上述配对的相似性得分。在这个示例中,例如使用上述的MISIM或Aroma得分来计算其中一些配对的代码语义相似性得分。因此,利用条目来训练模型112。在这个示例中,条目包括第一程序104中的配对的一个与第二程序106中的相应的配对的一个的自然语言描述,以及该配对的相应相似性得分,其充当用于训练模型112的标签。示例第二程序106进而可包括程序,这些程序可以被取回(例如,从服务器和/或库,随机生成和/或在GA中生成,例如图1的GA过程和/或系统107)。额外地或者替代地,示例模型分析器102被提供有用于训练、开发和/或生成模型的(一个或多个)输入/(一个或多个)输出108(例如,与配对和自然语言描述相结合)。在一些这样的示例中,条目包括第一程序104中的配对的一个与第二程序106中的相应的配对的一个的自然语言描述,以及该配对与(一个或多个)输入/(一个或多个)输出108中的对应一个(或多个)的相应相似性得分。在一些示例中,在被转发用于模型112的训练之前,至少一个配对被过滤。在一些这样的示例中,具有优势得分的配对被减少和/或消除,从而使得配对的得分能够相对均匀地分布。
一旦模型112被训练,(一个或多个)输入114就可包括自然语言文本以及相应的程序。进而,模型112可以提供和/或生成(一个或多个)输出116,其中包括相似性或适配性得分。在这个示例中,该得分对应于作为输入提供的程序与相应的自然文本的相关程度。在一些示例中,具有从经训练的模型112计算出的高于阈值的得分的程序与GA过程和/或系统107被共同用于进一步的迭代和/或程序之间的杂交,以产生具有相对较高的适配性得分的程序。换句话说,模型112可以被训练来评估程序的合成过程和/或促进生成更紧密地匹配与自然语言文本相关联的规格的程序。
图1所示的计算和/或网络通信实现方式只是一个示例,而可以作为替代利用任何适当的计算设备实现方式和/或网络拓扑结构。例如,模型112的训练和实现阶段可以由计算设备101执行。
图2是根据本公开的教导的示例模型分析系统200的框图。图2的示例模型分析系统200可以实现图1的模型分析系统102,并且可以通过诸如中央处理单元之类的处理器电路执行指令来实例化(例如,创建其实例、使其在任何长度的时间中存在、具体化、实现,等等)。额外地或者替代地,图2的模型分析系统200可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例、使其在任何长度的时间中存在、具体化、实现,等等)。应当理解,图2的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图2的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
示例模型分析系统200包括示例采样器电路202、示例程序生成器电路204、示例代码语义相似性电路206、示例GA分析器电路208、示例过滤器电路210、示例模型训练器电路212、示例适配性分析器电路216、以及示例模型实现器电路218。在这个示例中,模型分析系统200与数据存储装置220通信地耦合。
图示示例的采样器电路202对带有自然语言描述(例如,作为元数据或者外部附件)的第一程序104之一和第二程序106之一进行采样,以定义它们之间的配对。具体地,其中一些配对包括带有相应自然语言描述和/或文本的第一程序104之一,以及第二程序106之一。在这个示例中,采样器电路202随机地将第一程序104中的一些与第二程序106中的一些配对,以定义配对。在一些示例中,第一程序104和/或第二程序106的数目可达数千或者数百万。然而,可以作为替代实现任何适当数目的第一程序104和/或第二程序106。在一些其他示例中,基于第一程序104中的第一者和第二程序106中的第二者之间的相似程度来定义配对。额外地或者替代地,采样器电路202对(一个或多个)输入/(一个或多个)输出108进行采样和/或将其考虑,这可包括与已知和/或发布的程序相对应的输入和输出的配对。额外地或者替代地,(一个或多个)输入/(一个或多个)输出108被与相应的第一程序104中的一些和/或第二程序106中的一些配对。在一些示例中,图1的第一程序104、第二程序106和/或(一个或多个)输入/(一个或多个)输出108被存储在存储装置220中。
在一示例中,一组样本程序S的中的一些和那些程序的等效自然语言描述以及可选的其他规格,例如输入/输出示例,可以被采样电路202与随机生成的程序R中的一些相组合,这些随机生成的程序没有关联的自然语言描述。因此,采样器电路202可以生成大量的程序配对(例如,数千到数百万的程序配对,等等),其中,一个配对中的第一程序来自S,并且一个配对中的第二程序可能来自S或者R。
示例程序生成器电路204生成(例如,随机生成)和/或完善(例如,经由多次迭代)程序(例如,候选程序),这些程序例如可包含第二程序106。根据一些示例,候选程序可以是随机生成的和/或是从模型分析系统200外部的来源获得的(例如,经由图1中所示的网络120)。在一些示例中,程序生成器电路204经由GA生成候选程序,例如图1中所示的示例GA过程和/或系统107。在一些示例中,程序生成器电路204取回现有的已存储程序(例如,从存储装置220)。
在这个示例中,代码语义相似性电路206确定由示例采样器电路202创建的上述配对的相似性。具体地,示例代码语义相似性电路206确定由示例采样器电路202生成的配对中的一些(例如,所有)之间的相似程度(例如,相似性得分或指数)。在一些示例中,代码语义相似性电路206计算和/或实现确定上述基于MISIM或Aroma的程序正确性得分以确定相似程度。额外地或者替代地,基于上述相似程度对这些配对进行排名和/或排序。
在一些示例中,GA分析器电路208被实现来评估和/或调整由程序生成器电路204和/或图1所示的GA系统和/或过程107生成的候选程序。在一些示例中,GA分析器电路208确定由程序生成器电路204利用的GA是否成功地使候选程序“进化”。如本文所使用的,“进化”是指杂交和/或变异候选程序,以便选择更“适配”的候选程序来继续该过程。进而,GA分析器电路208可以指导GA和/或与GA相关联的参数的调整和/或修改。
在图2的图示示例中,过滤器电路210被利用来过滤上述由采样器电路202生成和/或定义的配对。根据本文公开的一些示例,基于相似程度和/或相似性得分来过滤配对。例如,过滤和/或移除相似程度小于阈值的那些配对。额外地或者替代地,过滤器电路210执行过滤,以随机消除必要数目或数量的示例,其中每一者具有更优势的正确性和/或相似性得分,直到所有正确性得分被相对等同地表示为止。在一些示例中,过滤器电路210执行过滤以在程序的所有相似性分类得分类别上创建相对均等的训练示例分布。换句话说,过滤器电路210可以控制程序的分布。然而,在一些示例中,可能无法完全均衡训练示例的分布。在一些示例中,过滤器电路210执行过滤以权衡类别和/或分类,以补偿训练示例的数目的差异。
图示示例的模型训练器电路212基于在一些示例中由过滤器电路210过滤的配对所对应的条目来训练、生成和/或开发模型。在这个示例中,模型训练器电路利用LSTM网络(例如,顺序网络、双向LSTM网络,等等)来用包括第一程序104中的一些和第二程序106中的一些的过滤后的配对来训练网络。然而,可以作为替代实现任何适当类型的神经网络体系结构。
在这个示例中,该模型可被模型训练器电路212用数据来训练以识别模式和/或关联,并且在处理输入数据时遵循这种模式和/或关联,从而使得(一个或多个)其他输入产生与所识别的模式和/或关联相一致的(一个或多个)输出。存在许多不同类型的机器学习模型和/或机器学习体系结构。在本文公开的示例中,使用了LSTM模型。例如,使用LSTM模型使得能够对文本进行编码,以对程序进行适配性评估。一般而言,适合用于本文公开的示例方法中的机器学习模型/体系结构将是RNN、变换器机器学习模型、GRU、或者TCN。然而,可以额外地或者替代地使用其他类型的机器学习模型,例如时间卷积网络,等等。
一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推理阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联来进行操作。一般而言,模型包括指导输入数据如何被变换为输出数据的内部参数,例如通过模型内的一系列节点和连接来将输入数据变换为输出数据。此外,超参数被用作训练过程的一部分,以控制如何执行学习(例如,学习率、机器学习模型中要使用的层的数目,等等)。超参数被定义为在发起训练过程之前确定的训练参数。
基于ML/AI模型的类型和/或预期输出,可以执行不同类型的训练。例如,监督训练使用输入和相应的预期(例如,标记的)输出来为ML/AI模型选择参数(例如,通过在所选参数的组合上迭代),这些参数会减小模型误差。如本文所使用的,标记(labelling)是指机器学习模型的预期输出(例如,分类、预期输出值,等等)。可替代地,无监督训练(例如,用于深度学习、机器学习的子集等等中)涉及从输入推理模式,以选择ML/AI模型的参数(例如,没有预期的(例如,标记的)输出的益处)。
在本文公开的示例中,利用LSTM神经网络来训练ML/AI模型。然而,可以额外地或替代地使用任何其他训练算法。在本文公开的示例中,执行训练,直到经训练的模型能够以相对准确的程度输出适配性得分和/或足够数目的程序被利用来执行训练为止。利用控制如何执行学习的超参数(例如,学习率、机器学习模型中要使用的层的数目,等等)来执行训练。在本文公开的示例中,利用了控制程序的适配性确定方面的超参数。在一些示例中,可以执行重训练。例如,可以响应于可被利用来训练模型和/或经训练的模型以达到确定适配性得分时的必要准确程度的数据量来执行这种重训练。
训练是利用训练数据来执行的。在本文公开的示例中,训练数据来源于自然语言描述和程序。因为使用了监督训练,所以训练数据被标记。标记被应用到训练数据,作为程序相似性得分。
一旦训练完成,模型就被部署来用作可执行构造,该构造基于模型中定义的节点和连接的网络来处理输入并且提供输出。例如,该模型被存储在数据存储装置处和/或计算设备中,该计算设备被利用来训练和/或实现该模型。
一旦经过训练,部署的模型就可在推理阶段中被操作来处理数据。在推理阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。这个推理阶段可以被认为是AI“思考”以基于它从训练中学习到的东西来生成输出(例如,通过执行模型来将学习到的模式和/或关联应用到实况数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前会经历预处理。此外,在一些示例中,输出数据在其由AI模型生成之后可经历后处理,以将输出变换为有用的结果(例如,数据的显示、要由机器执行的指令,等等)。
在一些示例中,部署的模型的输出可被捕捉并被作为反馈来提供。通过分析反馈,可以确定部署的模型的准确度。如果反馈表明部署的模型的准确度低于阈值或其他标准,则可利用反馈和更新后的训练数据集、超参数等等来触发更新后模型的训练,以生成更新后的部署的模型。
可以利用示例适配性分析器电路216来分析和/或确定来自GA或者来自存储程序的存储库的至少一个程序(例如,来自第二程序106)的适配性。额外地或者替代地,适配性分析器电路216可以分析随机生成的程序。具体地,示例适配性分析器电路216可以被实现为调整候选程序在GA中被开发和/或迭代的方式和/或程度。换句话说,适配性分析器电路216可用于调整GA和/或正被开发和/或被选择作为GA的输入的模型。在一些示例中,适配性分析器电路216被实现来确定哪些程序和/或候选程序要在GA中被变异、迭代和/或杂交(例如,基于适配性和/或相似性得分)。
可以利用示例模型实现器电路218来实现由示例模型训练器电路212训练的经训练的模型。例如,模型实现器电路218可以向经训练的模型提供输入以确定程序(例如,候选程序)的适配性。根据本文公开的示例,到经训练的模型的输入可包括自然语言描述和程序。因此,来自经训练的模型的输出可以是程序的适配性和/或相似性得分。进而,如上所述,适配性分析器电路216可以调整GA和/或被选择来由GA进一步处理的候选模型的方面/参数。
图3是可以在本文公开的示例中实现的示例神经网络300的概览。示例神经网络300被实现来评估和/或计算输入程序与相应的自然语言描述和/或文本之间的程度。在这个示例中,示例神经网络300是基于LSTM的(例如,基于双向LSTM体系结构,基于顺序LSTM体系结构,等等)。然而,可以作为替代实现任何适当的其他网络体系结构、编码和/或输入处理方法。作为输入,图示示例的神经网络300接收和/或访问自然语言文本以及相应的程序(例如,候选程序、输入程序),以产生输出值或得分(例如,适配性得分、相关性得分、相似性得分,等等)。在一些示例中,自然语言文本和相应的程序被组合和/或串接。
在图3的图示示例中,为了在实现/推理阶段中执行神经网络,自然语言文本(例如,自然语言文本描述)302被作为输入提供给RNN 306,并且被编码以产生自然语言编码307。另外,根据本文公开的一些示例,上述程序被分离成函数310和/或由函数310指定。具体地,示例函数310是被编码来定义编码程序函数的程序的函数调用。另外,在这个示例中,与前述程序和自然语言编码307相关联的编码程序函数312被串接以定义串接编码314。在这个示例中,自然语言编码308与对应于各个程序的编码程序函数312中的一些串接。在图示的示例中,自然语言文本和程序函数的组合编码对应于为神经网络316生成的向量。进而,组合编码和/或关联向量然后被提供给神经网络316(例如,另一个LSTM),在图3中其被表示为candid_nn,以生成关于自然语言描述文本和程序的函数的适配性得分。在没有其他规格的示例中,这个适配性得分可以是最终得分。可替代地,如果有其他规格,那么candidate_nn的输出可以被提供给另一个系统,例如另一个神经网络318,这在图3中被表示为final_nn,以生成得分(例如,最终适配性得分、适配性值、相似性得分、正确性得分,等等)322。在一些示例中,来自其他来源的编码,例如输入/输出配对和/或其他信息,例如程序规格,被提供给神经网络318。在这个示例中,(一个或多个)线性层320被用来生成输入程序的得分322,作为神经网络300的输出。然而,可以作为替代实现任何适当的网络结构、编码和/或分层。
图4是可以在本文公开的示例中实现的另一示例神经网络400的概览。示例神经网络400类似于图3所示的示例神经网络300,因为该神经网络400被训练来评估程序(例如,候选程序)和自然语言描述文本之间的相似程度。与示例神经网络300相对比,示例神经网络400作为替代利用了不同的编码步骤和整体分层结构。具体地,例如,程序函数的编码与关于程序规格的自然语言文本的编码是分开的。
在图4的图示示例中,自然语言文本402被提供给RNN 404并且被编码,从而定义了自然语言编码406。另外,程序函数410被编码以定义编码的函数412。在这个示例中,编码函数412被提供给神经网络416(例如,LSTM),其被表示为candidate_nn。额外地或者替代地,自然语言编码406被提供给神经网络416。在这个示例中,神经网络416基于输入程序的进一步规格(例如,程序要求)将其输出提供给神经网络420,这被表示为final_nn。在一些示例中,其他源编码(例如,输入/输出对对,等等)418,例如(一个或多个)输入/(一个或多个)输出集合或者示例,被提供给上述神经网络420和/或神经网络416。具体地,例如,在具有多个产品规格的场景中,其他源编码可以被提供给神经网络420。进而,例如,神经网络420的输出被提供给(一个或多个)线性层422,以确定适配性值424。
在一些示例中,自然语言编码406被提供给神经网络416,如箭头430概括所示。额外地或者替代地,自然语言编码406被提供给神经网络420(例如,用于当要评估额外的规格和/或要求时),如箭头432概括所示。然而,可以作为替代实现任何适当的网络结构和/或模型分层。
虽然在图2中图示了实现图2的示例模型分析系统200的示例方式,但图2中图示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,示例采样器电路202、示例程序生成器电路204、示例代码语义相似性电路206、示例GA分析器电路208、示例过滤器电路210、示例模型训练器电路212、示例适配性分析器电路216、示例模型实现器电路218,和/或更概括而言,图2的示例模型分析系统200,可以由硬件单独实现,或者由硬件与软件和/或固件相结合来实现。从而,例如,示例采样器电路202、示例程序生成器电路204、示例代码语义相似性电路206、示例GA分析器电路208、示例过滤器电路210、示例模型训练器电路212、示例适配性分析器电路216、示例模型实现器电路218和/或更概括而言示例模型分析系统200中的任何一者,可以由处理器电路、(一个或多个)模拟电路、(一个或多个)数字电路、(一个或多个)逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程微控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(programmable logic device,PLD)和/或(一个或多个)现场可编程逻辑器件(fieldprogrammable logic device,FPLD)(例如现场可编程门阵列(FPGA))来实现。此外,图2的示例模型分析系统200可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。
在图5和/或图6中示出了代表用于实现图2的模型分析系统200的示例硬件逻辑电路、机器可读指令、硬件实现状态机和/或其任意组合的流程图。机器可读指令可以是供处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述处理器电路例如是下文联系图7论述的示例处理器平台700中所示的处理器电路712和/或下文联系图8和/或图9论述的示例处理器电路。这个(这些)程序可以体现在存储于与位于一个或多个硬件设备中的处理器电路相关联的一个或多个非暂态计算机可读存储介质上的软件中,所述一个或多个非暂态计算机可读存储介质例如是CD、软盘、硬盘驱动器(hard diskdrive,HDD)、DVD、蓝光盘、易失性存储器(例如,任何类型的随机访问存储器(RandomAccess Memory,RAM),等等)或者非易失性存储器(例如,FLASH存储器、HDD,等等),但整个程序和/或其一部分或者也可以由除了处理器电路以外的一个或多个硬件设备执行和/或体现在固件或专用硬件中。机器可读指令可以分布在多个硬件设备上和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可促进服务器和端点客户端硬件设备之间的通信的无线电接入网络(radio access network,RAN)网关)实现。类似地,非暂态计算机可读存储介质可包括位于一个或多个硬件设备中的一个或多个介质。另外,虽然是参考图5和图6中所示的流程图来描述(一个或多个)示例程序的,但可替代地使用实现示例模型分析系统200的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或者组合。额外地或者替代地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可以分布在不同的网络位置中和/或在以下项的本地:单个机器中的一个或多个硬件设备(例如,单核处理器(例如,单核中央处理器单元(CPU))、多核处理器(例如,多核CPU),等等)、分布在服务器机架的多个服务器上的多个处理器、分布在一个或多个服务器机架上的多个处理器、位于同一封装中(例如,同一集成电路(IC)封装或者两个或更多个单独的外壳中,等等)的CPU和/或FPGA。
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据或数据结构(例如,存储为指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并被存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中、在边缘设备中,等等)。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密和/或存储在分开的计算设备上,其中这些部分当被解密、解压缩和/或组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个操作的一组机器可执行指令。
在另一示例中,机器可读指令可被以如下状态存储:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等,以便在特定的计算设备或其他设备上执行这些机器可读指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在静止或在途时的特定格式或状态如何。
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可以利用以下语言中的任何一种来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift,等等。
如上所述,可利用存储在一个或多个非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图5和图6的示例操作,所述介质例如是光存储设备、磁存储设备、HDD、闪存、只读存储器(read-only memory,ROM)、CD、DVD、缓存、任何类型的RAM、寄存器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、用于简短实例、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。如本文所使用的,术语非暂态计算机可读介质和非暂态计算机可读存储介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为前序部分或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。如本文所使用的,当短语“至少”在例如权利要求的前序部分中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如A、B和/或C这样的形式使用时,指的是A、B、C的任意组合或子集,例如(1)单独A,(2)单独B,(3)单独C,(4)A与B,(5)A与C,(6)B与C,或者(7)A与B以及与C。就本文在描述结构、组件、项目、C和/或事物的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述结构、组件、项目、物体和/或事物的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:
(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。
如本文所使用的,单数指代(例如,“一”、“第一”、“第二”,等等)并不排除多数。如本文所使用的,术语“一”或“一个”物体指的是一个或多个该物体。术语“一”、“一个或多个”和“至少一个”在本文中是可互换使用的。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如同一实体或物体来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图5的流程图代表了示例机器可读指令和/或示例操作500,该示例机器可读指令和/或示例操作可由处理器电路执行和/或实例化来实现图2的模型分析系统200,以训练被利用来结合自然语言描述评估程序的模型。
图5的机器可读指令和/或操作500开始于块501,在该块处,生成第二程序,例如第二程序106(图1)之一(例如,随机生成、合成,等等)。在一些示例中,GA生成上述的第二程序。
在块502,示例采样器电路202(图2)访问和/或取回第一和第二程序(例如,第一和第二组程序,等等)中的一些,例如分别是第一程序104(图1)和第二程序106。在这个示例中,例如,第一程序具有关联的自然语言描述,而第二程序是预先存在或者生成的程序(例如,在GA中预先存在或者生成和/或在GA中被处理),而没有相应的自然语言描述。
在块504,在一些示例中,(一个或多个)输入和/或(一个或多个)输出被示例采样器电路202访问和/或接收。例如,多组示例输入和相应输出被采样器电路202访问和/或接收。
在块506,程序的配对被图示示例的采样器电路202采样。在这个示例中,第一和第二程序是随机配对的。在一些其他示例中,第一和第二程序由采样器电路202基于初始和/或预测的相似程度进行配对。
在块508,在图示的示例中,代码语义相似性电路206(图2)为上述程序配对中的一些计算程序相似性得分。在这个示例中,利用了MISIM系统或者Aroma系统。在一些示例中,对于每一对程序,对多个得分进行平均(例如,来自不同的代码语义相似性系统和/或方法)。
在块510,根据本文公开的一些示例,示例过滤器电路210(图2)对程序的配对进行过滤。在一些这样的示例中,至少一个配对被随机地消除,以便减少优势正确性得分的必要数目的示例,直到大多数或者所有的相似性得分被更同等地表示为止。在一些示例中,过滤的结果是训练示例在所有分类类别上的分布相对均等,但是一些示例中,可能无法完全均衡训练示例。额外地或者替代地,在一些示例中,例如,实现过滤步骤以在训练期间对类别不同地加权,以补偿训练示例的数目的差异。
在块511,示例模型训练器电路212(图2)生成网络输入/标签构造以训练模型。在这个示例中,模型输入包括自然语言描述和第二程序中相应配对的一个。另外,模型的标签是由示例代码语义相似性电路206计算的程序相似性得分。在一些示例中,模型输入包括输入和与输入相对应的输出。具体地,模型输入可以是自然语言描述、第二程序之一、以及(一个或多个)输入和/或(一个或多个)输出(例如,(一个或多个)输入被提供给第二程序之一以提供(一个或多个)输出)。额外地或者替代地,模型输入包括来自第一程序之一的输出,该输出是基于提供给该第一程序之一的输入的。在这样的示例中,相应的相似性得分是标签。
在块512,模型被示例模型训练器电路212训练(例如,进一步训练,使用监督学习训练)和/或生成。在这个示例中,到上述模型的输入包括条目,其中每个条目包括自然语言描述与第二程序中的配对的一个,以及包括程序相似性得分之一的相应标签。额外地或者替代地,输入/输出配对中的至少一个被包括在条目中的一些条目中。在一些示例中,条目还包括与第二程序之一配对的第一程序中的相应一个。额外地或者替代地,经训练的模型被提供给示例模型实现器电路218,用于推理/实现阶段。在一些示例中,通过多个网络(例如,针对多个规格)训练模型,这可以是顺序的、双向的或者非顺序的训练过程。
在图示的示例中,在块514,模型实现电路218(图2)实现经训练的模型,这在下文联系图6更详细地论述。在这个示例中,自然语言描述和程序(例如,候选程序)被作为输入提供给经训练的模型。进而,经训练的模型提供相似性得分和/或适配性得分。结果,经训练的模型可以确定程序和自然语言描述之间的相似程度,作为上述的相似性得分和/或适配度得分。在一些示例中,经训练的模型的输出(例如,作为输入提供的程序的适配性得分)被提供给示例GA分析器电路208。
在一些示例中,在块516,示例适配性分析器电路216(图2)将程序提供给GA系统和/或过程。在一些这样的示例中,当经由经训练的模型提供的相似性得分超过阈值时,适配性分析器电路216将程序提供给GA系统和/或过程。换句话说,适配性分析器电路216可以基于相似性得分确定哪些程序要在GA系统和/或过程中被进一步迭代和/或杂交,而具有较低相似性得分的程序不被转发给GA系统和/或过程。图5的示例指令和/或操作结束。
图6的流程图代表了可用于实现图5的示例机器可读指令和/或示例操作500的块514的示例子例程514。在这个示例中,子例程514实现了用于程序合成系统和/或实现的评估、调整和/或输入选择的经训练的模型。然而,在其他示例中,例如,经训练的模型可以被分发和/或传输,以便在与程序合成系统相对应的其他网络、计算设备和/或计算系统上使用。
在块602,示例模型实现器电路218(图2)向经训练的模型提供输入。在图示的示例中,输入包括自然语言描述文本,以及程序(例如,候选程序、GA生成的程序、已知的现有程序,等等)。额外地或者替代地,例如,程序的(一个或多个)输入和/或(一个或多个)输出被作为输入提供给模型,如上文联系图3和图4提到的。
在块604,图示示例的示例模型实现器电路218基于向经训练的模型提供上述输入而确定和/或计算得分(例如,相似性得分、正确性得分、适配性得分,等等)。
在块606,在一些示例中,模型实现器电路218和/或适配性分析器电路216(图2)基于其相应的得分对程序进行排名。
在块608,在一些示例中,模型实现器电路218和/或适配性分析器电路216选择已由示例模型实现器电路218确定和/或计算得分的程序。在一些这样的示例中,具有低于阈值的得分的程序可以被消除和/或被从考虑中移除。
在块610,在一些示例中,适配性分析器电路216和/或GA分析器电路208(图2)将至少一个程序提供给GA过程和/或系统,例如图1中所示的GA 107。根据本文公开的示例,提供给GA过程和/或系统的(一个或多个)程序可以是得分高于阈值的程序。进而,被转发给GA过程和/或系统的程序可以被杂交、迭代地调整、进化,等等。额外地或者替代地,GA分析器电路208基于由示例模型实现器电路218确定和/或计算的得分来调整GA过程和/或系统的参数和/或方面。
在块612,在一些示例中,模型实现器电路218输出被认为与自然语言描述文本匹配到必要程度的程序,并且图6的指令和/或操作结束。
图7是示例处理器平台700的框图,示例处理器平台700被构造来执行和/或实例化图5和图6的机器可读指令和/或操作以实现图2的示例模型分析系统200。处理器平台700可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personal digitalassistant,PDA)、互联网家电、DVD播放器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机(例如,增强现实(augmented reality,AR)耳机、虚拟现实(virtual reality,VR)耳机,等等)或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台700包括处理器电路712。图示示例的处理器电路712是硬件。例如,处理器电路712可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器来实现。处理器电路712可以由一个或多个基于半导体(例如,基于硅)的器件来实现。在这个示例中,处理器电路712实现了示例采样器电路202、示例程序生成器电路204、示例代码语义相似性电路206、示例GA分析器电路208、示例过滤器电路210、示例模型训练器电路212、示例适配性分析器电路216、以及示例模型实现器电路218。
图示示例的处理器电路712包括本地存储器713(例如,缓存、寄存器,等等)。图示示例的处理器电路712通过总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可由同步动态随机访问存储器(Synchronous DynamicRandom Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、动态随机访问存储器(/>Dynamic Random AccessMemory,/>)和/或任何其他类型的RAM设备实现。非易失性存储器716可以由闪存和/或任何其他期望类型的存储器设备实现。对图示示例的主存储器714、716的访问受存储器控制器717控制。
图示示例的处理器平台700还包括接口电路720。接口电路720可根据任何类型的接口标准由硬件实现,例如以太网接口、通用串行总线(universal serial bus,USB)接口、接口、近场通信(near field communication,NFC)接口、PCI接口和/或PCIe接口。
在图示示例中,一个或多个输入设备722连接到接口电路720。(一个或多个)输入设备722允许用户向处理器电路712中输入数据和/或命令。(一个或多个)输入设备722可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint设备和/或语音识别系统实现。
一个或多个输出设备724也连接到图示示例的接口电路720。输出设备724可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organiclight emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、就地切换(in-place switching,IPS)显示器、触摸屏等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路720从而通常包括图形驱动器卡、图形驱动器芯片和/或图形处理器电路,比如GPU。
图示示例的接口电路720还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进通过网络726与外部机器(例如,任何种类的计算设备)的数据交换。通信可通过例如以太网连接、数字订户线(digital subscriberline,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接等等进行。
图示示例的处理器平台700还包括一个或多个大容量存储设备728来存储软件和/或数据。这种大容量存储设备728的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disk,RAID)系统、固态存储设备(比如闪存设备)、以及DVD驱动器。
可由图5和图6的机器可读指令实现的机器可执行指令732可被存储在大容量存储设备728中、易失性存储器714中、非易失性存储器716中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图8是图7的处理器电路712的示例实现方式的框图。在这个示例中,图7的处理器电路712由通用微处理器电路800实现。通用微处理器电路800执行图5和图6的流程图的机器可读指令的一部分或全部,以有效地将图2的电路实例化为逻辑电路,来执行与这些机器可读指令相对应的操作。在一些这样的示例中,图2的电路是由微处理器800的硬件电路结合指令来实例化的。例如,微处理器800可以实现多核硬件电路,例如CPU、DSP、GPU、XPU,等等。虽然它可包括任意数目的示例核心802(例如,1个核心),但此示例的微处理器800是包括N个核心的多核半导体设备。微处理器800的核心802可以独立操作,或者可以合作来执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可被核心802之一执行,或者可被核心802中的多个核心在相同或不同时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程并且被核心802中的两个或更多个并行执行。该软件程序可以对应于图5和图6的流程图所表示的机器可读指令和/或操作的一部分或全部。
核心802可以通过示例总线804进行通信。在一些示例中,总线804可以实现通信总线,以实现与核心802中的一个(或多个)相关联的通信。例如,总线804可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(Serial Peripheral Interface,SPI)总线、PCI总线或者PCIe总线中的至少一者。额外地或者替代地,总线804可以实现任何其他类型的计算或电气总线。核心802可以通过示例接口电路806从一个或多个外部设备获得数据、指令和/或信号。核心802可以通过接口电路806向一个或多个外部设备输出数据、指令和/或信号。虽然此示例的核心802包括示例本地存储器820(例如,可被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但微处理器电路800也包括可由核心共享的示例共享存储器810(例如,第2级(L2缓存)),用于高速访问数据和/或指令。可以通过向共享存储器810写入和/或从共享存储器1210读取来传送(例如,共享)数据和/或指令。每个核心802的本地存储器820和共享存储器810可以是包括多级缓存存储器和主存储器(例如,图7的主存储器714、716)的存储设备的层次体系的一部分。通常,该层次体系中的较高级别的存储器与较低级别的存储器相比表现出更低的访问时间并且具有更小的存储容量。缓存层次体系的各种级别的变化由缓存一致性策略来管理(例如,协调)。
每个核心802可被称为CPU、DSP、GPU,等等,或者任何其他类型的硬件电路。每个核心802包括控制单元电路814、算术和逻辑(arithmetic and logic,AL)电路(有时称为ALU)816、多个寄存器818、L1缓存820、以及第二示例总线822。其他结构也可以存在。例如,每个核心802可包括向量单元电路、单指令多数据(single instruction multiple data,SIMD)单元电路、加载/存储单元(load/store unit,LSU)电路、分支/跳跃单元电路、浮点单元(floating-point unit,FPU)电路,等等。控制单元电路814包括基于半导体的电路,其被构造为控制(例如,协调)相应核心802内的数据移动。AL电路816包括基于半导体的电路,其被构造为对相应核心802内的数据执行一个或多个数学和/或逻辑操作。一些示例中的AL电路816执行基于整数的操作。在其他示例中,AL电路816也执行浮点操作。在另外一些示例中,AL电路816可包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路816可被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器818是基于半导体的结构,用来存储数据和/或指令,例如由相应核心802的AL电路816执行的一个或多个操作的结果。例如,寄存器818可包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)片段寄存器、(一个或多个)机器专用寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器,等等。寄存器818可以如图5所示被安排为库组(bank)。可替代地,寄存器818可以按任何其他安排、格式或结构被组织,包括分布在整个核心802中以缩短访问时间。第二总线822可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心802和/或更概括而言微处理器800可包括作为以上所示出和描述的附加和/或替代的结构。例如,可以存在一个或多个时钟电路、一个或多个电力供应源、一个或多个电力门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/通用网挡(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路。微处理器800是半导体设备,它被制造为包括许多相互连接的晶体管,以在一个或多个封装中包含的一个或多个集成电路(IC)中实现上述的结构。处理器电路可包括一个或多个加速器和/或与一个或多个加速器合作。在一些示例中,加速器由逻辑电路实现,以比通用处理器更快速和/或高效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文论述的那些。GPU或其他可编程设备也可以是加速器。加速器可以在处理器电路的板上,在与处理器电路相同的芯片封装中,和/或在与处理器电路分开的一个或多个封装中。
图9是图7的处理器电路712的另一示例实现方式的框图。在这个示例中,处理器电路712由FPGA电路900实现。例如,FPGA电路900可用于例如执行否则可通过图8的示例微处理器800执行相应的机器可读指令而执行的操作。然而,一旦被配置,FPGA电路900就用硬件来实例化机器可读指令,从而,执行操作的速度经常比执行相应软件的通用微处理器的执行速度更快。
更具体而言,与上文描述的图8的微处理器电路800(它是通用设备,可以被编程来执行图5和图6的流程图所表示的机器可读指令的一部分或全部,但其互连和逻辑电路一旦被制造出来就固定了)相对比,图9的示例的FPGA电路900包括互连和逻辑电路,这些互连和逻辑电路可以在制造之后以不同方式被配置和/或互连,以实例化例如由图5和图6的流程图表示的机器可读指令的一部分或全部。具体地,FPGA 900可以被认为是逻辑门、互连和开关的阵列。开关可以被编程以改变逻辑门被互连所互连的方式,有效地形成一个或多个专用的逻辑电路(除非和直到FPGA电路900被重编程为止)。配置的逻辑电路使得逻辑门能够以不同方式合作,以对输入电路接收的数据执行不同的操作。这些操作可以对应于图5和图6的流程图所表示的软件的一部分或全部。因此,FPGA电路900可被构造为有效地将图5和图6的流程图的机器可读指令的一部分或全部实例化为专用逻辑电路,来以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路900执行与图5和图6的机器可读指令的一部分或全部相对应的操作的速度可以比通用微处理器执行这些指令的速度更快。
在图9的示例中,FPGA电路900被构造为由最终用户通过硬件描述语言(hardwaredescription language,HDL)(例如Verilog)进行编程(和/或一次或多次重编程)。图9的FPGA电路900包括示例输入/输出(I/O)电路902,以从示例配置电路904和/或外部硬件(例如,外部硬件电路)906获得和/或向其输出数据。例如,配置电路904可以实现接口电路,该接口电路可以获得机器可读指令,以配置FPGA电路900,或者其(一个或多个)部分。在一些这样的示例中,配置电路904可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路(例如,编程的或专用的电路))等等获得机器可读指令。在一些示例中,外部硬件906可以实现图8的微处理器电路800。FPGA电路900还包括示例逻辑门电路908的阵列、多个示例可配置互连910、以及示例存储电路912。逻辑门电路908和互连910可被配置为实例化与图5和图6的机器可读指令中的至少一些相对应的一个或多个操作,和/或其他期望的操作。图9所示的逻辑门电路908是按组或按块制造的。每个块包括基于半导体的电气结构,这些电气结构可被配置成逻辑电路。在一些示例中,电气结构包括为逻辑电路提供基本构建块的逻辑门(例如,与门、或门、或非门,等等)。在每个逻辑门电路908内存在可电控的开关(例如,晶体管),以便能够配置电气结构和/或逻辑门,来形成电路以执行期望的操作。逻辑门电路908可包括其他电气结构,例如查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、多路复用器,等等。
图示示例的互连910是导电通路、迹线、通孔之类的,它们可包括可电控开关(例如,晶体管),这些开关的状态可通过编程(例如,使用HDL指令语言)被改变,以激活或停用一个或多个逻辑门电路908之间的一个或多个连接,来编程期望的逻辑电路。
图示示例的存储电路912被构造为存储由相应逻辑门执行的一个或多个操作的(一个或多个)结果。存储电路912可以由寄存器之类的实现。在图示示例中,存储电路912分布在逻辑门电路908之间,以促进访问并且提高执行速度。
图9的示例FPGA电路900还包括示例专用操作电路914。在这个示例中,专用操作电路914包括专用电路916,该专用电路可被调用来实现常用功能,以避免需要在现场对这些功能进行编程。这种专用电路916的示例包括存储器(例如,DRAM)控制器电路、PCIe控制器电路、时钟电路、收发器电路、存储器、以及乘法器-累加器电路。其他类型的专用电路也可存在。在一些示例中,FPGA电路900还可包括示例通用可编程电路918,例如示例CPU 920和/或示例DSP 922。其他通用可编程电路918可以额外地或者替代地存在,例如GPU、XPU,等等,它们可被编程以执行其他操作。
虽然图8和图9图示了图7的处理器电路712的两个示例实现方式,但也设想了许多其他途径。例如,如上所述,现代FPGA电路可包括板载CPU,例如图9的一个或多个示例CPU920。因此,图4的处理器电路712可以额外地通过组合图8的示例微处理器电路800和图9的示例FPGA电路900来实现。在一些这样的混合示例中,由图5和图6的流程图表示的机器可读指令的第一部分可以由图8的一个或多个核心802执行,由图5和图6的流程图表示的机器可读指令的第二部分可以由图9的FPGA电路900执行,并且/或者由图5和图6的流程图表示的机器可读指令的第三部分可以由ASIC执行。应当理解,图2的一些或所有电路从而可以在相同或不同时间被实例化。一些或所有电路可以例如在同时和/或串行执行的一个或多个线程中被实例化。此外,在一些示例中,图2的一些或所有电路可以在微处理器上执行的一个或多个虚拟机和/或容器内实现。
在一些示例中,图9的处理器电路912可以在一个或多个封装中。例如,图8的处理器电路800和/或图9的FPGA电路900可以在一个或多个封装中。在一些示例中,XPU可以由图7的处理器电路712实现,该处理器电路可以在一个或多个封装中。例如,XPU可包括在一个封装中的CPU、在另一个封装中的DSP、在又一个封装中的GPU、以及在再一个封装中的FPGA。
图10中图示了框图,该框图图示了示例软件分发平台1005,用来将诸如图7的示例机器可读指令732之类的软件分发到由第三方拥有和/或操作的硬件设备。示例软件分发平台1005可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等实现。第三方可以是拥有和/或操作该软件分发平台1005的实体的客户。例如,拥有和/或操作软件分发平台1005的实体可以是软件(例如图7的示例机器可读指令732)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、OEM,等等。在图示示例中,软件分发平台1005包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令732,这些指令可对应于如上所述的图5和图6的示例机器可读指令732。示例软件分发平台1005的一个或多个服务器与网络1010通信,该网络可对应于互联网和/或上述的示例网络120中的任何一者中的任何一个或多个。在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台1005下载机器可读指令732。例如,可与图7的示例机器可读指令732相对应的软件可被下载到示例处理器平台700,该平台将执行机器可读指令732以实现示例模型分析系统102。在一些示例中,软件分发平台1005的一个或多个服务器周期性地提供、传输和/或强制更新软件(例如,图7的示例机器可读指令732),以确保改进、补丁、更新等等被分发并且在最终用户设备处被应用于软件。
从上述内容将会明白,已公开了使得能够开发能够促进程序合成的准确的经训练模型的示例系统、方法、装置和制品。因此,本文公开的示例可以改善经由程序合成生成的结果(例如,程序)。本文公开的示例还可以通过提供对具有相对较高适配性的候选程序的选择来促进GA程序生成的操作改善。所公开的系统、方法、装置和制品通过使得能够更高效地确定和/或评估来自程序合成实现方式的结果,使得能够更快速并且可能以处理器效率更高的方式开发具有相对较高准确程度的经训练模型,从而提高了使用计算设备的效率。所公开的系统、方法、装置和制品因此针对诸如计算机或其他电子和/或机械设备之类的机器的操作的一个或多个改进。
本文公开了为程序合成训练模型的示例方法、装置、系统和制品。进一步示例及其组合包括以下示例:
示例1包括一种装置,该装置包括至少一个存储器,指令,以及处理器电路,用来执行所述指令以对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述,计算与所述程序的配对相对应的程序相似性得分,并且基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及所述程序相似性得分中的相应一个。
示例2包括如示例1中限定的装置,其中,所述条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
示例3包括如示例1中限定的装置,其中,所述处理器电路执行所述指令以利用遗传算法生成所述第二程序。
示例4包括如示例1中限定的装置,其中,所述处理器电路执行所述指令以进一步基于输入或者与所述输入相关联的输出中的至少一者来训练所述模型。
示例5包括如示例4中限定的装置,其中,所述条目中的一些条目还包括所述输入和所述输出,所述输出是通过将所述输入提供给所述第一程序或所述第二程序中的至少一者之一来生成的。
示例6包括如示例1中限定的装置,其中,所述处理器电路执行所述指令以过滤所述程序的配对。
示例7包括如示例6中限定的装置,其中,所述处理器电路执行所述指令以通过移除所述程序的配对中具有优势得分的那些配对来过滤所述程序的配对。
示例8包括如示例1中限定的装置,其中,所述处理器电路执行所述指令以经由代码语义相似性算法计算所述程序相似性得分。
示例9包括如示例1中限定的装置,其中,所述处理器电路执行所述指令以利用长短期记忆(LSTM)神经网络来训练所述模型。
示例10包括如示例9中限定的装置,其中,所述LSTM神经网络是双向LSTM训练网络。
示例11包括一种非暂态计算机可读介质,该介质包括指令,所述指令当被执行时,使得至少一个处理器对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述,计算与所述程序的配对相对应的程序相似性得分,并且基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及所述程序相似性得分中的相应一个。
示例12包括如示例11中限定的计算机可读介质,其中,所述条目中的一些条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
示例13包括如示例11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器利用遗传算法来生成所述第二程序。
示例14包括如示例11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器进一步基于输入或者与所述输入相关联的输出中的至少一者来训练所述模型。
示例15包括如示例14中限定的计算机可读介质,其中,所述条目中的一些条目还包括所述输入和所述输出,所述输出是通过将所述输入提供给所述第一程序或所述第二程序中的至少一者之一来生成的。
示例16包括如示例11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器过滤所述程序的配对。
示例17包括如示例16中限定的计算机可读介质,其中,通过移除所述程序的配对中具有优势得分的那些来过滤所述程序的配对。
示例18包括如示例11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器经由代码语义相似性算法计算所述程序相似性得分。
示例19包括如示例11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器利用长短期记忆(LSTM)神经网络来训练所述模型。
示例20包括如示例19中限定的计算机可读介质,其中,所述LSTM神经网络是双向LSTM神经网络。
示例21包括一种方法,该方法包括通过利用至少一个处理器执行指令来对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述,通过利用所述至少一个处理器执行指令,来计算与所述程序的配对相对应的程序相似性得分,并且通过利用所述至少一个处理器执行指令,来基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及所述程序相似性得分中的相应一个。
示例22包括如示例21中限定的方法,其中,所述条目中的一些条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
示例23包括如示例21中限定的方法,还包括通过利用所述至少一个处理器执行指令,来利用遗传算法来生成所述第二程序。
示例24包括如示例21中限定的方法,其中,所述模型被基于输入或者与所述输入相关联的输出中的至少一者来进一步训练。
示例25包括如示例24中限定的方法,其中,所述条目中的一些还包括所述输入和所述输出,所述输出是通过将所述输入提供给所述第一程序或所述第二程序中的至少一者之一来生成的。
示例26包括如示例21中限定的方法,还包括通过利用所述至少一个处理器执行指令,来过滤所述程序的配对。
示例27包括如示例26中限定的方法,其中,通过移除所述程序的配对中具有优势得分的那些配对来过滤所述程序的配对。
示例28包括如示例21中限定的方法,还包括通过利用所述至少一个处理器执行指令,来经由代码语义相似性算法计算所述程序相似性得分。
虽然本文已经公开了某些示例系统、方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有系统、方法、装置和制品。
特此通过引用将所附权利要求并入到该“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。
Claims (25)
1.一种装置,包括:
至少一个存储器;
指令;以及
处理器电路,用来执行所述指令以:
对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述,
计算与所述程序的配对相对应的程序相似性得分,并且
基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括:
所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及
所述程序相似性得分中的相应一个。
2.如权利要求1中限定的装置,其中,所述条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
3.如权利要求1中限定的装置,其中,所述处理器电路执行所述指令以利用遗传算法生成所述第二程序。
4.如权利要求1到3中任一项中限定的装置,其中,所述处理器电路执行所述指令以进一步基于输入或者与所述输入相关联的输出中的至少一者来训练所述模型。
5.如权利要求4中限定的装置,其中,所述条目中的一些条目还包括所述输入和所述输出,所述输出是通过将所述输入提供给所述第一程序或所述第二程序中的至少一者之一来生成的。
6.如权利要求1中限定的装置,其中,所述处理器电路执行所述指令以过滤所述程序的配对。
7.如权利要求6中限定的装置,其中,所述处理器电路执行所述指令以通过移除所述程序的配对中具有优势得分的那些配对来过滤所述程序的配对。
8.如权利要求1、6或7中任一项中限定的装置,其中,所述处理器电路执行所述指令以经由代码语义相似性算法计算所述程序相似性得分。
9.如权利要求1中限定的装置,其中,所述处理器电路执行所述指令以利用长短期记忆(LSTM)神经网络来训练所述模型。
10.如权利要求9中限定的装置,其中,所述LSTM神经网络是双向LSTM训练网络。
11.一种非暂态计算机可读介质,包括指令,所述指令当被执行时,使得至少一个处理器:
对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述;
计算与所述程序的配对相对应的程序相似性得分;并且
基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括:
所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及
所述程序相似性得分中的相应一个。
12.如权利要求11中限定的计算机可读介质,其中,所述条目中的一些条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
13.如权利要求11或12中任一项中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器利用遗传算法来生成所述第二程序。
14.如权利要求11或12中任一项中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器进一步基于输入或者与所述输入相关联的输出中的至少一者来训练所述模型。
15.如权利要求14中限定的计算机可读介质,其中,所述条目中的一些条目还包括所述输入和所述输出,所述输出是通过将所述输入提供给所述第一程序或所述第二程序中的至少一者之一来生成的。
16.如权利要求11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器过滤所述程序的配对。
17.如权利要求16中限定的计算机可读介质,其中,通过移除所述程序的配对中具有优势得分的那些配对来过滤所述程序的配对。
18.如权利要求11、16或17中任一项中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器经由代码语义相似性算法计算所述程序相似性得分。
19.如权利要求11中限定的计算机可读介质,其中,所述指令使得所述至少一个处理器利用长短期记忆(LSTM)神经网络来训练所述模型。
20.一种方法,包括:
通过利用至少一个处理器执行指令,来对程序的配对采样,所述程序的配对包括第一程序和第二程序,所述第一程序包括自然语言描述;
通过利用所述至少一个处理器执行指令,来计算与所述程序的配对相对应的程序相似性得分;并且
通过利用所述至少一个处理器执行指令,来基于与所述程序的配对中的一些配对相对应的条目来训练模型,所述条目中的至少一个条目包括:
所述自然语言描述中的相应一个和所述第二程序中与之配对的一个,以及
所述程序相似性得分中的相应一个。
21.如权利要求20中限定的方法,其中,所述条目中的一些条目还包括与所述第二程序中的一个配对的所述第一程序中的相应一个。
22.如权利要求20或21中任一项中限定的方法,还包括通过利用所述至少一个处理器执行指令,来利用遗传算法来生成所述第二程序。
23.如权利要求20中限定的方法,其中,所述模型被基于输入或者与所述输入相关联的输出中的至少一者来进一步训练。
24.如权利要求20或23中任一项中限定的方法,还包括通过利用所述至少一个处理器执行指令,来过滤所述程序的配对。
25.如权利要求20或24中任一项中限定的方法,还包括通过利用所述至少一个处理器执行指令,来经由代码语义相似性算法计算所述程序相似性得分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/551,170 US20220108182A1 (en) | 2021-12-14 | 2021-12-14 | Methods and apparatus to train models for program synthesis |
US17/551,170 | 2021-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116266109A true CN116266109A (zh) | 2023-06-20 |
Family
ID=80931467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211395470.3A Pending CN116266109A (zh) | 2021-12-14 | 2022-11-09 | 为程序合成训练模型的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220108182A1 (zh) |
CN (1) | CN116266109A (zh) |
DE (1) | DE102022126248A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992121A (zh) * | 2024-01-18 | 2024-05-07 | 深圳威科未来科技有限公司 | 一种ai识别用户通过自然语言输入的动作指令方法 |
-
2021
- 2021-12-14 US US17/551,170 patent/US20220108182A1/en active Pending
-
2022
- 2022-10-11 DE DE102022126248.0A patent/DE102022126248A1/de active Pending
- 2022-11-09 CN CN202211395470.3A patent/CN116266109A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992121A (zh) * | 2024-01-18 | 2024-05-07 | 深圳威科未来科技有限公司 | 一种ai识别用户通过自然语言输入的动作指令方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220108182A1 (en) | 2022-04-07 |
DE102022126248A1 (de) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11977605B2 (en) | Methods and apparatus to automatically evolve a code recommendation engine | |
CN116266114A (zh) | 识别代码语义的方法、系统、制品和装置 | |
US11782813B2 (en) | Methods and apparatus to determine refined context for software bug detection and correction | |
CN116266119A (zh) | 生成依赖于使用的代码嵌入的方法、装置和制品 | |
CN116266109A (zh) | 为程序合成训练模型的方法和装置 | |
US20220391668A1 (en) | Methods and apparatus to iteratively search for an artificial intelligence-based architecture | |
US11954466B2 (en) | Methods and apparatus for machine learning-guided compiler optimizations for register-based hardware architectures | |
US20220101096A1 (en) | Methods and apparatus for a knowledge-based deep learning refactoring model with tightly integrated functional nonparametric memory | |
US20220114451A1 (en) | Methods and apparatus for data enhanced automated model generation | |
CN117616428A (zh) | 用于在资源受约束的图像识别应用中执行并行双批自蒸馏的方法和装置 | |
US20240273265A1 (en) | Methods and apparatus to design and test electronics using artificial intelligence | |
EP4109344A1 (en) | Methods, systems, articles of manufacture and apparatus to improve algorithmic solver performance | |
US20240126520A1 (en) | Methods and apparatus to compile portable code for specific hardware | |
US20240119287A1 (en) | Methods and apparatus to construct graphs from coalesced features | |
US12032541B2 (en) | Methods and apparatus to improve data quality for artificial intelligence | |
US20220335286A1 (en) | Methods, systems, articles of manufacture, and apparatus for designing hardware | |
US20240220780A1 (en) | Methods, systems, articles of manufacture, and apparatus to determine field access readiness | |
WO2024108382A1 (en) | Methods and apparatus to perform many-to-one feature distillation in neural networks | |
US20230229682A1 (en) | Reduction of latency in retriever-reader architectures | |
US20220318595A1 (en) | Methods, systems, articles of manufacture and apparatus to improve neural architecture searches | |
US20240241484A1 (en) | Methods and apparatus to automate invariant synthesis | |
US20230418622A1 (en) | Methods and apparatus to perform cloud-based artificial intelligence overclocking | |
EP4137936A1 (en) | Methods and apparatus to automatically evolve a code recommendation engine | |
US20220012570A1 (en) | Bayesian compute unit with reconfigurable sampler and methods and apparatus to operate the same | |
WO2024065535A1 (en) | Methods, apparatus, and articles of manufacture to generate hardware-aware machine learning model architectures for multiple domains without training |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |