ひとつ前に戻る

囲碁の「次の一手タスク」をニューラルネットワークで作る

学習用データの作成2 データ作成の手順

データ作成の手順はどうなるでしょうか。
次のようになると思います。
1 SGFファイル読み込み
2 1手目で黒の手番なので、ここでまずデータを作成
3 次の一手(黒)を打った時点で取られる石がないか確認し、あればその石を取り除く。
4 次の一手(白)を打った時点で取られる石がないか確認し、あればその石を取り除いて、データを作成する。
あとは3、4の繰り返し

これをSmallBasicで作成しようと思います。

SGFファイル読み込み
ファイル読み込みのコードです。
手順のみ必要なので、ファイルの14行目だけ読み込んでいます。
2行目は読み込んだ内容の表示です。
左下のように表示されます。
0手目でデータ作成
黒の一手目を取得
ここでは、まだ黒も白も一手も打っていないので、
黒石、白石の配置はありません。
黒の次の一手を取得して、データ作成します。

黒の次の一手は「;B[dd]」の「dd」の部分です。
「dd」の最初のdが列を示しますので、
まずそこを取り込みます。
それが2行目のコードとなります。

列をx、行をyとして考えます。
そして取得した文字に応じてxに列番号(何列目なのか)を代入します。
それが、4~20行目となります。
行yに関しても同様に行います。
今回は、x=4,y=4という値を取得することになります。
0手目でデータ作成
番号取得

列x=4,行y=4ということは、左図とおり「25」ということです。
これをどう求めればいいでしょうか。
4行目ということは3行目までの数に4行目の列までの数を加えれば求まります。
つまり3行目までの数 = (y-1) ✖ 7
4行目の列 x
よって求めるものは(y-1) ✖ 7 + x となります。
0手目でデータ作成
データ作成

入力データは「教師データ」+「白と黒の配置データ」となります。
教師データは出力層の教師データとして使います。
出力層の行列の要素は0から始まるので、教師データもそれに合わせて1引きます。
よって0手目でのデータは 25-1=24 の教師データに黒と白の配置0が98個並んだもの
を合わせたものになります。
左図のとおりです。
0手目でデータ作成
データの意味
0手目でのデータにつき説明すると、
0手目なので、黒と白の配置は無し。つまり入力層のデータはすべて0
出力層の教師データは25番目を「0.99」にして、他は「0.01」にするということです。

ひとつ前に戻る