DeepCoder追実装記録 (1)

DeepCoder概略

[(Input, Output)] => Map[関数, 出現確率]の関数をディープラーニングで学習し,それを利用してプログラム空間を探索・プログラム合成をする. 詳しくは論文

追実装について

レポジトリ: ここ

データセットの生成

深さ優先探索でプログラムを列挙しながら,適当に入出力の組を生成する.同じ挙動をするプログラムを排除する部分の処理が重く,時間がかかっている.

高速化の手段としては,

  1. 並列化(入力の型が違えば独立に扱えるので)
  2. 削除する部分が遅いようなので,その処理の見直し

あたりが思いついている.恐らく1は重要だと思う.

学習

恐らく過学習してしまっている.原因は不明だけど,データセットの生成の仕方が偏っている気がしないでもない. とりあえずデータセットの生成を高速化して,ちゃんとデータセット作ってもう一度やり直す.

ハマった点

  • チュートリアルのままでOptimizerをSGDにしたら局所解に陥ったのか収束しなかった.Adamだと収束する

今後

  1. 過学習の問題を解消する.せめて原因を特定する
  2. 小さめのデータセット(N=100くらい?)で評価をしてみたい