論文の概要、ライセンス

# (参考訳) コードの普遍表現 [全文訳有]

Universal Representation for Code ( http://arxiv.org/abs/2103.03116v1 )

ライセンス: CC BY 4.0
Linfeng Liu, Hoan Nguyen, George Karypis, Srinivasan Sengamedu(参考訳) ソースコードから学ぶには、通常大量のラベル付きデータが必要です。 ラベル付きデータの不足の可能性にもかかわらず、トレーニングされたモデルはタスク固有であり、異なるタスクへの転送性に欠ける。 本稿では,新しいグラフベースのコード表現の上に,コードの普遍表現を生成するための効果的な事前学習戦略を提案する。 特に、私たちのグラフベースの表現は、コード要素(例えば、制御フローとデータフロー)間の重要なセマンティクスをキャプチャします。 我々は、グラフニューラルネットワークの表現を事前学習し、普遍的なコード特性を抽出する。 事前トレーニングされたモデルは、様々な下流アプリケーションをサポートするための微調整を可能にする。 実世界の2つのデータセット - 30億のjavaメソッドと770万のpythonメソッドにまたがる。 可視化により、普遍的なコード表現における識別特性を明らかにする。 複数のベンチマークを比較することで,提案フレームワークがメソッド名予測とコードグラフリンク予測の最先端結果を実現することを示す。

Learning from source code usually requires a large amount of labeled data. Despite the possible scarcity of labeled data, the trained model is highly task-specific and lacks transferability to different tasks. In this work, we present effective pre-training strategies on top of a novel graph-based code representation, to produce universal representations for code. Specifically, our graph-based representation captures important semantics between code elements (e.g., control flow and data flow). We pre-train graph neural networks on the representation to extract universal code properties. The pre-trained model then enables the possibility of fine-tuning to support various downstream applications. We evaluate our model on two real-world datasets -- spanning over 30M Java methods and 770K Python methods. Through visualization, we reveal discriminative properties in our universal code representation. By comparing multiple benchmarks, we demonstrate that the proposed framework achieves state-of-the-art results on method name prediction and code graph link prediction.
公開日: Thu, 4 Mar 2021 15:39:25 GMT

※ 翻訳結果を表に示しています。PDFがオリジナルの論文です。翻訳結果のライセンスはCC BY-SA 4.0です。詳細はトップページをご参照ください。

翻訳結果

    Page: /      
英語(論文から抽出)日本語訳スコア
1 2 0 2 r a M 4 ] G L . 1 2 0 2 r a m 4 ] g l である。 0.78
s c [ 1 v 6 1 1 3 0 . s c [ 1 v 6 1 1 3 0 ] である。 0.80
3 0 1 2 : v i X r a 3 0 1 2 : v i X r a 0.85
Universal Representation for Code Linfeng Liu1(cid:63)((cid:66 )), Hoan Nguyen2, George Karypis2, and Srinivasan Sengamedu2 コードの普遍表現 Linfeng Liu1(cid:63)((cid:66 )), Hoan Nguyen2, George Karypis2, Srinivasan Sengamedu2 0.81
1 Tufts University, Medford MA 02155, USA 2 Amazon Web Services, Seattle WA 98109, USA {hoanamzn, gkarypis, sengamed}@amazon.com 1 Tufts University, Medford MA 02155, USA 2 Amazon Web Services, Seattle WA 98109, USA {hoanamzn, gkarypis, sengamed}@amazon.com 0.91
linfeng.liu@tufts.ed u linfeng.liu@tufts.ed u 0.59
Abstract. Learning from source code usually requires a large amount of labeled data. 抽象。 ソースコードから学ぶには、通常大量のラベル付きデータが必要です。 0.74
Despite the possible scarcity of labeled data, the trained model is highly task-specific and lacks transferability to different tasks. ラベル付きデータの不足の可能性にもかかわらず、トレーニングされたモデルはタスク固有であり、異なるタスクへの転送性に欠ける。 0.52
In this work, we present effective pre-training strategies on top of a novel graph-based code representation, to produce universal representations for code. 本稿では,新しいグラフベースのコード表現の上に,コードの普遍表現を生成するための効果的な事前学習戦略を提案する。 0.73
Specifically, our graph-based representation captures important semantics between code elements (e g , control flow and data flow). 特に、グラフベースの表現は、コード要素(コントロールフローやデータフローなど)間の重要なセマンティクスをキャプチャします。 0.71
We pre-train graph neural networks on the representation to extract universal code properties. 我々は、グラフニューラルネットワークの表現を事前学習し、普遍的なコード特性を抽出する。 0.61
The pre-trained model then enables the possibility of fine-tuning to support various downstream applications. 事前トレーニングされたモデルは、様々な下流アプリケーションをサポートするための微調整を可能にする。 0.47
We evaluate our model on two real-world datasets – spanning over 30M Java methods and 770K Python methods. 30M以上のJavaメソッドと770KのPythonメソッドにまたがる2つの実世界のデータセットでモデルを評価します。 0.61
Through visualization, we reveal discriminative properties in our universal code representation. 可視化により、普遍的なコード表現における識別特性を明らかにする。 0.58
By comparing multiple benchmarks, we demonstrate that the proposed framework achieves state-of-the-art results on method name prediction and code graph link prediction. 複数のベンチマークを比較することで,提案フレームワークがメソッド名予測とコードグラフリンク予測の最先端結果を実現することを示す。 0.74
Keywords: Code representation · Graph neural network · Pre-training. キーワード: コード表現 · グラフニューラルネットワーク · 事前トレーニング。 0.76
Introduction 1 Analysis of software using machine learning approaches has several important applications such as identifying code defects [1], improving code search [2], and improving developer productivity [3]. はじめに 1 機械学習アプローチを用いたソフトウェアの解析には、コード欠陥の特定 [1] 、コード検索の改善 [2] 、開発者の生産性の向上など、いくつかの重要な応用がある。 0.65
One common aspect of any coderelated application is that they learn code representations by following a twostep process. コード関連アプリケーションの共通点のひとつは、2ステップのプロセスに従ってコード表現を学ぶことだ。 0.72
The first step takes code snippets and produces a symbolic code representation using program analysis techniques. 最初のステップはコードスニペットを取り、プログラム分析技術を使って記号的なコード表現を生成する。 0.73
The second step uses the symbolic code representation to generate neural code representations using deep learning techniques. 2番目のステップでは、シンボルコード表現を使用して、ディープラーニング技術を使用してニューラルネットワーク表現を生成する。
訳抜け防止モード: 第2のステップは シンボリックコード表現を使い ディープラーニング技術を用いたニューラルコード表現を生成する。
0.70
Symbolic representations need to capture both syntactic and semantic structures in code. シンボリック表現は、構文構造と意味構造の両方をコードに取り込む必要がある。 0.62
Approaches to generating symbolic representations can be categorized as sequence-, tree-, and graph-based. 記号表現を生成するアプローチは、シーケンス、ツリー、グラフベースに分類される。 0.71
Sequence-based approaches represent code as a sequence of tokens and only capture the shallow and textual structures of the code [4]. シーケンスベースのアプローチは、コードをトークンのシーケンスとして表現し、コードの浅い構造とテキスト構造のみをキャプチャします [4]。 0.74
Tree-based approaches represent the code via abstract syntax (cid:63) To appear on PAKDD 2021. ツリーベースのアプローチは、pakdd 2021に現れる抽象構文(cid:63)を介してコードを表現する。 0.64
Work done while the author was an intern at AWS. 著者がAWSのインターンである間に行われた作業。 0.71
英語(論文から抽出)日本語訳スコア
2 L. Liu et al 2 L. Liu et al 0.92
Fig. 1. Model pipeline. フィギュア。 1. モデルパイプライン。 0.66
The σ0/σ1 graph is defined in Section 3, and the pre-training signals are defined in Section 4. σ0/σ1グラフはセクション3で定義され、前訓練信号はセクション4で定義されます。 0.71
trees (ASTs) [5] that highlight structural and content-related details in code. tree (ASTs) [5] コードの構造と内容に関する詳細を強調します。 0.84
However, some critical relations (e g , control flow and data flow), which often impact machine learning models’ success in abstracting code information, are not available in trees. しかし、コード情報を抽象化する機械学習モデルの成功に影響を及ぼすいくつかの重要な関係(制御フローやデータフローなど)は、木では利用できない。 0.83
Graph-based approaches augment ASTs with extra edges to partially represent the control flow and the data flow [1,4,6]. グラフベースのアプローチは、制御フローとデータフローを部分的に表現するために、余計なエッジを持つASTを強化する[1,4,6]。
訳抜け防止モード: グラフベースのアプローチは、余分なエッジでASTを増強する 制御フローとデータフローを部分的に表現します [1,4,6 ]
0.65
Depending on the type of symbolic representation used, the approaches for generating the neural code representations are either sequence-based [3,7] or graph-based [4,6] neural network models. 使用する記号表現の種類によっては、ニューラルネットワーク表現を生成するアプローチはシーケンスベース[3,7]またはグラフベース[4,6]ニューラルネットワークモデルである。 0.75
However, these works are generally task-specific, making it hard to transfer the learned representations to other tasks. しかし、これらの作業は一般にタスク固有であり、学習した表現を他のタスクに移すことは困難である。 0.58
In addition, the scarcity of labeled data may cause insufficient training in deep learning models. さらに、ラベル付きデータの不足により、ディープラーニングモデルのトレーニングが不十分になる可能性がある。 0.53
In this work, we touch upon all the three aspects of ML-based code analysis: symbolic code representation, task-independent neural code representation, and task-specific learning. 本研究では、MLベースのコード分析の3つの側面について触れる:記号的コード表現、タスク非依存のニューラルコード表現、タスク固有の学習。
訳抜け防止モード: 本研究では,MLの3つの側面 - ベースコード解析 : シンボリックコード表現, タスク - 独立したニューラルネットワーク表現、タスク - 特定の学習。
0.76
Fig 1 gives an overview of our approach. 図1は、私たちのアプローチの概要を示します。 0.67
For symbolic code representation, we explore two alternatives and show that symbolic code representation (called σ0/σ1 graph) which captures richer relations leads to better performance in downstream tasks. 記号的符号表現には2つの代替法を探索し、よりリッチな関係を捉えた記号的符号表現(σ0/σ1 graph)が下流タスクのパフォーマンス向上につながることを示す。 0.62
For neural code representation, we specialize a recently proposed universal representation for graphs, PanRep [8], to code graphs. ニューラルコード表現では、最近提案されたグラフの普遍表現であるPanRep[8]をコードグラフに特化する。 0.76
And, finally, we explore two tasks to demonstrate the effectiveness of the learned representations: method name prediction (for Python and Java) and link prediction (for Java). 最後に、学習した表現の有効性を示す2つのタスクを検討します。メソッド名予測(PythonとJava用)とリンク予測(Java用)です。 0.78
Our proposed method consistently improves the prediction accuracy across all experiments. 提案手法は全実験で一貫して予測精度を向上させる。 0.70
To summarize, the contributions of this work are as follows: – We introduce a fine-grained symbolic graph representation for source code, and adapt to 29M Java methods collected from GitHub. まとめると、この作業の貢献は以下のとおりである。 – ソースコードにきめ細かいシンボルグラフ表現を導入し、GitHubから収集された2900万のJavaメソッドに適応する。 0.75
– We present a pre-training framework that leverages the graph-based code representations to produce universal code representations, supporting various downstream tasks via fine-tuning. – グラフベースのコード表現を利用して普遍的なコード表現を生成し,様々な下流タスクを微調整でサポートする事前学習フレームワークを提案する。 0.66
– We combine the graph-based representation and the pre-training strategies to go beyond code pre-training with sequence- and tree-based representations. – グラフベースの表現とプリトレーニング戦略を組み合わせ、コードプリトレーニングとシーケンスとツリーベースの表現を越えます。 0.70
英語(論文から抽出)日本語訳スコア
Universal Representation for Code 3 コードの普遍表現 3 0.77
2 Preliminary Notation Let G = {V,E} denote a heterogeneous graph with |T | node types and |R| edge types. 2 予備記法 G = {V,E} を |T | ノード型と |R| エッジ型を持つ異種グラフとする。 0.85
V = {{V t}t∈T } represents the node set, and E = {{E r}r∈R} i ∈ V t is associated with a feature vector. V = {{V t}t∈T } はノード集合を表し、E = {{E r}r∈R} i ∈ V t は特徴ベクトルに関連付けられている。 0.93
represents the edge set. エッジセットを表す。 0.66
Each node vt Throughout the paper, we often use “representation” and “embedding” interchangeably unless there is any ambiguity. 各ノード vt 紙を通して、曖昧さがない限り、しばしば “representation” と “embedding” を使います。 0.70
2.1 Graph Neural Networks Graph neural networks (GNNs) learn representations of graphs [9]. 2.1 グラフニューラルネットワーク graph neural network (gnns) グラフの表現を学習する [9]。 0.90
A GNN typically consists of a sequence of L graph convolutional layers. GNNは通常、Lグラフの畳み込み層からなる。 0.57
Each layer updates nodes’ representation from their direct neighbors. 各レイヤは、隣人から直接ノードの表現を更新する。 0.66
By stacking multiple layers, each node receives messages from higher-order neighbors. 複数のレイヤを積み重ねることで、各ノードは上位の隣接ノードからメッセージを受信する。 0.64
In this work, we utilize the relational graph convolutional network (RGCN) [10] to model our (cid:88)  , heterogeneous code graphs. 本研究では、リレーショナルグラフ畳み込みネットワーク(RGCN) [10] を用いて、不均質なコードグラフである「(cid:88)」をモデル化する。 0.75
RGCN’s update rule is given by (cid:88) n∈N r r∈R i is the neighbor set of node i under edge type r, ci,r is a normalizer (we i | as suggested in [10]), h(l) is the hidden representation of node i i r are learnable parameters, and φ(·) is any nonlinear activation (the representation RGCN の更新規則は (cid:88) n∈N r r∈R i がエッジ型 r の下のノード i の隣接集合、 ci,r が正規化子 (we i | が [10] で示される)、h(l) がノード i i r の隠れた表現が学習可能なパラメータ、φ(...) が任意の非線形活性化(表現)によって与えられる。 0.85
where N r i use ci,r = |N r at layer l, W(l) function. ここで N r i は層 l, W(l) で ci,r = |N r を用いる。 0.83
Usually, h(0) i at the last layer) is used as the final representations. 通常、最後の層におけるh(0) i) は最終表現として使われる。 0.82
is initialized as node features, and h(L) i is initialized as node features, and h(L) i 0.85
h(l+1) i = φ h(l+1) i = φ 0.87
1 ci,r h(l) n W(l) r 1 ci,r h(l) n W(l) r 0.85
2.2 Pre-training for GNNs and for Source Code Recently, there is a rising interest in pre-training GNNs to model graph data [11,12]. 2.2 GNN とソースコードのための事前トレーニング 近年,グラフデータ [11,12] をモデル化する GNN の事前トレーニングへの関心が高まっている。 0.73
To pre-train GNNs, most works encourage GNNs to capture graph structure information (e g , graph motif) and graph node information (e g , node feature). GNNを事前に訓練するために、ほとんどの作業は、GNNがグラフ構造情報(例えば、グラフモチーフ)とグラフノード情報(例えば、ノード機能)をキャプチャすることを奨励します。 0.75
PanRep [8] further extends GNN pre-training to heterogeneous graphs. PanRep [8] はさらに GNN プリトレーニングを異種グラフに拡張する。 0.68
Pre-training on source code has been studied in [13,14,15]. ソースコードの事前トレーニングは[13,14,15]で研究されている。 0.63
However, these models build upon sequence-based code representations and fail to encode code’s structural information explicitly. しかし、これらのモデルはシーケンスベースのコード表現に基づいて構築され、コードの構造情報を明示的にエンコードできない。 0.61
We differ from these works, by pre-training on a novel graph-based code representation to capture code’s structural information. コードの構造情報をキャプチャするために、新しいグラフベースのコード表現を事前訓練することで、これらの作業と異なります。 0.65
3 Code Graph Previous Machine Learning (ML) models [4,6,16] are largely based on ASTs to reflect structural code information. 3 Code Graph Previous Machine Learning (ML)モデル [4,6,16] は、構造的なコード情報を反映するASTに基づいています。 0.74
Though ASTs are simple to create and use, they have tree-based structures and do not capture control flow and data flow relations. ASTの作成と使用は簡単だが、ツリーベースの構造を持ち、制御フローとデータフローの関係をキャプチャしない。 0.76
Here, the control flow represents the order of the execution and the data flow represents the flow of data along the computation. ここでは、制御フローは実行の順序を表し、データフローは計算に沿ったデータのフローを表す。 0.76
For example, to represent 例えば、表現するために 0.81
英語(論文から抽出)日本語訳スコア
4 L. Liu et al 4 L. Liu et al 0.92
a loop snippet, ASTs cannot naturally use an edge pointing from the end of the program statement to the beginning of the loop. ループスニペットでは、ASTは、プログラムステートメントの末尾からループの先頭までのエッジを自然に使用することはできません。 0.84
In addition, the relation between the definition and uses of a variable is not captured in ASTs. さらに、変数の定義と使用との関係はASTでは捉えられません。 0.70
In this work, we represent code as graphs to efficiently capture both control flow and data flow between program elements. 本研究では,プログラム要素間の制御フローとデータフローを効率的に捉えるためのグラフとしてコードを表現する。 0.71
We call our code graphs as σ0 graphs and σ1 graphs. コードグラフをσ0グラフとσ1グラフと呼びます。 0.82
The σ0 graphs are related to classical Program Dependence Graphs (PDGs) [17]. σ0グラフは古典的プログラム依存グラフ(PDG) [17] と関連している。 0.88
The σ1 graphs build upon the σ0 graphs and include additional syntactic and semantic information (detailed in section 3.2). σ1グラフはσ0グラフの上に構築され、追加構文および意味情報を含む(セクション3.2)。 0.78
Our experiments show that ML models using the σ1 graphs achieve better prediction accuracy than using the σ0 graphs. 実験の結果,σ1グラフを用いたMLモデルはσ0グラフよりも予測精度がよいことがわかった。 0.75
3.1 The σ0 Graph The σ0 graphs, which relate to PDGs, are used for tasks such as detection of security vulnerabilities and identification of concurrency issues. 3.1 σ0グラフPDGに関連するσ0グラフは、セキュリティ脆弱性の検出や並行性問題の識別などのタスクに使用されます。 0.82
In σ0 graphs, nodes represent different kinds of program elements including data and operations; edges represent different kinds of control flow and data flow between program elements. σ0グラフでは、ノードはデータや操作を含む異なる種類のプログラム要素を表し、エッジは異なる種類の制御フローとプログラム要素間のデータフローを表す。 0.83
We showcase a σ0 graph in Fig 2. 図2にσ0グラフを示します。 0.78
Both nodes and edges in the σ0 graph are typed. σ0グラフのノードとエッジの両方が型付けされる。 0.80
Specifically, we have five node types: entry, exit, data, action, and control nodes. 具体的には、エントリ、終了、データ、アクション、コントロールノードの5つのノードタイプがあります。 0.71
Entry and exit nodes indicate the control flow entering and exiting the graph. 入力ノードと終了ノードは、グラフの入力と終了の制御フローを示します。 0.68
Data nodes represent the data in programs such as variables, constants and literals. データノードは、変数、定数、リテラルといったプログラム内のデータを表す。 0.77
Action nodes represent the operations on the data such as method calls, constructor calls and arithmetic/logical operations, etc. アクションノードは、メソッド呼び出し、コンストラクタ呼び出し、算術/論理演算など、データ上の操作を表現する。 0.75
Control nodes represent control points in the program such as branching, looping, or some special code blocks such as catch clauses and finally blocks. 制御ノードは、分岐、ループ、あるいはキャッチ節や末尾ブロックなどの特別なコードブロックのようなプログラム内の制御ポイントを表す。 0.82
We have two edge types: control and data edges. コントロールとデータエッジの2つのエッジタイプがあります。 0.67
Control edges represent the orFig. コントロールエッジはorFigを表す。 0.75
2. An example of σ0 graph. 2. σ0グラフの例。 0.81
der of execution through the programs and data edges represent how data is created and used in the programs. プログラムとデータエッジによる実行は、プログラム内でデータがどのように作成され、使用されるかを表します。 0.69
Examples of edge types include parameter edges which indicate the data flow into operations and throw edges which represent the control flows when exceptions are thrown. エッジタイプの例としては、オペレーションへのデータフローを示すパラメータエッジや、例外がスローされた時の制御フローを表すエッジがある。 0.72
3.2 The σ1 Graph One limitation of σ0 graph is that the downstream modules perform additional analysis such as control dependence and aliasing is not reflected in the σ0 graph explicitly and requires machine learning models to infer it. 3.2 σ1グラフ σ0グラフの1つの制限は、下流モジュールが制御依存やエイリアスなどの追加解析をσ0グラフに明示的に反映せず、推論するために機械学習モデルを必要とすることである。 0.75
We propose σ1 graph as an augmentation of the σ0 graph, which is enhanced by additional information. 追加情報によって強化されたσ0グラフの増強としてσ1グラフを提案する。 0.77
英語(論文から抽出)日本語訳スコア
Universal Representation for Code 5 コードの普遍表現 5 0.77
Specifically, σ1 graph attaches AST node types to nodes in the graph. 具体的には、σ1グラフはASTノードタイプをグラフ内のノードにアタッチする。 0.63
AST node types capture syntactic information (e g , InfixOperator) provided by the parser. ASTノードタイプは、パーサが提供する構文情報(例えば、InfixOperator)をキャプチャする。 0.72
Higher-order semantic relations such as variable usage (e g , FirstUse/LastUse), node aliasing, and control dependence are also included as graph edges. 変数使用率(例えばFirstUse/LastUse)、ノードエイリアス、制御依存などの高次の意味関係もグラフエッジとして含められている。 0.80
3.3 The Heterogeneous Code Graph The proposed σ0 and σ1 graphs are heterogeneous graphs, i.e. 3.3 異種コードグラフ 提案されたσ0 および σ1 グラフは異種グラフである。 0.81
nodes and edges have types and features. ノードとエッジにはタイプと機能がある。 0.69
Nodes are categorized into five types: entry, exit, data, action, and control. ノードはエントリ、イグジット、データ、アクション、コントロールの5つのタイプに分類される。 0.68
Node features are attributed by their names. ノードの機能は、その名前による。 0.66
Edge types are the same as edge features, which are defined by their functionalities. エッジタイプは、その機能によって定義されるエッジ機能と同じです。 0.77
Below we first describe node features, followed by edge features. 以下にノードの機能、次にエッジ機能について説明する。 0.62
Entry nodes have feature ENTRY and exit nodes have feature EXIT. エントリノードは機能ENTRYを持ち、エグジットノードは機能EXITを持つ。 0.65
Features of control nodes are their corresponding keywords such as if, while, and finally. 制御ノードの機能は、if, while, finallyなどの対応するキーワードである。 0.75
Features of variables are types, and the variable names are ignored. 変数の特徴は型であり、変数名は無視される。 0.75
For example, int.x → int; String.fileName → String. 例えば、 int.x → int; String.fileName → String。 0.88
Method names contain the method class, method name, and parameter class. メソッド名にはメソッドクラス、メソッド名、パラメータクラスが含まれる。 0.76
For example, Request.setConnectio nKeepAlive#boolean#. 例えば、Request.setConnectio nKeepAlive#boolean#。 0.82
Here, Request is the method class, setConnectionKeepAli ve is the method name, and boolean is the parameter class. ここで、Requestはメソッドクラス、setConnectionKeepAli veはメソッド名、booleanはパラメータクラスである。 0.66
Features of control edges and data edges are defined separately. 制御エッジとデータエッジの特徴は別々に定義されます。 0.73
There are two kinds of control edges: normal control edges and exception control edges. コントロールエッジには、通常のコントロールエッジと例外コントロールエッジの2種類がある。 0.74
A normal control edge is a directed edge that connects two control or action nodes; defined as dep. 通常の制御エッジは、2つの制御ノードまたはアクションノードを接続する有向エッジである。 0.81
See Fig 2. fig 2 を参照。 0.76
An exception control edge connects an action node to a control node to handle an exception that could be thrown by the action; defined as throw. 例外制御エッジは、アクションノードと制御ノードを接続して、アクションによってスローされる可能性のある例外を処理する。 0.75
Data edges have five features: receiver, parameter, definition, condition, and qualifier. データエッジには、レシーバ、パラメータ、定義、条件、修飾子という5つの機能がある。 0.58
Examples include receiver.call() as a receiver edge; call(param) as a parameter edge, and foo=bar() as a definition edge. 例えば、receer.call()はレシーバエッジ、call(param)はパラメータエッジ、foo=bar()は定義エッジである。 0.74
3.4 Corpus-level Graphs In a typical ML application, the corpus consists of a collection of packages or repositories. 3.4 コーパスレベルのグラフ 一般的なMLアプリケーションでは、コーパスはパッケージやリポジトリのコレクションで構成される。 0.61
Repositories contain multiple files or classes. リポジトリには複数のファイルやクラスがある。 0.59
Classes contain methods. クラスはメソッドを含む。 0.71
The σ0 and σ1 graphs are at method-level. σ0 と σ1 のグラフはメソッドレベルである。 0.74
Corpus-level graphs are a collection of method-level σ0/σ1 graphs. コーパスレベルグラフはメソッドレベルσ0/σ1グラフの集合である。 0.60
Let σ refer to either σ0 or σ1 for notational ease. σ を σ0 または σ1 のどちらかに記す。 0.84
4 Method We propose a new model, Universal Code Representation via GNNs (UniCoRN), to produce universal code representations based on σ graphs. 4 方法 GNNs(UniCoRN)によるユニバーサルコード表現(Universal Code Representation)という新しいモデルを提案し,σグラフに基づくユニバーサルコード表現を生成する。 0.81
UniCoRN has two components. UniCoRNには2つのコンポーネントがある。 0.57
First, a GNN encoder that takes in σ graphs and generates node embeddings. まず、σグラフを取り込んでノード埋め込みを生成するGNNエンコーダ。 0.67
Second, pre-training signals that train the GNN encoder in an unsupervised manner. 第2に、GNNエンコーダを教師なしで訓練する事前訓練信号。 0.65
By sharing the same GNN encoder across all σ graphs, the learned embeddings reveal universal code properties. すべてのσグラフで同じGNNエンコーダを共有することで、学習された埋め込みは普遍的なコード特性を明らかにする。 0.62
Below, we show our design of pre-training signals to help UniCoRN efficiently distill universal code semantics. 以下に、UniCoRNがユニバーサルコードセマンティクスを効率的に蒸留するのに役立つ事前学習信号の設計を示す。 0.69
The instantiation of the GNN encoder is given in the experiment. この実験では、GNNエンコーダのインスタンス化を行う。 0.65
英語(論文から抽出)日本語訳スコア
6 L. Liu et al 6 L. Liu et al 0.92
(cid:88) v,v(cid:48)∈V (cid:88) v,v(cid:48)∈V 0.81
(cid:16) (cid:16)−y × ht vWt,t(cid:48) (cid:16) (cid:16)−y×htvwt,t(cid:48) 0.84
(cid:17)(cid:17) (cid:17)(cid:17) 0.75
, 4.1 Pre-training Signals Metapath Random Walk (MRW) signal. , 4.1 事前学習信号メタパスランダムウォーク(MRW)信号 0.81
A MRW is a random path that follows a sequence of edge types. MRWは、エッジ型のシーケンスに従うランダムパスである。 0.62
We assume node pairs in the same MRW are proximal to each other; accordingly, they should have similar embeddings. 同じMRWのノードペアは互いに近縁であると仮定し、それ故に同様の埋め込みを持つべきです。 0.69
For example, for a MRW with nodes [Collection.iterator( ), Iterator, Iterator.hasNext()] and edges [definition, receiver], nodes Iterator and Iterator.hasNext() are expected to have similar embeddings. 例えば、[Collection.iterator( ), Iterator, Iterator.hasNext()] と edges [definition, receiver] を持つMRWの場合、ノード Iterator と Iterator.hasNext() には、同様の埋め込みが期待されている。 0.92
Formally, the signal is defined as 正式には、信号は定義されている。 0.59
log 1 + exp ログ 1 + exp 0.78
ht(cid:48) v(cid:48) ht(cid:48) v(cid:48) 0.81
v and ht(cid:48) v と ht(cid:48) 0.90
LM RW = (1) v(cid:48) are embeddings for nodes v and v(cid:48) with node types t and t(cid:48). LM RW = (1) v(cid:48) は、ノード型 t と t(cid:48) を持つノード v と v(cid:48) の埋め込みである。 0.79
where ht Wt,t(cid:48) is a diagonal matrix weighing the similarity between different node types. ht Wt,t(cid:48) は異なるノードタイプ間の類似性を測る対角行列である。 0.82
y equals 1 as positive pairs if v and v(cid:48) are in the same MRW, otherwise y equals -1 as negative pairs. v と v(cid:48) が同じ MRW にある場合、y は正対 1 であり、そうでなければ y は負対 -1 と等しい。 0.74
During training, we sample 5 negative pairs per positive pair. トレーニング中、ポジティブペアあたり5つのネガティブペアをサンプリングします。 0.59
Heterogeneous Information Maximization (HIM) signal. Heterogeneous Information Maximization (HIM) 信号。 0.77
Nodes of the same type should reside in some shared embedding space, encoding their similarity. 同じタイプのノードは、その類似性をエンコードする共有埋め込みスペースに置かれるべきである。 0.70
On the other hand, nodes of different types, such as control nodes and data nodes, ought to have discriminative embedding space as they are semantically different. 一方、コントロールノードやデータノードなどの異なるタイプのノードは、意味的に異なるため、差別的な埋め込みスペースを持つ必要があります。 0.70
However, standard GNNs fail to do so with only local message propagation. しかし、標準のGNNは、ローカルメッセージの伝搬だけでは失敗します。 0.76
v Wst)(cid:1)(cid:17) (cid:88) (cid:88) v Wst)(cid:1) + log(cid:0)1 − φ(˜h(cid:62) log(cid:0)φ(h(cid:62) Following [8], we use a HIM signal to encode these properties: LHIM = (2) (cid:80) t∈T v∈V t v∈V t hv is a global summary of nodes typed t, φ(·) is a sigmoid Here, st = 1|V t| function, and φ(h(cid:62) v Wst) quantifies the closeness between a node embedding hv and a global summary st. v wst)(cid:17) (cid:88) (cid:88) (cid:88) v wst)(cid:1) + log(cid:0)1 − φ( sh(cid:62) log(cid:0) φ(h(cid:62) following [8], we use a him signal to encoding these properties: lhim = (2) (cid:80) tservlett v vسv t hv is a global summary of nodes typed t, φ(·) is a sigmoid, st = 1|v t| function, φ(h(cid:62) v wst) is the closeness between a node embedded hv to a global summary. 0.94
Negative samples ˜hv are obtained by first row-wise shuffling input node features then propagating through the GNN encoder [8]. 負のサンプルは、GNNエンコーダ[8]を介して伝搬する最初の行方向のシャッフル入力ノード機能によって得られる。 0.69
Motif (MT) signal. Motif (MT)信号。 0.75
Code graph has connectivity patterns. コードグラフにはコネクティビティパターンがある。 0.73
For example, node ENTRY has only one outgoing edge; node IfStatement has True and False branch. 例えば、 node ENTRY は1つのエッジしか持たない。 node IfStatement は True と False のブランチを持つ。 0.79
Such structural patterns can be captured in graph motifs, see Fig 3. このような構造パターンはグラフモチーフで捉えることができる。 0.65
With this observation, we pretrain GNNs with MT signal to generate structureFig. この観察により、MT信号でGNNを事前訓練し、StructureFigを生成する。 0.64
3. Motifs sized 3 and 4. aware node embeddings for code graphs. 3. モチーフサイズは3と4で、コードグラフ用のノード埋め込みを意識する。 0.73
Formally, we aim to recover the ground truth motif around each node, mv, from the node embedding hv using an approximator fM T (·) (we use a two-layer MLP), 形式的には、近似器 fM T (·) を用いてhv を埋め込んだノードから、各ノード mv の周りの基底的真理モチーフを復元することを目的としている(2層 MLP を用いる)。 0.71
(cid:16) . (cid:16) . 0.82
LM T = ||mv − fM T (hv)||2 2. LM T = ||mv − fM T (hv)||2。 0.87
(3) (cid:88) v∈V (3) (cid:88) v∈V 0.75
The ground truth mv is obtained using a fast motif extraction method [18]. 接地真理mvは高速モチーフ抽出法[18]を用いて得られる。 0.68
Node Tying (NT) signal. ノードタイリング(NT)信号。 0.78
The corpus-level graph (Cf. コーパスレベルグラフ(Cf)。 0.78
section 3.4) contains many duplicate nodes that have the same feature (e g , two ENTRY nodes will be セクション3.4) 同じ特徴を持つ重複ノード(例:2つのENTRYノード)が多数含まれている。 0.72
英語(論文から抽出)日本語訳スコア
Universal Representation for Code 7 コードの普遍表現 7 0.77
induced from two methods). 2つの方法から導かれる)。 0.59
These duplicate nodes serve as anchors to imply underlying relations among different graphs. これらの重複ノードは、異なるグラフ間の基礎的な関係を示すアンカーとして機能する。 0.52
We divide duplicate nodes into two categories: strict equality and weak equality. 重複ノードを厳密な平等と弱い平等の2つのカテゴリに分けます。 0.70
Strict equality refers to duplicate nodes whose semantic meaning should be invariant to their context, including keywords (if, while, do ...), operators (=, *, << ...), entry and exit nodes. Strict equalityは、キーワード(if, while, do ...)、演算子(=, *, << ...)、エントリと終了ノードを含む、意味的意味が文脈に不変であるべき重複ノードを指す。 0.74
Duplicate nodes of strict equality will have the same embedding in all σ graphs. 厳密な等式を持つ重複ノードは、すべてのσグラフに同じ埋め込みを持つ。 0.71
We keep a global embedding matrix to maintain their embeddings. 埋め込みを維持するために、グローバル組み込みマトリックスを保持します。 0.61
Weak equality refers to other duplicate nodes whose semantic meaning can be affected by their context. 弱い平等とは、意味的意味が文脈によって影響を受ける他の重複ノードを指す。 0.63
For example, two foo() nodes in two methods, or two tied nodes due to the simple qualified types of one or two nodes1. 例えば、2つのメソッドで2つのfoo()ノード、または1つまたは2つのノードの単純な修飾されたタイプによる2つの結合ノード1。 0.71
We use NT signal to encourage duplicate node of weak equality to have similar embeddings: 2}, v has feature k), NT信号を使用して、弱い等価性の重複ノードに類似の埋め込みを奨励する: 2}, v は特徴 k を持つ)。 0.76
(4) where K is the set of distinct node features (exclude strict equality nodes), ave(·) is an average function, and gk = ave({hv}, v has label k) is a global summary of nodes featured k. In (4), we first group nodes featured k, followed by computing the group centers gk, then minimize the distance between nodes to their group centers. gk = ave({hv}, v has label k) は k を特徴とするノードのグローバル要約である。(4) (4) では、最初のグループノードが k を特徴付け、次にグループセンター gk を演算し、次にノードとグループセンターの間の距離を最小化する。
訳抜け防止モード: (4 ) ここで K は異なるノード特徴の集合である(厳密な等式ノードを除く)。 ave ( · ) は平均関数であり、gk = ave({hv }) である。 v has label k ) is a global summary of node featured k. In ( 4 ) 最初のグループノードはkで、次にグループセンターgkで計算します。 ノードからグループセンターまでの距離を 最小にします
0.87
Pre-training objective. We combine the four pre-training signals to yield a final objective: 事前訓練目的。 4つの事前トレーニング信号を組み合わせて最終目標を作ります。 0.68
(cid:88) k∈K (cid:88) k∈K 0.65
LN T = ave({||hv − gk||2 LN T = ave({||hv − gk||2 0.77
(5) where ω1, . (5) ここで ω1, 。 0.77
. . , ω4 balance the importance of different signals. . . ω4は異なる信号の重要性のバランスをとる。 0.81
The objective resembles the objective in multi-task learning [19]. 目的はマルチタスク学習の目的に似ています [19]。 0.80
L = ω1LM RW + ω2LHIM + ω3LM T + ω4LN T , L = ω1LM RW + ω2LHIM + ω3LM T + ω4LN T , 0.75
4.2 Data Pre-processing and Fine-tuning Numeric node features. 4.2 データ前処理と微調整の数値ノード機能。 0.65
The initial node features are strings (Cf. 最初のノード機能は文字列(Cf)です。 0.75
section 3.3), which need to be cast into numeric forms before feeding into the GNN encoder. セクション 3.3) は、gnnエンコーダに入力する前に数値形式にキャストする必要がある。 0.75
To this end, we first split each node’s feature into subtokens based on the delimiter “.”. そのためには、まず各ノードの機能を区切り「.」に基づいてサブトークンに分割します。 0.76
Then, language models are used to get subtoken embeddings, in which we use FastText [20]. 次に、言語モデルを使用して、fasttext [20]を使用するサブトケン埋め込みを取得します。 0.71
Finally, we use average subtoken embeddings as the node’s numeric feature. 最後に、ノードの数値機能として平均サブトークン埋め込みを使用します。 0.73
Inverse edges. We enrich our σ graphs with inverse edges. 逆エッジ。 我々 は逆エッジで σ グラフを豊かにします。 0.63
Recent work has proven improved performance by adding inverse edges to ASTs [6]. 最近の研究はASTに逆エッジを追加することで性能を向上した[6]。 0.72
Fine-tuning. After pre-training, we can fine-tune on downstream tasks. 微調整。 事前トレーニング後、下流のタスクを微調整できる。 0.51
Finetuning involves adding downstream classifiers on top of the pre-trained node embeddings, and predicting downstream labels. Finetuningは、事前に訓練されたノード埋め込みの上に下流の分類器を追加し、下流のラベルを予測する。 0.54
A graph pooling layer [9] might be needed if the downstream tasks are defined on the graph/method level. グラフ/メソッドレベルで下流タスクが定義された場合、グラフプーリング層 [9] が必要になるかもしれません。
訳抜け防止モード: グラフプーリング層[9]が必要な場合 ダウンストリームタスクは、グラフ/メソッドレベルで定義されます。
0.82
1 We use simple types instead of fully qualified types since we create graphs from source files and not builds. 1 ソースファイルからグラフを作成し、ビルドしないため、完全に資格のある型の代わりに単純な型を使用します。
訳抜け防止モード: 1 完全修飾型の代わりに単純な型を使用する。 ビルドではなく ソースファイルからグラフを作成します
0.73
In this case, types are not fully resolvable. この場合、型は完全には解決できない。 0.72
英語(論文から抽出)日本語訳スコア
L. Liu et al L. Liu et al 0.98
8 Table 1. Dataset statistics. 8表1。 データセット統計。 0.78
The σ1 graph doubled the number of edges as the σ0 graph, providing extra information for code graphs. σ1 グラフは σ0 グラフとして辺の数を倍にし、コードグラフに余分な情報を提供する。 0.73
Dataset Repository Method Node Edge Java (σ0) 29M 621M 1,887M Java (σ1) 29M 529M 3,782M 450K 57M 156M Python Dataset Repository Method Node Edge Java (σ0) 29M 621M 1,887M Java (σ1) 29M 529M 3,782M 450K 57M 156M Python 0.72
28K 28K 14K 28K 28K 14K 0.67
Table 2. Result for method name prediction on Java dataset. 表2。 Javaデータセット上のメソッド名予測の結果。 0.77
Higher value indicates better performance. 高い値はより良いパフォーマンスを示す。 0.69
F1 Precision Recall 19.9 22.0 F1 精密リコール 19.9 22.0 0.59
26.1 27.5 σ0 21.7 σ1 23.6 26.1 27.5 σ0 21.7 σ1 23.6 0.52
5 Experiment 5.1 Dataset We tested on two real-world datasets, spanning over two programming languages Java and Python. 5 Experiment 5.1 Dataset JavaとPythonの2つのプログラミング言語にまたがる2つの実世界のデータセットでテストしました。 0.67
Summary of the datasets is listed in Table 1. データセットの概要を表1に示します。 0.68
Java The Java dataset is extracted from 27,581 GitHub packages. Java Javaデータセットは27,581のGitHubパッケージから抽出される。 0.73
In total, these packages contain 29,024,142 Java methods. これらのパッケージは合計で29,024,142のJavaメソッドを含んでいる。 0.54
We convert each Java method into a σ0 graph and a σ1 graph. それぞれのJavaメソッドをσ0グラフとσ1グラフに変換する。 0.75
The data split is on package-level, with training (80%), validation (10%), and testing (10%). データ分割はパッケージレベルで行われ、トレーニング(80%)、検証(10%)、テスト(10%)が行われる。 0.73
Python The Python dataset is collected from Stanford Open Graph Benchmark (ogbg-code) [6]. Python PythonデータセットはStanford Open Graph Benchmark (ogbg-code) [6]から収集される。 0.87
The total number of Python methods is 452,741, with each method is represented as an AST. Pythonメソッドの総数は452,741で、各メソッドはASTとして表現される。 0.86
These ASTs are further augmented with next-token edges and inverse edges. これらのastは次のエッジと逆エッジでさらに拡張される。 0.63
The data split keeps in line with ogbg-code. データ分割は ogbg-code と一致します。 0.77
5.2 Experimental Setup We tune hyperparameters on all models based on their validation performances. 5.2 実験的セットアップ 検証性能に基づいて、すべてのモデルでハイパーパラメータを調整します。 0.68
For Java dataset, we consider a two-layer RGCN with 300 hidden units. Javaデータセットでは、300の隠れたユニットを持つ2層RGCNを検討する。 0.71
For Python dataset, we follow ogbg-code and use a five-layer RGCN with 300 hidden units. pythonデータセットでは、ogbgコードに従い、300の隠れユニットを持つ5層rscnを使用します。 0.60
We use Adam [21] as optimizer, with learning rate ranges from 0.01 to 0.0001. 私たちはAdam [21]をオプティマイザとして使用し、学習率は0.01から0.0001の範囲です。 0.51
Mini-batch training is adopted to enable training on very large graphs2. 非常に大きなグラフ2のトレーニングを可能にするために、ミニバッチトレーニングが採用されている。 0.44
We apply dropout at rate 0.2, L2 regularization with parameter 0.0001. パラメータ 0.0001 で 0.2, L2 の正則化を行う。 0.67
The model is first pre-trained on a maximum of 10 epochs, then fine-tuned up to 100 epochs on downstream tasks until convergence. モデルはまず最大10エポックで事前訓練され、収束するまで下流のタスクで最大100エポックまで微調整される。 0.70
The model is implemented using Deep Graph Library (DGL) [22]. モデルはDeep Graph Library (DGL) [22]を使って実装されている。 0.78
Models have access to 4 Tesla V100 GPUs, 32 CPUs, and 244GB memory. モデルは4つのTesla V100 GPU、32CPU、244GBメモリにアクセスできる。 0.80
5.3 Analysis of Embeddings We begin by analyzing code embeddings via t-SNE [23] visualization. 5.3 埋め込みの分析 t-SNE [23] 視覚化によるコード埋め込みの分析から始める。 0.77
We study two levels of embeddings: node-level embeddings and method-level embeddings. ノードレベルの埋め込みとメソッドレベルの埋め込みの2つのレベルについて検討する。 0.53
Here, a method-level embedding summarizes a method, computed by averaging node embeddings in its σ graph. ここで、メソッドレベルの埋め込みは、σグラフにノード埋め込みを平均化することで計算されるメソッドを要約する。 0.59
For better visualization, we show results on 10 random Java packages (involving 4,107 Java methods) using σ1 graphs. より良い視覚化のために、σ1グラフを使用した10のランダムJavaパッケージ(4,107のJavaメソッドを含む)の結果を示します。 0.64
2 https://github.com/d mlc/dgl/tree/master/ examples/pytorch/rgc n-hetero 2 https://github.com/d mlc/dgl/tree/master/ examples/pytorch/rgc n-hetero 0.24
英語(論文から抽出)日本語訳スコア
Universal Representation for Code 9 コードの普遍表現 9 0.77
Fig. 4. Visualization of node-level embeddings with t-SNE. フィギュア。 4. t-SNEによるノードレベルの埋め込みの可視化 0.63
Fig. 5. Visualization of method-level embeddings with t-SNE. フィギュア。 5. t-SNEによるメソッドレベルの埋め込みの可視化 0.62
Colored with K-means. In Fig 4, we see that data nodes and action nodes are forming separate clusters, indicating our code embeddings preserve important node type information. K平均で着色。 図4では、データノードとアクションノードが別々のクラスタを形成しており、コード埋め込みが重要なノードタイプ情報を保存することを示す。 0.75
Fig 5 suggests method embeddings are forming discriminative clusters. fig 5は、埋め込みメソッドが差別クラスタを形成することを示唆している。 0.51
By manually annotating each cluster, we discovered that cluster 4 contains 91% (out of all) set functions, cluster 3 contains 78% find functions, and cluster 1 contains 69% functions which end with Exception. 各クラスタを手動でアノテートすることで、クラスタ4は91%(すべて)のセット関数を含み、クラスタ3は78%の検索関数を持ち、クラスタ1はExceptionで終わる69%の関数を含むことがわかった。 0.79
This result suggests that our model has the potential to distinguish methods in terms of method functionalities. この結果は,本モデルがメソッド機能の観点からメソッドを識別する可能性を示唆する。 0.79
5.4 Method Name Prediction We use pre-trained UniCoRN model to initialize code embeddings. 5.4 メソッド名予測 プリトレーニングされたUniCoRNモデルを使用してコード埋め込みを初期化します。 0.57
Then following [6,16], we predict method names as downstream tasks. 次に,[6,16]に従って,メソッド名を下流タスクとして予測する。 0.65
The method name is treated as a sequence of subtokens (e g getItemId → [get, item, id]). メソッド名は、サブトークンのシーケンスとして扱われます(例: getItemId → [get, item, id])。 0.74
As in [6], we use independent linear classifiers to predict each subtoken. 6]と同様、独立線形分類器を用いて各サブトークンを予測する。 0.75
The task is defined on the method-level: predict one name for one method (code graph). タスクはメソッドレベルで定義されます:1つのメソッド(コードグラフ)の名前を1つ予測します。 0.69
We use attention pooling [24] to generate a single embedding per method. 注意プール[24]を使用して、メソッドごとに単一の埋め込みを生成します。 0.56
We follow [6,16] to report F1, precision, recall for evaluation. F1、精度、評価のためのリコールを報告するために[6,16]に従う。 0.54
Below we show results on Java and Python separately, as they are used for different testing purposes. 以下は、異なるテスト目的で使用されるため、JavaとPythonで個別に結果を示す。 0.78
Java. We evaluate the performance gain achieved by switching from the σ0 graph to the σ1 graph. Java。 σ0グラフからσ1グラフに切り替えることで得られた性能向上を評価する。 0.81
We truncate subtoken sequences to a maximal length of 5 to cover 95% of the method names. メソッド名の95%をカバーするために、サブトケン配列を最大長さ5に切り詰める。 0.77
Vocabulary size is set to 1,000, covering 95% of tokens. 語彙のサイズは1000に設定され、トークンの95%をカバーする。 0.67
Tokens not in the vocabulary are replaced by a special unknown token. 語彙にないトークンは、特別な未知のトークンに置き換えられる。 0.68
Similar techniques have been adopted in [6]. 同様の技法が[6]で採用されている. 0.75
We experiment on approximately 774,000 methods from randomly selected 1,000 packages. ランダムに選択された1,000パッケージから約774,000メソッドを実験する。 0.58
The result is summarized in Table 2. 結果は表2にまとめられている。 0.84
We see that the σ1 graph outperforms the σ0 graph, indicating that the extra information provided by the σ1 graph is beneficial for abstracting code snippets. σ1グラフはσ0グラフよりも優れており、σ1グラフが提供する余分な情報がコードスニペットを抽象化するのに有用であることを示す。 0.76
Fig 6 further Fig. 6. 図6さらに図6。 6. 0.81
F1 at name length. supports this observation. 名前の長さでF1。 この観察を支持する。 0.67
The σ1 graph consistently outperforms the σ0 graph w.r.t. σ1 グラフは σ0 グラフ w.r.t を一貫して上回る。 0.59
the F1 score for different method name lengths. メソッド名の長さの異なるF1スコア。 0.80
$:-9403039412094/3,20   01 $:-9403039412094/3,20   01 0.36
英語(論文から抽出)日本語訳スコア
L. Liu et al L. Liu et al 0.98
10 Table 3. Method name prediction for Python. 10表3。 Pythonのメソッド名予測。 0.72
Pooling: average†, virtual node§, and attention‡. プール:平均、仮想ノード、および注意。 0.64
GCN†,§ and GIN†,§: Reported in [6]. gcn と gin は [6] で報告されている。 0.37
F1 Precision Recall GCN-NextTokenOnly† 29.77 29.18 GIN-NextTokenOnly† 29.00 28.1331.63 31.63UniCoRN w/o pretrain† 32.81 31.71 33.28 32.36 32.6332.0432.89 33.80 32.80 31.88 31.77 32.60 33.94 32.99 F1 精密リコール GCN-NextTokenOnly 29.77 29.18 GIN-NextTokenOnly 29.00 28.1331.63 31.63UniCoRN w/o pretrain 32.81 31.71 33.32 32.32 32.6332.0432.89 33.80 32.80 31.88 31.88 32.77 32.60 33.94 32.99 32.99 0.36
GCN† GIN† UniCoRN† GCN§ GIN§ UniCoRN§ GCN‡ GIN‡ UniCoRN‡ GCN, GIN, UniCoRN, GCN, UniCoRN, GCN, UniCoRN 0.68
31.09 30.9835.25 35.2835.81 34.72 34.42 36.02 31.09 30.9835.25 35.2835.81 34.72 34.42 36.02 0.36
Table 4. MRR and Hit@K(%) results for link prediction. 表4。 リンク予測のためのMRRとHit@K(%)の結果。 0.79
Higher values are better. Superscripts D and M denote DistMult and MLP link predictors. 高い値の方がよい。 D と M は DistMult と MLP リンク予測器を表す。 0.71
Hit@K for random is computed as K/(1 + 200), where 200 is the number of negative edges per testing edge. Hit@K for randomはK/(1 + 200)として計算され、200はテストエッジあたりのネガティブエッジの数である。 0.82
MRR Hit@1 Hit@3 Hit@10 5.0 RandomFastTextD 0.01 2.3 σD 0.26 41.3 0 σD 61.4 0.32 1 FastTextM 0.05 8.0 σM 58.4 0.51 0 σM 0.53 65.2 1 MRR Hit@1 Hit@10 Hit@0 RandomFastTextD 0.01 2.3 σD 0.26 41.3 0 σD 61.4 0.32 1 FastTextM 0.05 8.0 σM 58.4 0.51 0 σM 0.53 65.2 1 0.63
0.5 0.4 15.4 18.1 1.9 46.1 46.2 0.5 0.4 15.4 18.1 1.9 46.1 46.2 0.43
1.5 1.0 28.5 38.4 4.0 49.8 55.0 1.5 1.0 28.5 38.4 4.0 49.8 55.0 0.43
Ground truth get_config create_collection create_collection get_aws_credentials wait_for_task_ended ground truth get_config create_collection create_collection get_aws_credentials wait_for_task_ended 0.38
Prediction get_config get_ec2 wait_job upload_file 予測 get_config get_ec2 wait_job upload_file 0.45
add_role load_bytes add_role load_bytes 0.50
create_permission create_permission 0.59
Fig. 7. Examples of method name prediction on Python in different degree of consensus. フィギュア。 7. コンセンサスの程度が異なるPythonにおけるメソッド名予測の例。 0.68
Each pair of results is demonstrated as ground truth name and predicted name. それぞれの結果は、接地真理名と予測名として示される。 0.75
try: def wait_for_task_ended( self): waiter = self.client.\ get_waiter('job_execution_comple te') # timeout is managed by airflow waiter.config.max_at tempts = sys.maxsize waiter.wait(jobs=[self.jobId]) # If waiter not available use expo retry ... 試してみろ def wait_for_task_ended( self): waiter = self.client.\ get_waiter('job_execution_comple te') # timeout は airflow waiter.config.max_at tempts = sys.maxsize waiter.waiter(jobs=[self.jobId]) # waiter not use expo retry... 0.63
except ValueError: ValueError を除く。 0.83
Prediction: wait_job. 予測: wait_job。 0.76
Fig. 8. Reasonable prediction based on the code context is observed, though it is inexact match. フィギュア。 8. コードコンテキストに基づく妥当な予測が観察されるが、一致していない。 0.67
Note that the F1 score at method names of length 1 is low. 長さ1のメソッド名のF1スコアが低いことに注意。 0.76
We suspect that some names at this length are not semantically meaningful, such as a or xyz. この長さのいくつかの名前は、a や xyz のような意味論的意味を持たないと仮定する。 0.63
Thus, these method names are hard to predict correctly. したがって、これらのメソッド名は正確に予測するのは難しい。 0.60
Python. We compare the performances of UniCoRN with various baselines on Python. Python。 UniCoRNのパフォーマンスとPythonのさまざまなベースラインを比較します。 0.81
Our experiment setup closely follows ogbg-code [6]. 我々の実験は ogbg-code [6] に密接に従っている。 0.59
For the baseline, ogbg-code considers GCN and GIN. ベースラインでは、ogbg-codeはGCNとGINを考慮します。 0.53
Additionally, we introduce two baselines that run GCN and GIN with next-token edges only. さらに,GCNとGINを次点エッジのみで動作させる2つのベースラインも導入する。 0.70
We expect these two new baselines to mimic the performance of sequence-based models. これら2つの新しいベースラインは、シーケンスベースモデルのパフォーマンスを模倣することを期待している。 0.53
In this task, we test three pooling methods: average, virtual node [6], and attention [24]. このタスクでは,平均,仮想ノード [6],注意[24]の3つのプーリング手法をテストする。 0.76
Results are given in Table 3. 結果は表3で示される。 0.80
We list three observations. 3つの観察点を列挙する。 0.49
First, UniCoRN with attention pooling (UniCoRN‡) performs the best, endorsing UniCoRN’s superior modeling capacity. 第一に、注意プーリング(UniCoRN)を備えたUniCoRNは、UniCoRNの優れたモデリング能力を支持している。 0.62
Second, UniCoRN with pre-training shows performance gain over UniCoRN without pre-training, verifying the usefulness of our pre-training strategies. 第2に、事前トレーニングを伴うUniCoRNは、事前トレーニングなしでUniCoRNよりもパフォーマンスが向上し、事前トレーニング戦略の有用性を検証する。 0.52
Third, GCN(GIN) improves GCN(GIN)-NextTokenOn ly, confirming the importance of using structural information. 第3に、GCN(GIN)はGCN(GIN)-NextTokenOn lyを改善し、構造情報の使用の重要性を確認する。 0.66
Example pairs of ground truth and prediction are shown in Fig 7. 基底真理と予測の例ペアを図7に示す。 0.68
The examples of prediction encompass exact matches, such as get_config pair, 予測の例は、get_config ペアなど、正確な一致を包含します。 0.67
英語(論文から抽出)日本語訳スコア
Universal Representation for Code 11 コードの普遍表現 11 0.77
context matches, such as get_aws_credentials pair, and mismatches, such as load_bytes pair. get_aws_credentials pairのようなコンテキストマッチとload_bytes pairのようなミスマッチ。 0.71
We showcase a prediction example in Fig 8. 予測の例を図8に示します。 0.80
5.5 Link Prediction In this task, we examine how UniCoRN recovers links in code graphs. 5.5 Link Prediction このタスクでは、UniCoRNがコードグラフでリンクを回復する方法を検討します。 0.65
We follow the same experimental setup as in [8]. 私たちは[8]と同じ実験的な設定に従っています。 0.68
We feed two node embeddings of a link to a predictor, a DistMult [25] or a two-layer MLP, to predict the existence of the link. 予測器へのリンクの2つのノード埋め込み(DistMult [25]または2層のMLP)を与え、リンクの存在を予測する。 0.72
Here, node embeddings are obtained by applying UniCoRN to σ0/σ1 graphs, or simply obtained from FastText embeddings. ここで、ユニコーンを σ0/σ1 グラフに適用するか、単にfasttext 埋め込みから得られる。 0.68
Note that the FastText is the initial embedding of UniCoRN. FastText は UniCoRN の初期埋め込みであることに注意してください。 0.74
We freeze UniCoRN after pre-training. プレトレーニング後にUniCoRNを凍結します。 0.58
When fine-tuning link predictors, we ensure σ0 and σ1 have the same set of training edges. 微調整リンク予測器の場合、σ0 と σ1 は同じ訓練辺を持つ。 0.68
During inference, we sample 200 negative edges per testing edge (positive) and evaluate the rank of the testing edge. 推論では,テストエッジあたり200の負のエッジ(正)をサンプリングし,テストエッジのランクを評価する。 0.76
Evaluations are based on Mean Reciprocal Rank (MRR) and Hit@K (K=1, 3, 10). 評価はMean Reciprocal Rank (MRR) と Hit@K (K=1, 3, 10) に基づいている。 0.79
Table 4 shows the results. 表4は結果を示しています。 0.64
UniCoRN outperforms FastText. UniCoRNはFastTextより優れている。 0.56
The results suggest that node embeddings from UniCoRN capture neighborhood correlations. 結果は,UniCoRNのノード埋め込みが近傍相関を捉えることを示唆している。 0.59
We see σ1 graph again improves σ0 graph. σ1グラフは再びσ0グラフを改善する。 0.79
Fig 9 demonstrates the histogram of scores for 1,000 positive and 1,000 negative edges. fig 9は1000の正と1000の負の辺のスコアのヒストグラムを示している。 0.68
The score, which ranges from 0 to 1, indicates the plausibility of the link existence. 0から1までの範囲のスコアは、リンクの存在の可能性を示しています。 0.74
Positive edges (0.58±0.33) score higher than negative edges (0.13±0.15), with p-value less than 0.00001 using t-test, suggesting that UniCoRN is capable to distinguish positive and negative links in code graphs. 正のエッジ (0.58±0.33) は負のエッジ (0.13±0.15) よりも高く、p-値が0.00001未満でt-test を使用しており、UniCoRN は符号グラフの正と負のリンクを区別できることを示している。
訳抜け防止モード: 正縁(0.58±0.33 )は負縁(0.13±0.15 )よりも高い。 p - t - test を用いて 0.00001 未満の値を持つ。 UniCoRNはコードグラフの正と負のリンクを区別できる。
0.66
6 Conclusion This paper presents a new model, UniCoRN, to provide a universal representation for code. 6 結論 本論文では,コードの普遍表現を提供するための新しいモデル unicorn を提案する。 0.70
Building blocks of UniCoRN include a novel σ graph to represent code as graphs, and four effective signals to pre-train GNNs. UniCoRNのビルディングブロックには、コードをグラフとして表現する新しいσグラフと、GNNを事前トレーニングするための4つの有効な信号が含まれる。
訳抜け防止モード: UniCoRN のブロックには、グラフとしてコードを表す新しい σ グラフが含まれます。 そしてGNNsを訓練する4つの有効な信号。
0.71
Our pre-training framework enables fine-tuning on various downstream tasks. 事前トレーニングフレームワークにより、さまざまな下流タスクを微調整できます。 0.48
Empirically, we show UniCoRN’s superior ability to offer high-quality code representations. 実証的には、UniCoRNが高品質なコード表現を提供する優れた能力を示している。 0.60
There are several possibilities for future works. 将来の作品にはいくつかの可能性がある。 0.53
First, we are looking to enhance UniCoRN with additional code-specific signals. まず、UniCoRNを追加のコード固有の信号で強化することを目指しています。 0.56
Second, the explainability of the learned code representation deserves further study. 第二に、学習コード表現の説明可能性はさらに研究すべきである。 0.61
The explainability can in turn motivate additional signals to embed desired code properties. 説明可能性は、望ましいコードプロパティを埋め込むために追加のシグナルを動機付けることができる。 0.56
Third, more downstream applications are left to be explored, such as bug detection and duplicate code detection upon the availability of labeled data. 第三に、ラベル付きデータの可用性に関するバグ検出や重複コード検出など、より多くのダウンストリームアプリケーションが探索される。 0.78
References 1. E. Dinella, H. Dai, Z. Li, M. Naik, L. Song, and K. Wang, “Hoppity: Learning graph transformations to detect and fix bugs in programs,” in ICLR, 2019. 参照1。 E. Dinella, H. Dai, Z. Li, M. Naik, L. Song, K. Wang 氏は ICLR, 2019 で "Hoppity: Learning graph transformations to detect and fix bugs in program" を発表した。 0.77
Fig. 9. Scores for positive and negative edges. フィギュア。 9. 正および負の端のためのスコア。 0.64
    $.470       4:39!489;00,9;0     $.470       4:39!489;00,9;0 0.77
英語(論文から抽出)日本語訳スコア
12 L. Liu et al 12 L. Liu et al 0.92
2. J. Cambronero, H. Li, S. Kim, K. Sen, and S. Chandra, “When deep learning met code search,” in ESEC/FSE, pp. 2. J. Cambronero, H. Li, S. Kim, K. Sen, S. Chandra, “When Deep Learning met code search” in ESEC/FSE, pp。 0.90
964–974, 2019. 964–974, 2019. 0.84
3. V. Raychev, M. Vechev, and E. Yahav, “Code completion with statistical language models,” in PLDI, pp. 3. V. Raychev, M. Vechev, E. Yahav, “Code completion with statistics language model” in PLDI, pp。 0.84
419–428, 2014. 419–428, 2014. 0.84
4. M. Allamanis, M. Brockschmidt, and M. Khademi, “Learning to represent programs with graphs,” in ICLR, 2018. 4. M. Allamanis, M. Brockschmidt, M. Khademi, “Learning to representative programs with graphs” in ICLR, 2018. 0.85
5. L. Mou, G. Li, L. Zhang, T. Wang, and Z. Jin, “Convolutional neural networks over tree structures for programming language processing,” in AAAI, 2016. 5. L. Mou, G. Li, L. Zhang, T. Wang, Z. Jin, “Convolutional Neural Network over tree structure for programming language processing” in AAAI, 2016 0.86
6. W. Hu, M. Fey, M. Zitnik, Y. Dong, H. Ren, B. Liu, M. Catasta, and J. Leskovec, “Open graph benchmark: Datasets for machine learning on graphs,” NeurIPS, 2020. 6. W. Hu, M. Fey, M. Zitnik, Y. Dong, H. Ren, B. Liu, M. Catasta, J. Leskovec, “Open graph benchmark: Datasets for machine learning on graphs”, NeurIPS, 2020。 0.90
7. A. Hindle, E. T. Barr, Z. Su, M. Gabel, and P. Devanbu, “On the naturalness of software,” in ICSE, pp. 7. A. Hindle, E. T. Barr, Z. Su, M. Gabel, P. Devanbu, “On the naturalness of software” in ICSE, pp。 0.88
837–847, IEEE, 2012. 837-847, IEEE, 2012。 0.84
8. V. N. Ioannidis, D. Zheng, and G. Karypis, “Panrep: Universal node embeddings for heterogeneous graphs,” DLG-KDD, 2020. 8. V. N. Ioannidis, D. Zheng, G. Karypis, “Panrep: Universal node embeddeds for heterogeneous graphs”, DLG-KDD, 2020。 0.88
9. Z. Wu, S. Pan, F. Chen, G. Long, C. Zhang, and S. Y. Philip, “A comprehensive survey on graph neural networks,” TNNLS, 2020. 9. Z.Wu, S. Pan, F. Chen, G. Long, C. Zhang, S. Y. Philip, “A comprehensive survey on graph neural network”, TNNLS, 2020。 0.88
10. M. Schlichtkrull, T. N. Kipf, P. Bloem, R. Van Den Berg, I. Titov, and M. Welling, “Modeling relational data with graph convolutional networks,” in ESWC, pp. 10. M. Schlichtkrull, T. N. Kipf, P. Bloem, R. Van Den Berg, I. Titov, M. Welling, “Modeling relational data with graph convolutional network” in ESWC, pp。 0.89
593– 607, Springer, 2018. 593–607, Springer, 2018年。 0.87
11. W. Hu, B. Liu, J. Gomes, M. Zitnik, P. Liang, V. Pande, and J. Leskovec, “Strategies for pre-training graph neural networks,” ICLR, 2020. 11. W. Hu, B. Liu, J. Gomes, M. Zitnik, P. Liang, V. Pande, J. Leskovec, “Strategies for pre-training graph neural network”, ICLR, 2020。 0.90
12. W. Jin, T. Derr, H. Liu, Y. Wang, S. Wang, Z. Liu, and J. Tang, “Self-supervised learning on graphs: Deep insights and new direction,” arXiv preprint, 2020. 12. W. Jin, T. Derr, H. Liu, Y. Wang, S. Wang, Z. Liu, J. Tang, “Self-supervised learning on graphs: Deep insights and new direction”, arXiv preprint, 2020。 0.91
13. A. Kanade, P. Maniatis, G. Balakrishnan, and K. Shi, “Learning and evaluating contextual embedding of source code,” ICML, 2020. 13. A. Kanade, P. Maniatis, G. Balakrishnan, K. Shi, “Learning and Evaluation contextual embeddedding of source code” ICML, 2020。 0.86
14. Z. Feng, D. Guo, D. Tang, N. Duan, X. Feng, M. Gong, L. Shou, B. Qin, T. Liu, D. Jiang, et al , “Codebert: A pre-trained model for programming and natural languages,” EMNLP, 2020. 14. Z. Feng, D. Guo, D. Tang, N. Duan, X. Feng, M. Gong, L. Shou, B. Qin, T. Liu, D. Jiang, et al , “Codebert: A pre-trained model for programming and natural languages”, EMNLP, 2020。 0.90
15. A. Svyatkovskiy, S. K. Deng, S. Fu, and N. Sundaresan, “Intellicode compose: Code generation using transformer,” ESEC/FSE, 2020. 15. A. Svyatkovskiy, S. K. Deng, S. Fu, N. Sundaresan, “Intellicode compose: Code generation using transformer”, ESEC/FSE, 2020。 0.91
16. U. Alon, S. Brody, O. 16. Alon, S. Brody, O。 0.81
Levy, and E. Yahav, “code2seq: Generating sequences from structured representations of code,” ICLR, 2019. Levy, and E. Yahav, “code2seq: Generating sequences from structured representations of code”, ICLR, 2019。 0.87
17. J. Ferrante, K. J. Ottenstein, and J. D. Warren, “The program dependence graph and its use in optimization,” TOPLAS, 1987. 17. J. Ferrante, K. J. Ottenstein, J. D. Warren, “The program dependent graph and its use in optimization”, TOPLAS, 1987。 0.87
18. N. K. Ahmed, J. Neville, R. A. Rossi, N. G. Duffield, and T. L. Willke, “Graphlet decomposition: Framework, algorithms, and applications,” KAIS, vol. 18. N. K. Ahmed, J. Neville, R. A. Rossi, N. G. Duffield, T. L. Willke, “Graphlet decomposition: Framework, Algorithm, and Applications”, KAIS, vol。 0.91
50, no. 3, pp. 689–722, 2017. 50だ 3、p。 689–722, 2017. 0.63
19. Y. Zhang and Q. Yang, “A survey on multi-task learning,” CoRR, 2017. 19. Y.Zhang, Q. Yang, “A survey on multi-task learning”, CoRR, 2017 0.84
20. P. Bojanowski, E. Grave, A. Joulin, and T. Mikolov, “Enriching word vectors with subword information,” TACL, vol. 20. P. Bojanowski, E. Grave, A. Joulin, T. Mikolov, “Enriching word vectors with subword information”, TACL, vol。 0.86
5, pp. 135–146, 2017. 5, pp。 135–146, 2017. 0.82
21. D. P. Kingma and J. Ba, “Adam: A method for stochastic optimization,” ICLR, 2015. 21. D.P. Kingma, J. Ba, “Adam: A method for stochastic optimization”, ICLR, 2015 0.83
22. M. Wang, D. Zheng, Z. Ye, Q. Gan, M. Li, X. 22. M. Wang, D. Zheng, Z. Ye, Q. Gan, M. Li, X。 0.88
Song, J. Zhou, C. Ma, L. Yu, Y. Gai, T. Xiao, T. He, G. Karypis, J. Li, and Z. Zhang, “Deep graph library: A graph-centric, highly-performant package for graph neural networks,” arXiv, 2019. Song, J. Zhou, C. Ma, L. Yu, Y. Gai, T. Xiao, T. He, G. Karypis, J. Li, Z. Zhang, “ディープグラフライブラリ:グラフ中心で、グラフニューラルネットワークの高性能なパッケージ。 0.81
23. L. v. d. Maaten and G. Hinton, “Visualizing data using t-sne,” JMLR, vol. 23. L. v. d. Maaten, G. Hinton, “t-sneでデータを視覚化する”, JMLR, vol。 0.78
9, no. Nov, pp. 9、いいえ。 11月、p。 0.67
2579–2605, 2008. 2579–2605, 2008. 0.84
24. Y. Li, D. Tarlow, M. Brockschmidt, and R. Zemel, “Gated graph sequence neural networks,” ICLR, 2016. 24. Y.Li, D. Tarlow, M. Brockschmidt, R. Zemel, “Gated graph sequence neural Network” ICLR, 2016年。 0.87
25. B. Yang, W.-t. Yih, X. 25. B. Yang, W.-t. Yih, X。 0.82
He, J. Gao, and L. Deng, “Embedding entities and relations for learning and inference in knowledge bases,” ICLR, 2015. he, j. gao, l. deng, “embedding entities and relations for learning and inference in knowledge bases”, iclr, 2015” (英語) 0.79
                         ページの最初に戻る

翻訳にはFugu-Machine Translatorを利用しています。