Skip to main content
QUICK REVIEW

[論文レビュー] Code Prediction by Feeding Trees to Transformers

Seohyun Kim, Jinman Zhao|arXiv (Cornell University)|Mar 30, 2020
Software Engineering Research参考文献 66被引用数 32
ひとこと要約

この論文は、AST構造を活用するTransformerモデルを用いた次のトークンのコード予測を強化し、SeqTrans、PathTrans、TravTrans、TravTrans+を導入して、Pythonコードデータセットに対する以前の手法より著しい精度向上を達成します。TravTransは最も強い結果を出し、py150で最大約58%の平均再現率(MRR)を達成し、以前の最先端を14–18ポイント上回ります。

ABSTRACT

We advance the state-of-the-art in the accuracy of code prediction (next token prediction) used in autocomplete systems. First, we report that using the recently proposed Transformer architecture even out-of-the-box outperforms previous neural and non-neural systems for code prediction. We then show that by making the Transformer architecture aware of the syntactic structure of code, we further increase the margin by which a Transformer-based system outperforms previous systems. With this, it outperforms the accuracy of an RNN-based system (similar to Hellendoorn et al. 2018) by 18.3%, the Deep3 system (Raychev et al 2016) by 14.1%, and an adaptation of Code2Seq (Alon et al., 2018) for code prediction by 14.4%. We present in the paper several ways of communicating the code structure to the Transformer, which is fundamentally built for processing sequence data. We provide a comprehensive experimental evaluation of our proposal, along with alternative design choices, on a standard Python dataset, as well as on a Facebook internal Python corpus. Our code and data preparation pipeline will be available in open source.

研究の動機と目的

  • IDEの自動補完のための次のトークンコード予測を動機づけ、改善する。
  • TransformerモデルにAST構造を組み込むことが予測精度に与える影響を評価する。
  • Transformerベースの木構造を意識したモデルを、従来の非TransformerおよびASTベースのアプローチと比較する。
  • 標準および社内のPythonデータセットで評価し、一般化を示す。

提案手法

  • 部分的なプログラムをトークンの系列として表現する(SeqTrans)またはASTベースの構造として表現する(PathTrans、TravTrans)をTransformerに入力する。
  • PathTransを導入:葉ノードから根までのルートパス表現を埋め込み、葉の埋め込みと組み合わせてTransformer入力にする。
  • TravTransを導入:ASTのDFS順序トークンをTransformerに供給して構造情報を取り入れる。
  • TravTrans+を導入:AttnTreeRelの木関係行列Rを用いた注意機構に、明示的な木の関係パスを追加する。
  • 強力なベースライン(SeqRNN、Deep3、Code2Seq)と比較する。対象はpy150およびFacebook内部のPythonデータセット。
  • 葉トークンの次のトークン予測に対して評価指標として平均再現率(MRR)を用いる。

実験結果

リサーチクエスチョン

  • RQ1Transformerは次のトークンのPythonコード予測においてRNNベースのモデルを上回るか?
  • RQ2AST構造を活用するTransformerモデルは、従来のASTベースのアプローチよりコード予測で優れているか?
  • RQ3SeqTrans、PathTrans、TravTrans、TravTrans+がデータセット全体でどの程度精度が異なるか?
  • RQ4木の関係強化(TravTrans+)はTravTransを超えて有益か?
  • RQ5予測時にTravTransが木構造へどのように注意を向けるかについて、顕著性マップがどんな洞察を提供するか?

主な発見

  • TravTransは全体的に最高の性能を達成し、py150で58.0%のMRR、従来手法よりも著しく高い精度。
  • SeqTrans(基準Transformer)はデータセットとタスクに応じて54.9–50.1%のMRRに達し、SeqRNN(36.6–23.8% MR R)を上回る。
  • PathTransおよびTravTransは非TransformerのASTベース(Deep3、Code2Seq)を上回り、py150でTravTransはDeep3とCode2Seqに対してMRRで14.1–14.4ポイントの増分を達成。
  • Facebook内部のPythonデータセットでは、Transformerベースのモデルがベースラインに対して同様の相対的利点を示す。
  • 顕著性分析は TravTrans が最も関連性の高い木領域に注意を向け、特にトークン予測時には親ノードに焦点を当てることを示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。