论文阅读:Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning

论文题目与链接:

[2002.10198] Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning (arxiv.org)

论文简要脉络:

任务定义:

  • 代码摘要 (code summarization):给定代码片段,生成简要描述。
  • 代码检索(code retrieval):给定描述,检索相关的代码片段。

当前存在问题:

以上两个任务都是旨在建立自然语言描述和代码语言自建的关系,因此近期很多研究中会将上述任务进行联合以提升各自的性能。然而现有的融合工作通常单独训练或者串行两个任务,没有有效利用两个任务内在的联系,因而两个任务的性能很难得到均衡提升。

归结起来两个主要问题:

1. 代码检索和代码摘要模型性能难以得到平衡。

2. 模型融合过程过于复杂,难以训练收敛。

方案:

针对这两个任务,本文通过引入一个额外的代码生成任务提出一个端对端的方法融合方案。特别地,本文通过对偶学习(dual learning)显式挖掘了代码摘要和代码生成之间的概率关联关系,利用两个编码器进行 代码摘要 和 代码生成,通过多任务学习的架构训练代码检索模型。

效果:

在SQL 和Python的公开数据集上,代码检索性能超过了 SOTA 性能,在代码摘要任务上也获得了优异的 BLEU score 评分。

本文贡献:

  1. 提出一种简洁有效的端对端模型,通过引入代码生成任务辅助代码摘要和代码检索任务的融合。通过对偶学习和多任务学习挖掘任务之间的内在关联。
  2. 实验证明了本算法的有效性,代码检索性能超过了 SOTA 性能,在代码摘要任务上也获得了优异的 BLEU score 评分。
  3. 通过消融实验和案例分析 证明了引入代码生成和对偶学习可以在语音的层面更好地表示源代码和文本语言。

猜你喜欢

转载自blog.csdn.net/yangyehuisw/article/details/127445701