TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

将棋AIの進捗 その2

elmo_for_learnを使ってdepth8で35億局面の生成ができたので、DNNの学習を開始しました。

前に7.5億局面を学習したときは、4日と20.5時間かかったので、35億局面を学習するには22日15.6時間かかる見込みです。

elmo_for_learnで生成した局面には重複局面が4%程含まれるため、前処理として重複局面を削除する処理を行いました。

自作のC++ツールで、std::uniqueを使って重複を削除していますが、35億局面のファイルは合計で127GBあってメモリに乗らないため、ファイルを分割し、分割したファイル同士で重複を削除するツールを作成して処理しました。
ElmoTeacherDecoder/hcpe_uniq2 at master · TadaoYamaoka/ElmoTeacherDecoder · GitHub

DNNの学習では、学習データがシャッフルされていることが精度を上げるために重要なため、これもC++でツールを作成し、std::shuffleでシャッフルを行いました。
これもメモリに乗らないため、まずは全データのインデックス(連番)を格納した配列を用意し、それをシャッフルしたあと、インデックスを使って実際のデータを分割して処理するツールを作成しました。
ElmoTeacherDecoder/hcpe_shuffle at master · TadaoYamaoka/ElmoTeacherDecoder · GitHub

あと、初期局面のroots.hcpのバリエーションを増やすため、まふ定跡の局面とネットで集めた棋譜の初期局面を追加しています。

あとは、どれだけ精度が上がるか楽しみにして、学習が終わるのを待つだけです。