Skip to main content
QUICK REVIEW

[論文レビュー] Neural Program Synthesis with Priority Queue Training

Daniel A. Abolafia, Mohammad Norouzi|arXiv (Cornell University)|Jan 10, 2018
Software Engineering Research参考文献 33被引用数 28
ひとこと要約

本論文は、動的優先度キューから得た報酬が最も高い上位K個のプログラムを反復的に学習することで、再帰的ニューラルネットワーク(RNN)を改善する強化学習手法であるプライオリティキュー学習(PQT)を提案する。PQTは、チューリング完全なBFプログラミング言語におけるさまざまなタスクにおいて、ポリシー勾配法および遺伝的アルゴリズムのベースラインを上回り、長さペナルティを適用した場合に、より高い成功確率と短く人間が読みやすいプログラムを生成する。

ABSTRACT

We consider the task of program synthesis in the presence of a reward function over the output of programs, where the goal is to find programs with maximal rewards. We employ an iterative optimization scheme, where we train an RNN on a dataset of K best programs from a priority queue of the generated programs so far. Then, we synthesize new programs and add them to the priority queue by sampling from the RNN. We benchmark our algorithm, called priority queue training (or PQT), against genetic algorithm and reinforcement learning baselines on a simple but expressive Turing complete programming language called BF. Our experimental results show that our simple PQT algorithm significantly outperforms the baselines. By adding a program length penalty to the reward function, we are able to synthesize short, human readable programs.

研究の動機と目的

  • 正解プログラムや正解出力を必要とせず、報酬関数のみで動作する汎用的なプログラム合成フレームワークの開発。
  • 単純で反復的な最適化手法、すなわちプライオリティキュー学習(PQT)の神経プログラム合成における有効性の評価。
  • チューリング完全なプログラミング言語において、ポリシー勾配法や遺伝的アルゴリズムといった既存のベースラインとPQTを比較する。
  • 報酬関数にプログラム長ペナルティを組み込むことで、PQTが短く人間が読みやすいプログラムを生成できるかの探求。
  • 複数のタスクとランダムシードを対象としたプログラム合成手法の比較に用いる標準化された評価手法の確立。

提案手法

  • 本手法は、これまでに生成された中で報酬が最も高いK個のプログラムを保持する優先度キューを維持し、上位K個のプログラムに対して最大尤度推定を用いてRNNを学習する。
  • RNNは学習された方策に従い、自己回帰的サンプリングによって新しいプログラムを生成し、実行と報酬評価後に優先度キューに追加される。
  • 学習プロセスは反復的に行われる:現在の上位K個のプログラムでRNNを再学習し、新しい候補をサンプリングし、新しいものも含めた最良のK個のプログラムでキューを更新する。
  • プログラムの正しさを評価する報酬関数が定義され、プログラム長や実行時間に対するペナルティをオプションで追加することで、コンactかつ効率的なコードの生成を促進する。
  • 本手法は、8つの命令のみを備える最小限のチューリング完全言語であるBFプログラミング言語を対象とし、構文的に有効なプログラムの生成を可能にする。
  • 本手法は、複数のタスクにおけるトレーニングケースとホールドアウトテストケースの成功確率を用いて、ポリシー勾配法(PG)および遺伝的アルゴリズム(GA)のベースラインと比較される。

実験結果

リサーチクエスチョン

  • RQ1優先度キューに基づく単純な反復的最適化手法が、既存の強化学習および遺伝的アルゴリズムのベースラインを上回ることができるか?
  • RQ2動的優先度キューからの上位K個のプログラムでRNNを学習することは、標準的なポリシー勾配法と比較して、より安定的かつ信頼性の高いプログラム合成を可能にするか?
  • RQ3報酬関数にプログラム長ペナルティを組み込むことで、PQT手法が短く人間が読みやすいプログラムを生成できるか?
  • RQ4PQT手法は、複数のランダムシードおよび多様なプログラミングタスク(文字列操作やアルゴリズム的演算など)に対して頑健であるか?
  • RQ5PQTは、ランダムに初期化されたRNNと空のキューから出発し、事前の教師信号なしに正しいプログラムを発見できるか?

主な発見

  • PQTは20のタスク全体で平均13.0 / 5.7の成功確率(トレーニング / 評価)を達成し、ポリシー勾配法(3.3 / 1.5)および遺伝的アルゴリズム(8.6 / 4.3)を顕著に上回った。
  • 逆順タスクでは、PQTはトレーニングおよび評価セット両方で20 / 20の成功を達成したのに対し、ポリシー勾配法は3 / 2にとどまった。
  • 「hello」を出力するタスクでは、PQTは25 / 25の成功を達成し、PG+PQTハイブリッド手法の最良成績と同等だったが、GAは12 / 16にとどまった。
  • PQTは、逆順、加算、および「hello」出力といったタスクにおいて、人間が読みやすい最小長のBFプログラムを効果的に生成した。例えば、文字列の逆順には"[>,]+[,<.]"のような例が得られた。
  • 本手法は高い信頼性を示し、多くのランダムシードおよび多くのタスクで解決策を発見したが、ベースラインは多くの組み合わせで失敗していた。
  • 長さペナルティを適用した場合、PQTは短いプログラムを生成し、例えば「hello」を出力する際には"++++++++.---.+++++++..+++."のような例が得られた。これは、効果的なコード簡略化を示している。

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

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

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

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