#シリーズ目次
- 機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ~導入編~
- 機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ~実装編~
- 機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ~いざ対戦編~
- 機械学習の理論を理解しようとしてから オセロ AI を作ってみた 〜再始動‼〜
- 機械学習の理論を理解しようとしてから オセロ AI を作ってみた 〜何これ Alpha Zero 編〜
- 機械学習の理論を理解しようと エクセルでニュートラルネットワークを作ってみた 〜画像認識 mnist 編〜
前回の続き...
この分野では門外漢の私が、「機械学習の理論」をまったく勉強せずに
オセロのAI を作ってみようと思います。
#準備
対戦相手は、友人の作ったこちら
・ PHP Reversi
用意したAIを起動
$ python FightWithAI.py
------------- GAME START ---------------
*** userターン○ ***
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 ○ ● 29 30 31
32 33 34 ● ○ 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
番号を入力してください
[44, 37, 26, 19]
>>>
AIの指示を私が入力します。
#いざ対戦
先手(対戦相手)19番
後手(AI)18番
*** AIターン● ***
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 ● 20 21 22 23
24 25 26 ● ● 29 30 31
32 33 34 ● ○ 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
番号を入力してください
[44, 37, 26, 19]
>>> 18
先手(対戦相手)26番
後手(AI)34番
先手(対戦相手)42番
後手(AI)44番
先手(対戦相手)43番
後手(AI)12番
先手(対戦相手)29番
後手(AI)37番
先手(対戦相手)21番
後手(AI)22番
先手(対戦相手)23番
後手(AI)15番
先手(対戦相手)7番
後手(AI)41番
先手(対戦相手)3番
後手(AI)14番
先手(対戦相手)5番
後手(AI)6番
先手(対戦相手)20番
後手(AI)4番
先手(対戦相手)45番
後手(AI)46番
先手(対戦相手)11番
後手(AI)2番
先手(対戦相手)1番
後手(AI)13番
先手(対戦相手)17番
後手(AI)31番
先手(対戦相手)39番
後手(AI)16番
先手(対戦相手)25番
後手(AI)24番
先手(対戦相手)32番
後手(AI)33番
先手(対戦相手)8番
後手(AI)9番
先手(対戦相手)0番
後手(AI)10番
先手(対戦相手)40番
後手(AI)パス
先手(対戦相手)47番
後手(AI)49番
先手(対戦相手)56番
後手(AI)53番
先手(対戦相手)48番
後手(AI)57番
先手(対戦相手)58番
後手(AI)55番
先手(対戦相手)63番
後手(AI)52番
先手(対戦相手)62番
後手(AI)61番
先手(対戦相手)54番
後手(AI)38番
先手(対戦相手)59番
後手(AI)30番
先手(対戦相手)60番
後手(AI)51番
先手(対戦相手)50番
#結果
えー完敗です orz
というか、四つ角全て取らせる 最弱の AI を 1ヶ月かけて作ってしまいました
訓練終盤でも Q_MAX が 0.023 とか小さすぎ だったから変だなぁ~と思ってたんだけどね
普通 訓練終盤 なら ログが こんな感じで Q_MAX が 1に近いはずだよね
player:1 | pos:32 | LOSS: 0.0014 | Q_MAX: 0.9423
player:2 | pos:15 | LOSS: 0.0020 | Q_MAX: 0.9335
…
接待 AI ができています
#リベンジ
次回 tensorflow から chainer に変えて リベンジです。
どうやら tensorflow では使えない optimizers.RMSpropGraves が効いているのか
今のところうまく学習できています。(執筆時点では、まだ強くないですが)
どなたか詳しい方、ご教示をお願いいたします。
m(_ _)m