Skip to main content
QUICK REVIEW

[論文レビュー] Neuro-Symbolic Program Synthesis

Emilio Parisotto, Abdelrahman Mohamed|arXiv (Cornell University)|Nov 6, 2016
Software Testing and Debugging Techniques被引用数 105
ひとこと要約

本論文はNeuro-Symbolic Program Synthesis(NSPS)を導入し、I/O encodingにconditioned on Recursive-Reverse-Recursive Neural Network (R3NN)を用いて、DSLベースのプログラムを入力出力の例から生成するフレームワークを提示する。これは正規表現ベースの文字列変換で示される。

ABSTRACT

Recent years have seen the proposal of a number of neural architectures for the problem of Program Induction. Given a set of input-output examples, these architectures are able to learn mappings that generalize to new test inputs. While achieving impressive results, these approaches have a number of important limitations: (a) they are computationally expensive and hard to train, (b) a model has to be trained for each task (program) separately, and (c) it is hard to interpret or verify the correctness of the learnt mapping (as it is defined by a neural network). In this paper, we propose a novel technique, Neuro-Symbolic Program Synthesis, to overcome the above-mentioned problems. Once trained, our approach can automatically construct computer programs in a domain-specific language that are consistent with a set of input-output examples provided at test time. Our method is based on two novel neural modules. The first module, called the cross correlation I/O network, given a set of input-output examples, produces a continuous representation of the set of I/O examples. The second module, the Recursive-Reverse-Recursive Neural Network (R3NN), given the continuous representation of the examples, synthesizes a program by incrementally expanding partial programs. We demonstrate the effectiveness of our approach by applying it to the rich and complex domain of regular expression based string transformations. Experiments show that the R3NN model is not only able to construct programs from new input-output examples, but it is also able to construct new programs for tasks that it had never observed before during training.

研究の動機と目的

  • 計算コスト、タスク固有のモデル、解釈性といった純粋にニューラルなプログラム誘導法の制約を、ニューローシンボリックアプローチを提案することで解消する。
  • I/O例に条件付けられたDSLプログラムの生成モデルを学習し、テスト時に自動的に一貫したプログラムを構築できるようにする。
  • FlashFill に着想を得た複雑な文字列変換DSLで有効性を示し、未知のタスクや実世界ベンチマークへの一般化を評価する。

提案手法

  • 入力出力例の集合から連続表現を生成するクロスコリレーションI/Oネットワークを提案する。
  • Recursive-Reverse-Recursive Neural Network (R3NN)を導入し、部分プログラムを漸進的に完全なDSLツリーへ展開する。
  • DSLプログラムを木構造の確率的生成で、リーフ表現・ルール表現・グローバル木状態を用いてパースツリーとしてエンコードする。
  • I/Oエンコード(LSTMベースの変種、クロスコリレーション、拡張クロスコリレーションエンコーダを含む)に基づいてプログラム生成を条件付けする。
  • 生成されたI/O例を用いた大規模なDSLプログラムのセットでエンドツーエンドに訓練し、I/O仕様に一致する展開を優先するよう学習する。

実験結果

リサーチクエスチョン

  • RQ1NSPSは、与えられたI/O例と一致する DSLベースのプログラムを、明示的な探索なしに合成できるか?
  • RQ2正規表現ベースの文字列変換DSLにおいて、見たことのないプログラムや見たことのないI/Oペアへ、R3NNベースの生成はどれくらい一般化できるか?
  • RQ3異なるI/Oエンコーダが、プログラム合成の精度と一般化に与える影響はどれくらいか?
  • RQ4I/O条件付けからDSLツリーを生成する、よりシンプルなio2seqアプローチとNSPSはどう比較されるか?
  • RQ5実世界のFlashFillベンチマークにおける、解けるタスク数とプログラムサイズ制限の観点でのシステムの性能はどうか?

主な発見

  • NSPSは、新しいI/O例に対して、訓練中に観察されなかったタスクに対してもプログラムを合成できる。
  • 未知のタスクで63%、モデルから100プログラムをサンプリングした場合の94%がコアベンチマークで報告された。
  • NSPSは、サイズ-13 DSL制限内で、238の実世界FlashFillベンチマークのうち38%を学習する。
  • 適切なI/O条件付けを伴うR3NNはio2seqを大幅に上回り、io2seqは約42%、R3NNは100サンプル時に約91%を達成。
  • I/Oエンコーディングの事前条件付けは、後置条件付けやルート条件付けより良い結果をもたらした。
  • バックトラッキング(複数のプログラムをサンプリング)は精度を著しく向上させ、十分なサンプル(例:300サンプル)でほぼ完璧な結果に達する。
  • FlashFillベンチマーク全体で、10サンプルの結果は約13%しか解けない一方、より広いサンプリング(最大2000サンプル)では約38%に改善する。

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

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

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

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