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

#シリーズ目次
- [機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ～導入編～](http://qiita.com/sasaco/items/3b0b8565d6aa2a640caf)
- [機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ～実装編～](http://qiita.com/sasaco/items/fdb9771c146cb877b183)
- 機械学習の理論を理解せずに tensorflow で オセロ AI を作ってみた ～いざ対戦編～
- [機械学習の理論を理解しようとしてから オセロ AI を作ってみた 〜再始動‼〜](https://qiita.com/sasaco/items/5e102063c256bf56e396)
- [機械学習の理論を理解しようとしてから オセロ AI を作ってみた 〜何これ Alpha Zero 編〜](https://qiita.com/sasaco/items/d249ee3493b5b85c6eb5)
- [機械学習の理論を理解しようと エクセルでニュートラルネットワークを作ってみた 〜画像認識 mnist 編〜](https://qiita.com/sasaco/items/a70ea2940380f7f8e1a1)

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

#準備

対戦相手は、友人の作ったこちら
・ [PHP Reversi](http://kunisan.jp/reversi/)

まず、対戦相手のサイトを開き、プレイヤー白(後手を選択)
![対戦1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/f8fa4802-200c-6beb-89dc-b70666bde9fb.png)


用意したAIを起動

```text:
$ 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](https://qiita-image-store.s3.amazonaws.com/0/142847/59ed669f-fe6c-eec4-edd7-2bed6b6fba24.png)


>後手(AI)18番

```text:
*** 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](https://qiita-image-store.s3.amazonaws.com/0/142847/a6a0e6ec-0ea8-0214-d3da-604e3044f3bf.png)


>後手(AI)34番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/0d0ef34f-2961-26a6-62da-cdf1e1cee773.png)


>先手(対戦相手)42番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/d961cf7d-1609-43fd-fad8-eac036395ad0.png)

>後手(AI)44番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/8e7d2704-7368-cdf4-6542-2b7643aaf229.png)

>先手(対戦相手)43番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/2dfa1f5a-d147-d050-6e05-071d1b1d517a.png)

>後手(AI)12番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/3a5f32f3-7a8c-53c1-1c76-5d2f8e7e9094.png)

>先手(対戦相手)29番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/eacdbf93-af42-cec4-c58b-38c1cbe12ae0.png)

>後手(AI)37番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/795c01a7-6d28-c8a6-be21-9ea59399c20c.png)

>先手(対戦相手)21番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/986e4d49-b9ab-f44f-5995-83c5fe8213ea.png)

>後手(AI)22番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/16fa2bcf-bbae-007c-1e13-1b215e8c0bbf.png)

>先手(対戦相手)23番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/a82c7c15-da14-9047-0c90-133ad1c5bc45.png)

>後手(AI)15番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/f49e45f4-b3bd-f253-2db8-355f5491f000.png)

>先手(対戦相手)7番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/975fc760-7556-000d-cff4-4a5d2550635d.png)

>後手(AI)41番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/40dba7c5-0585-e416-f97d-6fda6917d900.png)

>先手(対戦相手)3番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/787e60e0-c876-3d0e-e31b-31a1bcc8e3cc.png)

>後手(AI)14番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/5f2e46db-c4d8-3e66-c660-bcd2f60ef76d.png)

>先手(対戦相手)5番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/56265f5a-2578-faf8-78be-361e7cb05d2e.png)

>後手(AI)6番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/6454ba8c-23a2-0ebd-83fa-52753d65f26a.png)

>先手(対戦相手)20番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/3459e1ea-1a30-6bec-3561-6b2e8d6661e6.png)

>後手(AI)4番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/8bdf3c17-a1c2-b3a6-a6aa-c521964d0c97.png)

>先手(対戦相手)45番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/a939e835-ff0d-77c3-b2c2-b077a39c5e73.png)

>後手(AI)46番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/34c39a61-aa21-f490-1320-97e1da17e12e.png)

>先手(対戦相手)11番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/20c43823-1255-a37c-c1c8-e37428279087.png)

>後手(AI)2番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/5268fbe1-1bcb-9f46-2e95-0849a205083b.png)

>先手(対戦相手)1番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/9924dec4-5a79-ab51-8aa6-9436d8940e4a.png)

>後手(AI)13番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/1ec0fefd-a44f-2b2d-82fd-dd719db77601.png)

>先手(対戦相手)17番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/53b45a08-b8b5-4b37-0ce6-06f5627e72b1.png)

>後手(AI)31番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/593a1088-162f-a021-dd58-7753a159bf6d.png)

>先手(対戦相手)39番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c73be5d2-67c8-5cfd-7eb4-1bb833ad1a79.png)

>後手(AI)16番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/3b5a55f6-8f6e-6b63-8b69-14efda9a44c0.png)

>先手(対戦相手)25番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/9b1b0eaa-fe6f-df5c-6153-ad65d691d439.png)


>後手(AI)24番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/21d4506a-fe81-5dad-6250-9fa362c14d9b.png)

>先手(対戦相手)32番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/00b54744-9a5f-41a0-6bf8-ad8aabebd489.png)

>後手(AI)33番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/d961254f-ea82-7a0e-05a0-8da265ab36e8.png)

>先手(対戦相手)8番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/304f7401-b509-21b2-c858-3a9096fc26bf.png)

>後手(AI)9番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/8ebf3a5c-c01e-2cd4-1248-1c3f6f6ff035.png)

>先手(対戦相手)0番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/3710fb61-ebe3-b86b-3f4f-f85a2392c76d.png)

>後手(AI)10番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/ea7f1fbd-8e09-7c9c-71b4-66bde3cfb418.png)

>先手(対戦相手)40番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/5a3a4d01-f01d-6277-8749-f2c3fb6f1feb.png)

>後手(AI)パス

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/27631a99-bcfc-e2a0-3fb6-ea3888564822.png)

>先手(対戦相手)47番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/06324111-4b7e-9c54-5077-0249c13aa213.png)

>後手(AI)49番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/8caeb60f-e6b6-9ba0-2b33-4c462308afd4.png)

>先手(対戦相手)56番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/9a5e1fcb-64c9-750d-44dd-cf9860f1b9cd.png)

>後手(AI)53番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c2ef5553-a4b2-0545-6f47-5eb32346693c.png)

>先手(対戦相手)48番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/2fc71077-9153-b881-a9f1-edea7d3d1aa7.png)

>後手(AI)57番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/38457d19-b8a1-8ba8-2863-67cbeea80e9b.png)

>先手(対戦相手)58番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/1d021eaa-fcc3-cd02-3e97-94e7844c30a0.png)

>後手(AI)55番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/8205582b-7db5-5e07-1557-9d6f90daaa65.png)

>先手(対戦相手)63番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/6a52c069-dda6-6d31-b7bd-a23def2a3e15.png)

>後手(AI)52番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/61616d9e-7d1d-53a6-5784-fd4f819b89b8.png)

>先手(対戦相手)62番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/b5976c73-27a2-1e5a-43bd-e06ea2299d55.png)

>後手(AI)61番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/b04c7241-d590-a3b1-2a06-6ca7f51a99e5.png)

>先手(対戦相手)54番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/1d1b3c5a-22e7-0ba7-f3d4-90b88ab43dac.png)

>後手(AI)38番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c3fd88cf-8695-b82f-09fd-9c2ea573edf5.png)

>先手(対戦相手)59番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/0d9d8814-6191-bd0e-fc89-72e615c71dc9.png)

>後手(AI)30番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/e78f5d76-1405-3193-1e36-3b95e2c61148.png)

>先手(対戦相手)60番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/db84d74d-9da6-4308-1982-a1c709a6ae38.png)

>後手(AI)51番

![j2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/39e37641-dbe3-139b-ef39-5236f0dcb64b.png)

>先手(対戦相手)50番

![j1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/332e884c-1c4f-4e83-011a-788f6d978292.png)



#結果

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

![f6a691dd-7b92-826a-36ea-fddc08fa9fc4.png](https://qiita-image-store.s3.amazonaws.com/0/142847/0ed19aab-43a7-a27f-065c-013928277c25.png)


訓練終盤でも Q_MAX が 0.023 とか小さすぎ だったから変だなぁ～と思ってたんだけどね
普通 訓練終盤 なら ログが こんな感じで Q_MAX が 1に近いはずだよね

```text:
player:1 | pos:32 | LOSS: 0.0014 | Q_MAX: 0.9423
player:2 | pos:15 | LOSS: 0.0020 | Q_MAX: 0.9335
…
```

接待 AI ができています



#リベンジ

[次回](http://www.structuralengine.com/?p=7)　tensorflow から chainer に変えて リベンジです。

どうやら tensorflow では使えない optimizers.RMSpropGraves が効いているのか
今のところうまく学習できています。（執筆時点では、まだ強くないですが）

どなたか詳しい方、ご教示をお願いいたします。
m(_ _)m