English version
您所在的位置: 首页 / 学术动态

基于深度学习的程序自动生成

主讲人:刘辉

时间:2021年5月14日(周五)下午3:00

地点:澳联大204教室

主讲人简介:刘辉,教授、博士生导师、教育部新世纪优秀人才。2008年从北京大学获得博士学位并加入北京理工大学计算机学院,2012-2013年在英国UCL进行访问研究。目前主要研究领域包括智能化软件开发环境、深度学习与人工智能、基于大数据的软件工程等。主持/参与了国家自然科学基金青年基金、国家自然科学基金面上项目、国家自然基金重大项目、国家重点研发项目、教育部博士点基金等科研项目。2013年入选教育部新世纪优秀人才、北京青年英才等省部级人才资助计划。在IEEE Transactions on Software Engineering、IEEE Transactions on Reliability, IEEE/ACM International Conference on Software Engineering (ICSE)、IEEE/ACM International Conference on Automated Software Engineering (ASE)、ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (FSE)、ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)等国际一流期刊与国际会议上发表论文二十余篇,他引近千次,获得CCF B类期刊IET Software Premium(Best Paper)Award等学术奖励。担任中国计算机学会软件工程专委会常务委员、副秘书长,软件智能与软件工程研究所副所长。担任CCF B类国际知名期刊IET Software副主编,EMSE、JSS客座编辑。

内容摘要:软件自动生成技术是根据给定的软件需求,自动生成相应的软件代码,从而大幅降低软件开发的成本。随着深度学习和自然语言处理领域最近取得重要进展,研究人员提出了众多基于深度学习和自然语言处理技术的一般性的代码自动生成方法。这些方法采用神经网络将自然语言描述的软件需求转换为相应的以Java 等通用编程语言表达的软件源码。为了训练神经网络,这类方法需要大量的数据集(软件需求及其相应的实现代码)进行训练。虽然现有方法在某些场景下具有了较高的性能,但泛化能力仍有待验证。模型泛化能力较低的主要原因在于现有模型使用的数据集规模偏小,缺乏多样性,并且与现实场景的软件需求具有较大差异。为此,我们从在线判题系统上收集了大量的题目(软件需求)及其对应的程序,构建了一个面向代码自动生成的大规模多样化的数据集。此外,本文为该数据集设计了一个综合性的代码生成质量评估工具,从词汇相似性、结构相似性、语法合法性、语义合法性和功能正确性五个方面对生成的代码进行全方位的评估。为评估数据集对代码自动生成方法的影响,在新的数据集上重新运行和评估了现有代码生成方法。实验结果表明,在新数据集上,生成的代码与参考代码词汇和结构上相似度较低,通常无法避免语法和语义错误,也无法通过预定义的测试用例。进一步分析结果表明,在新数据集上,现有的代码生成方法尚难以从大规模的训练集中学习到代码生成规则。生成的代码大都拷贝自训练集中的频繁语句。本文尝试将训练集中频繁出现的语句组合成代码,使得代码生成方法的输出结果固定为这个频繁语句集。实验结果表明这种基于频繁语句集完全忽略软件需求描述的方法,竟然优于现有基于神经网络的代码生成方法。