無明の学習開始...です

一ヶ月程遅れましたが、無明の学習が開始しました。ふ~~

設定はこんな感じ...

①三層パーセプトロンを使用... 入力層369、中間層81、出力層2

369個のパラメターを81に凝縮してそれを更に煮詰めた結果が評価関数の「出力」...と言う事です。

なぜ「中間層81」か?中間層のノード数は入力ノードの1割から2割程度に設定するので当初80程度を考えていました...将棋盤のマス目が81なので、なんとなくです。

②データベースに取り込んだ約29万局の棋譜からランダムに選び...

千日手局、引き分けは局は現在の所メリットが薄いと思ったのでスキップです。

③対局に出現した全局面を生成し... 369個のパラメターを抽出...

④TD(λ)と呼ばれる強化学習のアルゴリズムを使用しパーセプトロンを調整...

TD(λ)
http://www.eb.waseda.ac.jp/murata/ryotaro.nishino/openhouse/reinforce3.p...

②~④を気の遠くなるほど繰り返します。

「学習」に必要な時間は一局辺り1秒程度で済みます。一日辺り約86,000回位のペースです。

但し、一局辺りの学習量は微細です。

...で、何を「学習」するのか? (続)

投稿者: 紫外線 投稿日時: 月, 01/25/2010 - 14:29 categories [ ]

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

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

メモリー

マシンが脈絡も無くクラッシュするので本気出して調査したら...

マザーボードのBIOSがRAMのクロックをスペックより高めに設定していました(自動オーバークロック調整の一環らしい)。変更したら安定したようです。ふ~~。

再教育

...パラメターの数を少し増やして(465)再教育開始します!

ダイジェスト

のほうを読んでも全然理解出来ない。(涙)

◎◎に近い

14万8千光年の彼方でも「近い」なら我としては万歳です。

過分のお褒めのお言葉に感謝します。5月までにはなんとか「指せる」レベルまで到達しようと頑張ります。

なにやら色々書きましたが、これも全部先人の努力(論文)が元ネタですからね~。最初に読んだTD(λ)に関する論文はそれなりに理解するのに2週間ほどかかりました。

これが最初に読んだ論文の一つです...

Temporal Difference Learning and TD-Gammon
http://www.research.ibm.com/massive/tdl.html

日本語でのダイジェストは...

TDギャモン (TD-Gammon)
http://www.ai-gakkai.or.jp/jsai/whatsai/AItopics4.html

天才に近い

今時将棋ソフトでちゃんとした物を作れるのは,無論相当なソフト技術がある人に限られるでせうが,この方はさまざまなことに優れた見識をお持ちなので,情報界でも希少な卓越した人物であられることは間違いありませぬ.

管理人さんは天才ですか

このスレには驚いた。当方にはまったく理解できない。

まるでスペイン語かポルトガル語を見ているようだ。

生まれ変わったら、管理人さんのような頭脳を持った人間になりたい。

12万局ほど学習 その2

 9  8  7  6  5  4  3  2  1 
ky .. .. .. .. .. .. ke ky a
.. .. .. .. .. TO .. ki oh b
.. .. ke fu .. GI .. .. .. c
fu .. fu .. .. .. .. FU fu d
.. .. .. FU .. .. GI fu .. e
.. FU FU ka .. .. FU .. FU f
FU .. .. .. .. .. KI GI .. g
HI .. .. .. .. .. .. .. .. h
KY KE .. .. .. .. ka OH KY i

[P1]{FU: 0, KY: 0, KE: 0, GI: 0, KI: 1, KA: 0, HI: 1}
[P2]{FU: 5, KY: 0, KE: 1, GI: 1, KI: 1, KA: 0, HI: 0}

先手の手番の局面で「次の一手」テスト...

7手読みで上位の5手(とその応手)は...

[P1:KI => (2,3) ..], [P2:KI (2,2)x(2,3) KI], [P1:FU (2,4)x(2,3)P KI]

[P1:GI (4,3)=>(3,2)P ..], [P2:GI => (2,8) ..], [P1:HI (9,8)x(2,8) GI]

[P1:HI => (9,3) ..], [P2:GI => (2,8) ..], [P1:HI (9,8)x(2,8) GI]

[P1:HI => (1,3) ..], [P2:KI (2,2)x(1,3) HI], [P1:KI => (2,2) ..]

[P1:KI => (8,4) ..], [P2:GI => (2,8) ..], [P1:HI (9,8)x(2,8) GI]

上位2手は(へぼの我が見ても)有りそうな手ですが、3・4・5位の手はどーしようもありませんね。

二日学習してここまでできれば喜ぶべきなのかな?

12万局ほど学習

12万局ほど学習した評価関数はこんな感じです...

(手数) [駒の動き] [先手の評価]

(71) [P2:KE => (8,1) ..] [0.09968709908185994]
(72) [P1:FU (7,4)=>(7,3)P ..] [0.1759641648477791]

先手の歩が成って先手のポイントUPです。

(73) [P2:KE (8,1)x(7,3) TO]  [0.10422277509853593]

...でも後手に「と金」取られてDOWNだね。

(74) [P1:KY (7,5)x(7,3)P KE] [0.19456357273638203]

香車が桂馬をGET...UP!

(75) [P2:KA (8,4)x(7,3) NY] [0.09556427466685435]

...でも後手が角で取り返す...DOWN!!

(76) [P1:KE => (7,4) ..] [0.1328299330071834]

桂馬を打って王手を掛けた!!UP!

(77) [P2:OH (8,2)=>(7,1) ..] [0.1243870672334735]

しかし、敵玉はかわすのであった...DOWN!

何を「学習」するのか?

評価関数の目的は「状況の数値化」にあり、数字が高いほど「勝ち」に近い...と言う事になります。

評価値が0~1のレンジで変動するなら、

0 ⇒ 負け
0.0001~0.5000~0.9999 ⇒ 敗勢~互角~勝勢
1 ⇒ 勝ち

...となりますね。

この中で計算しなくても評価値が解る局面は

①初期状態 0.5 (先手有利のはずですが、ここでは無視です)
②終局時点 0、 0.5、 1 (負け、引き分け、勝ち)

...ですね。

そして(あまりにも当然ですが)一般的に終局に近い局面ほど0.5(互角)から遠ざかっていきます。

今回の学習のゴールは

ゲームの進行に従い(勝者が示した)見本に示される「有利とされる局面」には徐々に高い得点を与え、その度合いは終局に迫るほど高めに設置する

...となります。数字が高くなるほど終盤・終局に接近ということですね。

通常の評価関数は盤上の状況に点数を与え数値化しますが、
無明が使用の評価関数は終局から逆算して終局により近い局面に高めの評価を下す...ということになります。

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

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