When applying the Transformer architecture to source code, designing a good self-attention mechanism is critical as it affects how node relationship is extracted from the Abstract Syntax Trees (ASTs) of the source code. We present Code Structure Aware Transformer (CSA-Trans), which uses Code Structure Embedder (CSE) to generate specific PE for each node in AST. CSE generates node Positional Encoding (PE) using disentangled attention. To further extend the self-attention capability, we adopt Stochastic Block Model (SBM) attention. Our evaluation shows that our PE captures the relationships between AST nodes better than other graph-related PE techniques. We also show through quantitative and qualitative analysis that SBM attention is able to generate more node specific attention coefficients. We demonstrate that CSA-Trans outperforms 14 baselines in code summarization tasks for both Python and Java, while being 41.92% faster and 25.31% memory efficient in Java dataset compared to AST-Trans and SG-Trans respectively.
트랜스포머 구조를 통해 코드 요약을 생성하기 위해서는 셀프 어텐션 기법을 잘 고안하는 것이 중요하다. 이는 셀프 어텐션이 코드의 구문 트리에서 각 노드 간의 관계가 어떻게 추출되는지 영향을 미치기 떄문이다. 본 연구에서는 코드 요약을 위한 새로운 그래프 트랜스포머 기법을 제안한다. 제안하는 모델은 우선 각 노드에 대한 특정한 위치 정보 임베딩을 생성하기 위해 코드 구조 임베더를 사용한다. 코드 구조 임베더는 분리된 어텐션 기법을 사용하여 각 노드의 위치 정보 임베딩을 생성합니다. 셀프 어텐션 기법의 능력을 확장시키기 위해, 본 연구는 확률론적 블록 어텐션 기법을 도입한다. 본 연구는 평가를 통해 제안된 위치 정보 임베딩이 다른 그래프에 적합한 위치 정보 임베딩보다 구문 트리에서의 노드 관계를 추론할 수 있음을 보인다. 또한 정량적, 정성적 평가를 통해 확률론적 블록 어텐션이 기존의 셀프 어텐션보다 구체적인 어텐션 계수를 생성한다는 것을 보인다. 마지막으로 제안된 모델은 비교군과 비교하여 속도와 메모리 사용 측면에서 더욱 효율적이지만서도, 14개의 비교군보다 더 높은 코드 요약 수행능력을 보임을 보인다.