【论文笔记】A Transformer-based Approach for Source Code Summarization

A Transformer-based Approach for Source Code Summarization

    • [1. Introduction](#1. Introduction)
    • [2. Approach](#2. Approach)

1. Introduction

生成描述程序功能的可读摘要称为源代码摘要。在此任务中,通过对代码标记之间的成对关系进行建模来捕获其远程依赖关系,对学习代码表示至关重要。为了学习摘要的代码表示,本方法探索了 Transformer 模型,该模型使用 self-attention 机制,并且已被证明可以有效捕获远程依赖关系。为了学习序列中标记的顺序并对标记之间的关系进行建模,Transformer 需要注入位置编码。在这项工作中,本方法表明,通过使用相对位置表示对源代码标记之间的成对关系进行建模,相较于使用绝对位置表示学习代码标记的序列信息会取得更显著的改进。

2. Approach

本方法提出在给定一段源代码的情况下使用 Transformer 生成自然语言摘要。代码和摘要都是由向量序列 x = (x1, ..., xn) 表示的标记序列,其中 xi ∈ Rdmodel 。在本节中,将简要描述 Transformer 架构以及如何在 Transformer 中对源代码标记的顺序或其成对关系进行建模。

2.1 Architecture

Transformer 由编码器和解码器的堆叠多头注意力和参数化线性变换层组成。在每一层,多头注意力采用 h 个注意力头并执行自注意力机制。

Self-Attention

在每个注意力头中,输入向量序列 x = (x1, . . . , xn) (其中 xi ∈ Rdmodel)被转换为输出向量序列,o = (o1, . . . , on) 其中 oi ∈ Rdk:

W Q , W K W^Q,W^K WQ,WK 在每一层的每一个头中都是唯一的参数。

Copy Attention

我们在 Transformer 中加入了复制机制,以允许从词汇表生成单词并从输入的源代码中进行复制。我们使用额外的注意力层来学习解码器堆栈顶部的副本分布。复制注意力使 Transformer 能够从源代码中复制罕见的标记(例如函数名称、变量名称),从而显着提高摘要性能。

2.2 Position Representations

现在,我们讨论如何学习源代码标记的顺序和建模它们的成对关系。

编码绝对位置

为了让 Transformer 利用源代码 token 的顺序信息,我们训练了一个嵌入矩阵 W P e W^{Pe} WPe ,它学习将 token 的绝对位置编码为 d m o d e l d_{model} dmodel 维度的向量。然而,我们表明,捕获代码标记的顺序对学习源代码表示没有帮助,并且会导致摘要性能较差。

编码成对关系

代码的语义表示不依赖于其标记的绝对位置。相反,它们的相互作用会影响源代码的含义。例如,表达式a+b和b+a的语义是相同的。

为了对输入元素之间的成对关系进行编码,将自注意力机制扩展如下。

将输入元素之间的edge表示为 a i j V , a i j K a_{ij}^V,a_{ij}^K aijV,aijK

考虑到计算量、内存消耗以及远距离的精确位置信息效用足等因素,此方法对最远的相对位置距离限制为 k k k。

Relative Position Representation 的目标是给出 a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 的计算方式。假设如果序列中两个元素的距离超过 k k k,则这两元素之间的位置信息就没有意义了。剪裁最大距离还使模型能够泛化训练期间看不到的序列长度,因此,考虑 2 k + 1 2k+1 2k+1 个唯一的edge标签。

在这种设定下, a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 应该只与相对位置有关,而与 x i , j , x i , j x_{i,j},x_{i,j} xi,j,xi,j 没有关系。作者直接将 a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 定义为可训练的向量,本质上是训练 w K = ( w − k K , . . . , w k K ) w^K=(w_{-k}^K,...,w_k^K) wK=(w−kK,...,wkK) 和 w V = ( w − k V , . . . , w k V ) w^V=(w_{-k}^V,...,w_k^V) wV=(w−kV,...,wkV), w i K , w i V ∈ R d a w_i^K,w_i^V∈\mathbb{R}^{d_a} wiK,wiV∈Rda。

本方法研究了忽略方向信息的相对位置表示的替代方案。换句话说,第j个标记是在第i个标记的左边还是右边的信息被忽略。

相关推荐
Theodore_10222 小时前
深度学习(3)神经网络
人工智能·深度学习·神经网络·算法·机器学习·计算机视觉
文火冰糖的硅基工坊2 小时前
[人工智能-大模型-70]:模型层技术 - 从数据中自动学习一个有用的数学函数的全过程,AI函数计算三大件:神经网络、损失函数、优化器
人工智能·深度学习·神经网络
张登杰踩11 小时前
工业产品表面缺陷检测方法综述:从传统视觉到深度学习
人工智能·深度学习
DKunYu12 小时前
2.1线性回归
pytorch·python·深度学习·1024程序员节
何如千泷13 小时前
【论文阅读】Qwen2.5-VL Technical Report
论文阅读·大模型·多模态·1024程序员节
大象耶14 小时前
计算机视觉六大前沿创新方向
论文阅读·人工智能·深度学习·计算机网络·机器学习
hour_go14 小时前
【知识图谱】图神经网络(GNN)核心概念详解:从消息传递到实战应用
笔记·深度学习·神经网络·1024程序员节
学术头条15 小时前
用视觉压缩文本!清华、智谱推出Glyph框架:通过视觉-文本压缩扩展上下文窗口
人工智能·深度学习·计算机视觉
B站_计算机毕业设计之家17 小时前
基于python人脸识别系统 人脸检测 实时检测 深度学习 Dlib库 ResNet深度卷积神经网络 pyqt设计 大数据(源码)✅
python·深度学习·目标检测·计算机视觉·信息可视化·人脸识别·1024程序员节
Theodore_102218 小时前
机器学习(9)正则化
人工智能·深度学习·机器学习·计算机视觉·线性回归·1024程序员节