论文部分内容阅读
源代码摘要旨在生成自然语言文本,用于描述代码的语义。该任务目前已是软件工程领域不可或缺的部分。尽管现存的方法以能很好地完成此项任务,但是此类模型主要受限于数据充足的背景,而缺乏对于小样本数据和跨语言场景下的讨论。这些模型在实际应用中存在2个问题:(a)训练样本需求大。大多数主流方法中都采用编码器-解码器结构,而此种结构严重依赖于大规模数据训练。而且在现实世界中,获取大样本的优质标记数据集的成本是难以接受的。这些现象通常导致训练数据不足以生成优质的模型。(b)模型泛化能力弱。在某个数据分布上训练的模型只能在具有相同数据分的数据集上得到较好的结果,而在不同数据分布上会得到不尽人意的结果。例如,如果在Python数据集上训练并在Ruby数据集上测试,得到的模型性能会远弱于直接在Ruby数据集上的模型。在本文中,致力于讨论数据变化场景下,跨语言代码摘要任务的研究。
在大样本场景下,训练数据充足。模型能够在该数据集上训练并达到很好的性能,但是仍然面临问题(b)。为了解决该问题,提出一种多模态序列到序列模型(MM2Seq)。根据在大样本数据集Ruby-Full上的实验结果,MM2Seq在单语言任务中优于基线模型——在CIDER指标上有着优于最优基线模型65.36%的提升。而且,将MM2Seq作为基础模型,并利用微调(FT)和深度迁移强化学习(DTRL)作用于跨语言代码摘要任务。实验结果表面,在跨语言场景下,FT和DTRL优于基线模型和MM2Seq,但是差距不显著。
在小样本跨语言代码摘要任务中,问题(a)和(b)同时存在,上述迁移学习模型在此场景下是不可行的。因此,通过结合模型无关的元学习(MAML)和MM2Seq,1)构造一个元学习器用于学习隐藏在其他数据中的共享知识;2)通过若干梯度下降后,使元学习器适应未知目标数据集。此种方法本质是通过引入多种外部数据量,增加模型的泛化能力。相较于一些最新的方案,元学习模型在此场景下仍能生成更优质的注释。在小样本数据集Ruby-1%上,MAML相较于FT和DTRL在CIDER指标上有着37.46%和18.62%的提升。此外,实验结果的样例分析和人为检验也能体现元学习在此种场景下的优势。为了进一步支持我们的观点,还在不同训练集比例的Ruby-X%数据集上运行实验,并发现:在训练数据变化的过程中,MAML模型在性能上始终优于其他方案。
在大样本场景下,训练数据充足。模型能够在该数据集上训练并达到很好的性能,但是仍然面临问题(b)。为了解决该问题,提出一种多模态序列到序列模型(MM2Seq)。根据在大样本数据集Ruby-Full上的实验结果,MM2Seq在单语言任务中优于基线模型——在CIDER指标上有着优于最优基线模型65.36%的提升。而且,将MM2Seq作为基础模型,并利用微调(FT)和深度迁移强化学习(DTRL)作用于跨语言代码摘要任务。实验结果表面,在跨语言场景下,FT和DTRL优于基线模型和MM2Seq,但是差距不显著。
在小样本跨语言代码摘要任务中,问题(a)和(b)同时存在,上述迁移学习模型在此场景下是不可行的。因此,通过结合模型无关的元学习(MAML)和MM2Seq,1)构造一个元学习器用于学习隐藏在其他数据中的共享知识;2)通过若干梯度下降后,使元学习器适应未知目标数据集。此种方法本质是通过引入多种外部数据量,增加模型的泛化能力。相较于一些最新的方案,元学习模型在此场景下仍能生成更优质的注释。在小样本数据集Ruby-1%上,MAML相较于FT和DTRL在CIDER指标上有着37.46%和18.62%的提升。此外,实验结果的样例分析和人为检验也能体现元学习在此种场景下的优势。为了进一步支持我们的观点,还在不同训练集比例的Ruby-X%数据集上运行实验,并发现:在训练数据变化的过程中,MAML模型在性能上始终优于其他方案。