Skip to main content
QUICK REVIEW

[論文レビュー] Representing Partial Programs with Blended Abstract Semantics

Maxwell Nye, Yewen Pu|arXiv (Cornell University)|May 3, 2021
Software Engineering Research参考文献 30被引用数 5
ひとこと要約

この論文は、完全な実行が不可能な部分プログラムを表現するための神経記号的手法を提案する。学習されたモジュラーなニューラルネットワークを用いて、具体的な実行状態と近似された意味論を融合させることで、より効果的なプログラム合成を可能にする。この手法は、純粋なニューラル手法と比較して、固定の探索予算内において、ループや高階関数といった複雑な構造を含むプログラムの合成精度を向上させる。

ABSTRACT

Synthesizing programs from examples requires searching over a vast, combinatorial space of possible programs. In this search process, a key challenge is representing the behavior of a partially written program before it can be executed, to judge if it is on the right track and predict where to search next. We introduce a general technique for representing partially written programs in a program synthesis engine. We take inspiration from the technique of abstract interpretation, in which an approximate execution model is used to determine if an unfinished program will eventually satisfy a goal specification. Here we \emph{learn} an approximate execution model implemented as a modular neural network. By constructing compositional program representations that implicitly encode the interpretation semantics of the underlying programming language, we can represent partial programs using a flexible combination of concrete execution state and learned neural representations, using the learned approximate semantics when concrete semantics are not known (in unfinished parts of the program). We show that these hybrid neuro-symbolic representations enable execution-guided synthesizers to use more powerful language constructs, such as loops and higher-order functions, and can be used to synthesize programs more accurately for a given search budget than pure neural approaches in several domains.

研究の動機と目的

  • 完全な実行が不可能な状況下での部分プログラムの表現に関する課題に対処すること。
  • より良い有望なプログラムパスの予測を可能にすることで、プログラム合成における探索効率を向上させること。
  • 合成エンジン内で、ループや高階関数といったより洗練された言語的構造をサポートすること。
  • 記号的実行と学習された意味論を組み合わせることで、より正確かつスケーラブルな合成を実現すること。

提案手法

  • 不完全なプログラムのための近似実行モデルを構築するために、抽象解釈の原則を活用すること。
  • 特に実行不能なコードセグメントにおいても、プログラミング言語構造の意味論を学習するためのモジュラーなニューラルネットワークを訓練すること。
  • 意味論が不明な箇所では、具体的な実行状態と学習されたニューラル近似を組み合わせたハイブリッドなプログラム表現を構築すること。
  • 言語の意味論を暗黙的にエンコードする合成的プログラム表現を用いることで、プログラム構造の間で一般化を可能にすること。
  • 学習された意味論を実行誘導型合成エンジンに統合し、有効で正しいプログラムへ向かう探索をガイドすること。
  • 未束縛変数や不完全な制御フローを含む部分プログラムに対しても、合成エンジンが推論できるようにすること。

実験結果

リサーチクエスチョン

  • RQ1学習されたニューラルモデルは、正確な合成を可能にするために、不完全なプログラムの意味論を効果的に近似できるか?
  • RQ2具体的な実行状態と学習された意味論を組み合わせることで、純粋なニューラル手法や記号的手法と比較して、合成性能がどのように向上するか?
  • RQ3このハイブリッド表現は、ループや高階関数といった複雑な構造を含むプログラムの合成をどの程度可能にするか?
  • RQ4制限された計算リソース予算下でも、この手法は探索効率と正確性を維持または向上させるか?

主な発見

  • ハイブリッドな神経記号的表現により、合成エンジンは、そうでなければ実行不能となる部分プログラムについても、効果的に推論できるようになった。
  • このアプローチは、純粋なニューラル手法と比較して、ループや高階関数といった高度な言語的構造の使用をより信頼性高くサポートする。
  • 与えられた探索予算内では、複数のドメインにわたり、純粋なニューラルアプローチよりも高いプログラム合成の正確性を達成した。
  • 学習されたニューラルコンponentは、未束縛または不完全なコード領域において、効果的な意味論の近似を提供し、探索のガイドラインを改善した。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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