LoginSignup
36
25

More than 5 years have passed since last update.

機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた 〜いざ対戦編〜

Last updated at Posted at 2016-10-10

シリーズ目次

前回の続き...
この分野では門外漢の私が、「機械学習の理論」をまったく勉強せずに
オセロのAI を作ってみようと思います。

準備

対戦相手は、友人の作ったこちら
PHP Reversi

まず、対戦相手のサイトを開き、プレイヤー白(後手を選択)
対戦1.png

用意した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番

j1.png

後手(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番

j1.png

後手(AI)34番

j2.png

先手(対戦相手)42番

j1.png

後手(AI)44番

j2.png

先手(対戦相手)43番

j1.png

後手(AI)12番

j2.png

先手(対戦相手)29番

j1.png

後手(AI)37番

j2.png

先手(対戦相手)21番

j1.png

後手(AI)22番

j2.png

先手(対戦相手)23番

j1.png

後手(AI)15番

j2.png

先手(対戦相手)7番

j1.png

後手(AI)41番

j2.png

先手(対戦相手)3番

j1.png

後手(AI)14番

j2.png

先手(対戦相手)5番

j1.png

後手(AI)6番

j2.png

先手(対戦相手)20番

j1.png

後手(AI)4番

j2.png

先手(対戦相手)45番

j1.png

後手(AI)46番

j2.png

先手(対戦相手)11番

j1.png

後手(AI)2番

j2.png

先手(対戦相手)1番

j1.png

後手(AI)13番

j2.png

先手(対戦相手)17番

j1.png

後手(AI)31番

j2.png

先手(対戦相手)39番

j1.png

後手(AI)16番

j2.png

先手(対戦相手)25番

j1.png

後手(AI)24番

j2.png

先手(対戦相手)32番

j1.png

後手(AI)33番

j2.png

先手(対戦相手)8番

j1.png

後手(AI)9番

j2.png

先手(対戦相手)0番

j1.png

後手(AI)10番

j2.png

先手(対戦相手)40番

j1.png

後手(AI)パス

j2.png

先手(対戦相手)47番

j1.png

後手(AI)49番

j2.png

先手(対戦相手)56番

j1.png

後手(AI)53番

j2.png

先手(対戦相手)48番

j1.png

後手(AI)57番

j2.png

先手(対戦相手)58番

j1.png

後手(AI)55番

j2.png

先手(対戦相手)63番

j1.png

後手(AI)52番

j2.png

先手(対戦相手)62番

j1.png

後手(AI)61番

j2.png

先手(対戦相手)54番

j1.png

後手(AI)38番

j2.png

先手(対戦相手)59番

j1.png

後手(AI)30番

j2.png

先手(対戦相手)60番

j1.png

後手(AI)51番

j2.png

先手(対戦相手)50番

j1.png

結果

えー完敗です orz
というか、四つ角全て取らせる 最弱の AI を 1ヶ月かけて作ってしまいました

f6a691dd-7b92-826a-36ea-fddc08fa9fc4.png

訓練終盤でも 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

36
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
25