Microsoft Research、ディープラーニングを活用したプログラム合成の研究「RobustFill」を報告

Microsoft Researchは、多層構造のニューラルネットワークを用いた機械学習「Deep learning(ディープラーニング)」を使用して自動でコーディングをするプログラム合成の研究を報告しました。

例えば、ユーザーが以下のようなプログラムを生成したいとします。左の書式から右の書式に変換する名前リスト。ユーザーは、いくつかの入力/出力(I/O)の例を提供し学習させることで、残りの出力を(灰色で)自動入力させることを可能にします。


システムは、ドメイン固有言語(DSL)でプログラムを生成することによってこのタスクを実行します。ユーザーはDSLの詳細を理解する必要はありません。手動ではこうなります。

プログラム合成の2つの課題

ただし、プログラム合成には2つの重要な課題があります。

  1. DSLには数十億ものプログラムが存在するため、システムによっては前に見たことがない可能性がある。
  2. I/Oの例を提供するのは手作業なため、学習させる段階でタイプミス(ノイズ)など間違える可能性がある。

2.の問題を解決するために、従来はMicrosoft ExcelのFlashFillシステムを使用していましたが、この方法では拡張が難しく困難していました。そこで、今回新たな「RobustFill」と呼ばれるシステム、Deep learningを活用、その中でも言語変換に先駆けて開発された「Sequence to Sequence」を使用することで成果を上げます。

 

ランダムに生成された何百万ものI/O +プログラムのペアでシステムを訓練し、実世界のベンチマークで92%(従来は34%)の精度を達成しました。とりわけ、I/O例に大きなノイズが含まれている場合でも、システムが高い精度を維持できた実績が大きな成果となりました。

手作業によるノイズがあっても、正しいプログラム合成が生成できる可能性が高くなったということです。

「RobustFill」の詳細が記載された論文はこちら。

アーカイブ

ページ上部へ戻る