ニューラルネットで遊びましょ - 序盤編 (2)

...ニューラルネットを教育するための段取りなのですが...

入力

①現在の局面の「特徴」をデータ化
②一手進めたの局面の「特徴」をデータ化

出力

0.0~1.0 (0.0 = あり得ない、 1.0 = あり得る)

...とします。

して、その教育方法なのですが、いわゆる「教師あり学習」法が使われます。

教師あり学習
http://ja.wikipedia.org/wiki/%E6%95%99%E5%B8%AB%E3%81%82%E3%82%8A%E5%AD%...

実際には

シナリオ (A)

入力に、

①現在の局面の「特徴」をデータ化
②定跡ライブラリーにある一手進めたの局面の「特徴」をデータ化 ← つまり、「正しい手」

...を使用し、出力が1.0(もしくは十分近似するまで)に成るまで学習を続けます。

シナリオ (B)

入力に、

①現在の局面の「特徴」をデータ化
②定跡ライブラリーに無い一手進めたの局面の「特徴」をデータ化 ← つまり、「正しくない手」

...を使用し、出力が0.0(もしくは十分近似するまで)に成るまで学習を続けます。

(A)と(B)を果てしなく繰り返して学習させます。

学習後にテストを行いニューラルネットがきちんと学んだかどうか確認します。その方法は、「序盤の定跡ライブラリーに無い局面を与え(例 - 意味も無く香車を一歩進めてみる)、どの『次の一手』に高いスコアーを出すか?」で判断します。

この時、定跡ライブラリーにある局面では(挙動確認はできても)テストの意味が有りません...何故なら、このパターンはもう覚えてしまっていますから。ニューラルネットでの学習の目的は

未知のパターンに遭遇した時、学習済みの近似パターンを当てはめ対応する

...となります。

投稿者: 紫外線 投稿日時: 日, 09/26/2010 - 10:30 categories [ ]

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。

進行状況 3

...で、学習用プログラムは出来たけど、少ないサンプルで実験したら散々な結果に...

①何か全然間違えている?
②サンプル数を増やすと違ってくる?

...さてどうなることやら...

進行状況 2

学習率を緩めて出現回数に応じて点を減らすとかなりSPEED UPですな。

ガチガチ正確に覚えるより、少々余裕を持たせたほうが①覚える努力は少なめですむ、②順応力(?)が付く...と(勝手に)思います。

進行状況

...テストを兼ねて初期局面を学習させてみました。約3分程掛かって収束しましたが...

一局面3分なら

3分 x 25,000 = 75,000分 = 1,250時間 = 52.08333日

...では時間が掛かりすぎ(仮にこのニュラルネットが全てを学習するこどができる容量が有ったとしてもです)なので少々エラー率を緩め、学習率をUPが妥当の模様です。

更には「出現回数の高い手には1.0を、そうでない手には点を減らす」...と考慮中です。

ボナの定跡ライブラリー

...を一通り初期局面から巡回したら約25,000局面程ありました。(末端まで数えれば約31,000)

1980年代のチェスソフトでも4~5万の定跡ライブラリーだったと記憶しています。この点から見ても開発の余地はかなりあります。

(追記)現在のチェスソフトなら100万以上です。

(追記2)局面を回転した場合も考慮すると約29,000局面に対応、総手数は(対称局面を別々に数えるとして)約68,000手でした。

一局面のデータ数

...は826個と成りました。(盤上の駒、持ち駒、利き...全部入れたらこうなった。データの中にゼロ多し。)

入力は

>①現在の局面の「特徴」をデータ化
>②一手進めたの局面の「特徴」をデータ化

...と、二局面あるので 826 x 2 = 1652個 のデータをニューラルネットに放り込みます。

今回は極めて古典的な「三層パーセプトロン」を使用します。

パーセプトロン
http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%...

今回の課題

⇒ 学習プログラムを組む
⇒ 現在稼動していないマシンを使って学習環境を作る

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。