[发明专利]一种基于元学习的代码自适应生成方法有效
申请号: | 202010932958.X | 申请日: | 2020-09-08 |
公开(公告)号: | CN112114791B | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 张智轶;方立宇;黄志球;陶传奇;张静宣;杨文华;周宇 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06N3/08 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 刘莎 |
地址: | 211106 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 学习 代码 自适应 生成 方法 | ||
本发明公开一种基于元学习的代码自适应生成方法,首先构建包含不同代码风格的数据集,并对基础代码生成模型进行训练,基础代码生成模型采用编码器‑解码器结构,编码器使用图神经网络计算代码图的状态向量,表示程序当前上下文信息;解码器使用语言语法中的产生规则,根据上下文信息生成目标代码表达式;再通过元学习,学习不同的代码风格,从而训练出能够对新的风格代码做出快速而准确的学习的自适应代码生成模型;最终用户指定目标风格代码,对自适应代码生成模型再进行元训练过程,模型就能够生成具有目标风格的代码。本发明作为一种代码生成方法引入了元学习技术,能够根据编程人员不同的个性化代码风格正确和高效的生成代码。
技术领域
本发明涉及一种基于元学习的代码自适应生成方法,尤其涉及一种利用程序静态分析、图神经网络技术和元学习技术实现自适应的代码生成方法,属于软件工程技术领域。
背景技术
集成开发环境(IDE)已成为现代软件工程师的基本范式,它提供了一组有用的服务来加速软件开发。代码生成(补全)是IDE中最有价值的功能之一,尤其是当开发人员不熟悉代码库时。它可以建议下一个可能的代码单元,例如变量名或函数调用,包括API调用。近年来,研究者提出了许多代码生成的模型,使用机器学习技术从大量开源代码数据库提取数据进行训练,但是,不同的开发人员具有不同的编码风格,许多优秀的开发团队都有自己的开发风格指南。当合并不同开发人员的代码时,同时会使得不同的编码风格互相混淆。所以现有的代码生成模型无法根据编程人员的个性化需求进行正确和高效的生成代码。因此,期望代表不同的代码模式来建立适应性代码推荐模型。
获得自适应代码生成结果的直接方法是从相关代码(例如同一项目中的代码文件)中学习类似的代码模式。然后重新训练模型,以便它可以调整参数以适合结果。但是,这种方法可能会损害泛化性能,并且会花费大量时间,因此无法快速适应,这对于程序员来说是不能接受的。因此,我们认为使用已经在小样本学习中取得成功示例的元学习技术MAML能够解决这个问题。元学习可以跨多个先前任务学习数据;少数元学习算法可以发现任务之间的结构,从而可以快速学习新任务。MAML可以用于少量样本。可以通过一些简单的步骤对模型进行微调,以提高这些样本反映的代码模式的推荐性能,同时保持其泛化性能。MAML的一种变体Reptile,简化了梯度计算过程,同时保持了模型的准确性。
发明内容
在实际编程过程中,每个程序员有自己的代码风格,而传统基于机器学习的代码推荐技术无法学习到这种代码风格,目前存在的定制化代码推荐工具需要在本地耗费大量计算资源和时间对模型进行重新训练,无法满足程序员的个性化需求。针对上述问题,本发明提供一种基于元学习的代码自适应生成方法,引入了元学习技术,能够根据编程人员不同的个性化代码风格进行正确和高效的生成代码。
本发明为解决上述技术问题采用以下技术方案:
一种基于元学习的代码自适应生成方法,包括下述步骤:
S1:构建训练数据集
对从开源代码数据库中获取的若干代码数据,并对各代码数据分别进行如下处理:将代码数据解析为抽象语法树,使用程序语法中非终结符的名称标记抽象语法树中的节点;经过控制流分析以及数据流分析得到抽象语法树中节点在数据流和控制流中的关系,在抽象语法树中表示增加表示上述关系的边,得到了包含代码上下文语义信息的代码图;选择代码图的一个表达式作为预测目标,该代码图的剩余部分作为输入,预测目标和输入形成一个样本;按照项目对代码数据进行分类,形成具有不同代码风格的训练数据集;
S2:构建基础代码生成模型,并利用S1中的训练数据集进行训练
所述基础代码生成模型一个编码器-解码器结构,编码器使用图神经网络计算出代码图代表上下文语义的向量表示,输入到解码器中;解码器根据语言语法中的产生规则和当前上下文语义的向量表示一次扩展一个标记token,直至生成目标代码表达式;
S3:基于元学习和训练数据集,对S2训练完成的基础代码生成模型继续学习,生成自适应代码生成模型;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010932958.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种餐余垃圾处理装置
- 下一篇:一种拜耳法氧化铝生产焙烧炉烟气余热回收系统