[论文解读] Code Generation as a Dual Task of Code Summarization
本文提出一种双学习框架,联合训练代码摘要(CS)和代码生成(CG)模型,通过概率对偶性和注意力权重对称性来提升在 Java 和 Python 数据集上这两个任务的表现。
Code summarization (CS) and code generation (CG) are two crucial tasks in the field of automatic software development. Various neural network-based approaches are proposed to solve these two tasks separately. However, there exists a specific intuitive correlation between CS and CG, which have not been exploited in previous work. In this paper, we apply the relations between two tasks to improve the performance of both tasks. In other words, exploiting the duality between the two tasks, we propose a dual training framework to train the two tasks simultaneously. In this framework, we consider the dualities on probability and attention weights, and design corresponding regularization terms to constrain the duality. We evaluate our approach on two datasets collected from GitHub, and experimental results show that our dual framework can improve the performance of CS and CG tasks over baselines.
研究动机与目标
- 利用 CS 与 CG 之间固有的对偶性来同时改进两个任务。
- 开发一个联合训练框架,通过概率和基于注意力的约束耦合 CS 和 CG。
- 证明双训练在多个数据集上相对于现有的基线取得改进。
提出的方法
- 对 CS(从代码到注释)和 CG(从注释到代码)使用带注意力的编码器–解码器的 Seq2Seq。
- 引入基于概率对偶性的对偶损失项:基于 P(x|y) 与 P(y|x) 及其边际的 l_dual。
- 通过将每个令牌的注意力分布的 Jensen–Shannon 发散对齐 CS 和 CG 的注意力来强加注意力对偶约束。
- 应用联合优化,CS 和 CG 模型拥有独立参数但共享对偶约束,采用暖启动模型进行训练。
- 在 Java 和 Python 数据集上对 CS 使用 BLEU、METEOR、ROUGE-L,对 CG 使用 BLEU(并包含有效代码百分比)进行评估。
实验结果
研究问题
- RQ1利用 CS↔CG 对偶性的双训练框架是否能提升生成的注释和代码的质量?
- RQ2概率对偶性和基于注意力的约束是否有助于提升 CS 和 CG 的性能?
- RQ3与独立训练相比,联合训练如何影响代码有效性与注意力分布?
- RQ4在 Java 和 Python 数据集上,CS 和 CG 任务的经验提升如何?
主要发现
| 方法 | Java BLEU | Java METEOR | Java ROUGE-L | Python BLEU | Python METEOR | Python ROUGE-L |
|---|---|---|---|---|---|---|
| CODE-NN | 27.60 | 12.61 | 41.10 | 17.36 | 9.288 | 37.81 |
| DeepCom | 39.75 | 23.06 | 52.67 | 9.979 | 37.35 | |
| Tree2Seq | 37.88 | 22.55 | 51.50 | 8.957 | 35.64 | |
| RL+Hybrid2Seq | 38.22 | 22.75 | 51.91 | 9.752 | 39.34 | |
| API+CODE | 41.31 | 23.73 | 52.25 | 15.36 | 33.65 | |
| Basic Model | 41.01 | 23.26 | 51.64 | 20.47 | 38.77 | |
| Dual Model | 42.39 | 25.77 | 53.61 | 21.80 | 39.45 |
- Dual Model 在 CS 指标(BLEU、METEOR、ROUGE-L)上对 Java 和 Python 均持续超越所有基线。
- 对于 Java 和 Python 的 CS,Dual Model 在所比较的方法中获得最高的 BLEU、METEOR 和 ROUGE-L 分数。
- 对于 CG,Dual Model 提高了 BLEU 和有效代码的百分比(valid code percentage)相对于 Basic Model。
- 联合训练在 Java 和 Python 数据集上提高了有效代码的比例。
- 消融研究表明概率对偶性和注意力对偶性均有助于 CS 的提升,当单独使用或与概率对偶性一起使用时,注意力对偶性带来更大提升。
- 定性示例显示注意力分布更平滑,语义与人工撰写输出高度相似。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。