e4exp / paper_manager_abstract

0 stars 0 forks source link

Learning to Execute Programs with Instruction Pointer Attention Graph Neural Networks #335

Open e4exp opened 3 years ago

e4exp commented 3 years ago

グラフニューラルネットワーク(GNN)は、コードの補完、バグの発見、プログラムの修復など、ソフトウェアエンジニアリングのタスクを学習するための強力なツールとして登場しました。 グラフニューラルネットワークは、制御フローグラフのようなプログラム構造を利用することができますが、GNNの伝搬ステップ数よりもはるかに多くの逐次的な推論ステップを必要とするプログラム実行のようなタスクには適していません。 一方、リカレントニューラルネットワーク(RNN)は、長い連続した推論の連鎖に適していますが、プログラム構造を自然に取り入れることができず、一般的に上記のタスクではパフォーマンスが低下します。 本研究では、制御フローグラフを用いてプログラムを実行することを学習するタスクにおいて、改善された系統的一般化を達成する新しいGNNアーキテクチャ、IPA-GNN(Instruction Pointer Attention Graph Neural Networks)を導入することで、両者の長所を達成することを目的としています。 このモデルは、プログラムトレース上で動作するRNNを潜在変数として分岐決定を考慮することで生まれます。 IPA-GNNは、RNNモデルを連続的に緩和したもの、あるいは、より実行に適したGNNの変種と見なすことができる。 これらのモデルを検証するために、制御フローグラフを用いた実行学習の系統的な一般化を評価することを提案する。 これは、順序的な推論とプログラム構造の利用をテストするものである。 より実用的には、プログラム合成のヒューリスティックな機能としてモデルを使用する場合に生じる可能性のある、部分的なプログラムの実行を学習するタスクでこれらのモデルを評価する。 その結果、IPA-GNNは、様々なRNNやGNNのベースラインよりも優れていることがわかった。

e4exp commented 3 years ago

我々の貢献を以下のようにまとめます。

e4exp commented 3 years ago

image image image image image image image

e4exp commented 3 years ago

6 結論と今後の課題

原則的なアプローチに従って、古典的なインタープリタをベースにしたインストラクション・ポインター・アテンション・グラフ・ニューラル・ネットワーク・アーキテクチャを設計しました。 インタープリタの因果構造を忠実に再現することで,IPA-GNNは,プログラムの実行挙動を推論するタスクにおいて,ベースラインモデルよりも強力な系統的一般化を示した。 IPA-GNNは、プログラムの完全実行と部分実行の両方のタスクにおいて、すべてのベースラインモデルよりも優れた性能を発揮しました。 しかし、これらのタスクは、Pythonプログラミング言語のサブセットのみを対象としています。 実験で使用したプログラムは,考慮する変数の数,使用する値の大きさ,許可される文の範囲が制限されていました. しかし、このような適度な難易度であっても、既存のモデルでは課題に苦戦していたため、これらの課題のより難しいバージョンを解決し、これらの結果を実世界の問題に適用するためには、まだ課題が残っています。 幸いなことに、この分野では難易度のスケーリングが自然に認められるため、系統的な一般化を研究するのに適した環境が整っています。 我々の結果は、プログラミングのような実世界のタスクを例によって解決するモデルの有望な方向性を示唆していると信じている。 IPA-GNNのようなモデルは、プログラムのセマンティクスに関する情報を捉えるソースコードの埋め込みを構築するのに有用であることを提案している。

e4exp commented 3 years ago

幅広い影響

本研究では、プログラムの実行に関連するプログラム理解タスクに適した新しいニューラルネットワークアーキテクチャを導入しています。 このアーキテクチャから得られる教訓は、プログラムの理解と生成のための機械学習の改善に貢献します。 また、ソフトウェア開発者が新しいソースコードを解析・作成するためのツールを改善することで、より広い影響を与えることができると期待しています。 しかし、静的解析のための機械学習は、不確実な結果をもたらします。 これらの技術がツールに組み込まれることで、適切な範囲を超えた確実性が伝えられ、開発者のミスやツールへの不信感につながる恐れがあります。