System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种模型训练方法及其装置制造方法及图纸_技高网

一种模型训练方法及其装置制造方法及图纸

技术编号:40312407 阅读:7 留言:0更新日期:2024-02-07 20:54
一种模型训练方法,涉及人工智能领域,包括:获取第一文本以及第二文本,第一文本和第二文本为从原始代码文本中提取得到的;其中,第一文本为程序代码,第二文本为程序代码对应的属性描述;第一文本和第二文本包括已知文本以及预测文本;根据已知文本,通过自然语言模型,对预测文本对应文本位置的文本进行预测,得到文本预测结果;预测文本和文本预测结果用于更新自然语言模型。本申请在构建程序合成的训练样本时,从原始的程序代码中提取代码文本和对应的属性描述并作为一对样本,降低了训练难度,提高了模型的预测精度。

【技术实现步骤摘要】

本申请涉及人工智能领域,尤其涉及一种模型训练方法及其装置


技术介绍

1、语言模型(language model)是指能够根据一部分给定的语义片段,预测句子中的未知词的模型。例如:给定的自然语言序列片段“华为__很不错。”,语言模型可以根据该片段生成未知的词语,如该例子中语言模型可基于给定片段生成“手机”一词,进而得到句子为“华为手机很不错。”。

2、语言模型的预训练是指通过海量的语言序列语料,训练对应的语言模型,使得语言模型具备预测某个位置某个语言单位出现概率的能力。

3、程序合成指的是由一定的软件程序来自动合成具有指定功能或者结构的指定程序语言序列,简而言之就是由程序来生成程序,总体上分为程序合成(代码生成)以及代码补全两种。程序合成,即从无到有,可以按一定的自然语言描述或预设的功能描述,生成对应的代码。代码补全,即在已有的代码序列上文基础上,继续生成下文代码序列。

4、随着深度学习技术的发展,利用深度学习进行序列生成已经被广泛应用在自然语言序列生成的场景上,特别是预训练语言生成模型技术的出现,使得语言生成能力有了质的提升。近年来,类似生成式预训练模型(generative pre-training,gpt)、t5、bart等生成模型也开始逐渐被引入代码生成或者补全中。该技术以transformer为基础部件,搭件解码器或者,编码-解码器模型架构,再用大量的代码数据进行训练,得到可以根据上文输出相应代码下文的能力,从而进行代码补全或者生成。

5、现有的技术沿用自然语言处理的生成方式,根据原始的代码进行训练,当前这种方式能够根据已有上下文进行代码的续写,但是针对函数级代码的生成这个场景,代码生成的质量还有待提升。


技术实现思路

1、本申请提供了一种模型训练方法,可以降低训练难度,提高代码的生成质量。

2、第一方面,本申请提供了一种模型训练方法,包括:获取第一文本以及第二文本,所述第一文本和所述第二文本为从原始代码文本中提取得到的;其中,所述第一文本为程序代码,所述第二文本为所述程序代码对应的属性描述;所述第一文本和所述第二文本包括已知文本以及预测文本;根据所述已知文本,通过自然语言模型,对所述预测文本对应文本位置的文本进行预测,得到文本预测结果;所述预测文本和所述文本预测结果用于更新所述自然语言模型。

3、在一种可能的实现中,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原理(或者称之为该程序代码的解释)。

4、在一种可能的实现中,原始代码文本可以为已有的程序语言语料及自然语言语料。可选的,可以通过网络(或者其他方式)获取已有的程序语言语料及自然语言语料,该语料包括混合程序语言及自然语言的代码文件、程序语言的代码文件、自然语言的文件。其中,收集的自然语言可以是任意人类语言,程序语言可以是任意编程语言,本申请并不限定。

5、在一种可能的实现中,所述第一文本和所述第二文本为从原始代码文本中提取得到的;其中,所述第一文本为程序代码,所述第二文本为所述程序代码对应的属性描述。第二文本可以为自然语言,且第二文本可以是任意的人类沟通时使用的语言,程序代码可以是任意编程语言,本申请并不限定。

6、在一种可能的实现中,在识别出第一文本和第二文本之后,可以建立第一文本以及第二文本之间的对应关系,以形成“自然语言描述-函数实现代码”(description-function)的句对形式样本。可选的,可以在每组自然语言-程序语言前使用表示字符组合来表示接下来的序列为文本语言序列或者具体的代码语言序列,并在样本之后添加样本结束符,进而可以表示出第一文本和第二文本为一对样本。

7、本申请实施例中,在构建程序合成的训练样本时,从原始的程序代码中提取代码文本和对应的属性描述并作为一对样本,相比现有技术中直接将原始的程序文件作为训练样本,帮助自然语言模型在训练时可以将代码文本和对应的属性描述之间建立关联,而无需在训练过程中从样本中学习到识别这种关联的能力,降低了训练难度,提高了模型的预测精度。

8、在一种可能的实现中,为了提高训练语料的质量,可以对函数级代码片段(例如代码程序)根据其代码语料的统计特性,去除代码语料中自然语言描述部分过短的语料、代码部分过长的语料或者两者长度相差过大的语料,以提升训练语料质量。

9、在一种可能的实现中,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原理。

10、在一种可能的实现中,所述第一文本为通过程序代码识别方法从原始代码文本中识别得到的,所述第二文本为通过属性描述识别方法从原始代码文本中识别得到的。

11、在一种可能的实现中,可以识别原始代码文本中的函数代码段作为第一文本:例如,可以使用一定规则(例如可以使用代码抽象语法树(ast)等程序代码识别方法)识别原始代码文本中的函数代码段。

12、在一种可能的实现中,可以使用的一定的规则,例如通过注释规则,语言字符规则等属性描述识别方法进行识别抽取。

13、示例性的,可以进行代码抽象语法树(ast)分析,对代码进行分析得到对应代码的语法树,通过语法树分析截取对应的函数级代码片段对应的自然语言描述。

14、示例性的,可以使用自然语言处理自动识别的方法进行代码段抽取,例如序列标注的方法,训练函数标注器标注出所有函数级代码对应的自然语言描述。

15、在一种可能的实现中,所述程序代码为一个或多个函数的完整代码。

16、在一种可能的实现中,为了训练能够用于进行程序生成功能的模型(也就是本申请实施例中的自然语言模型),可以将训练样本中的部分文本单元作为已知文本,另一部分文本作为待预测的文本,并基于已知文本来预测待预测的文本所在的文本位置的文本。

17、由于第一文本和第二文本为不同类型的文本(第一文本为计算机编译语言,第二文本为自然语言),可以针对于第一文本和第二文本通过不同的训练目标进行文本预测过程。

18、例如,针对于第一文本,可以采用clm、mlm、mclm以及nolm四种训练目标中的一种进行文本预测过程。

19、例如,针对于第二文本,可以采用clm、mlm以及mclm三种训练目标中的一种进行模型训练过程。

20、在优化自然语言描述部分时,可选clm、mlm、mclm、nolm四种训练目标中的一种。在优化程序语言函数代码部分时,可选clm、mlm、mclm三种训练目标中的一种,注意此处可以不包括nolm训练目标。自然语言描述部分和程序语言函数代码部分训练目标可自由组合。

21、在一种可能的实现中,在对所述第一文本中的文本进行预测时,可以通过第一方式,从所述第一文本中确定所述预测文本对应的文本位置;在对所述第二文本中的文本进行预测时,可以通过第二方式,从所述第二文本中确定所述预测文本对应的文本位置;所述第一方式和所述第二方式不同。

22、在一种可能的实本文档来自技高网...

【技术保护点】

1.一种模型训练方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原理。

3.根据权利要求1或2所述的方法,其特征在于,所述第一文本为通过程序代码识别方法从原始代码文本中识别得到的,所述第二文本为通过属性描述识别方法从原始代码文本中识别得到的。

4.根据权利要求1至3任一所述的方法,其特征在于,所述程序代码为一个或多个函数的完整代码。

5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述第一方式和所述第二方式分别为如下预测方式的一种:

7.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1至7任一所述的方法,其特征在于,

9.根据权利要求8所述的方法,其特征在于,所述修改包括:删除、增加或者替换。

10.根据权利要求9所述的方法,其特征在于,所述替换具体为相同语义的替换。

11.根据权利要求1至10任一所述的方法,其特征在于,所述第一文本或所述第二文本为从原始代码文本中提取的适配于所述程序代码的应用领域的文本。

12.根据权利要求1至11任一所述的方法,其特征在于,所述适配于所述程序代码的应用领域,包括:

13.一种模型训练装置,其特征在于,包括:

14.根据权利要求13所述的装置,其特征在于,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原理。

15.根据权利要求13或14所述的装置,其特征在于,所述装置还包括:

16.根据权利要求15所述的装置,其特征在于,所述第一方式和所述第二方式分别为如下预测方式的一种:

17.根据权利要求13或14所述的装置,其特征在于,所述文本位置确定模块,还用于:在不对第二文本中的文本进行预测的情况下,通过如下预测方式的一种确定所述预测文本对应的文本位置:

18.根据权利要求13至17任一所述的装置,其特征在于,

19.根据权利要求18所述的装置,其特征在于,所述修改包括:删除、增加或者替换。

20.根据权利要求19所述的装置,其特征在于,所述替换具体为相同语义的替换。

21.根据权利要求13至20任一所述的装置,其特征在于,所述第一文本或所述第二文本为从原始代码文本中提取的适配于所述程序代码的应用领域的文本。

22.根据权利要求13至21任一所述的装置,其特征在于,所述适配于所述程序代码的应用领域,包括:

23.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一个或多个指令,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行权利要求1至12中任一项所述方法的操作。

24.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至12任一所述的方法。

25.一种系统,包括至少一个处理器,至少一个存储器;所述处理器、所述存储器通过通信总线连接并完成相互间的通信;

...

【技术特征摘要】

1.一种模型训练方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原理。

3.根据权利要求1或2所述的方法,其特征在于,所述第一文本为通过程序代码识别方法从原始代码文本中识别得到的,所述第二文本为通过属性描述识别方法从原始代码文本中识别得到的。

4.根据权利要求1至3任一所述的方法,其特征在于,所述程序代码为一个或多个函数的完整代码。

5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述第一方式和所述第二方式分别为如下预测方式的一种:

7.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1至7任一所述的方法,其特征在于,

9.根据权利要求8所述的方法,其特征在于,所述修改包括:删除、增加或者替换。

10.根据权利要求9所述的方法,其特征在于,所述替换具体为相同语义的替换。

11.根据权利要求1至10任一所述的方法,其特征在于,所述第一文本或所述第二文本为从原始代码文本中提取的适配于所述程序代码的应用领域的文本。

12.根据权利要求1至11任一所述的方法,其特征在于,所述适配于所述程序代码的应用领域,包括:

13.一种模型训练装置,其特征在于,包括:

14.根据权利要求13所述的装置,其特征在于,所述属性描述包括所述程序代码功能描述或者所述程序代码的实现原...

【专利技术属性】
技术研发人员:王雅圣郭寅鹏张顾春依格纳西欧·依阿扣巴希吉拉西莫斯·兰普拉斯艾芙斯达希亚·克里斯托普利欧米兰·格瑞塔马宇驰
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1