Suite de précédent ... Dans ce domaine, moi, un étranger, je n'ai pas du tout étudié «la théorie de l'apprentissage automatique». Je vais faire l'IA d'Othello.
L'adversaire est ici fait par un ami ・ PHP Reversi
Tout d'abord, ouvrez le site de l'adversaire et le joueur blanc (sélectionnez le deuxième coup)
Démarrez l'IA préparée
python
$ python FightWithAI.py
------------- GAME START ---------------
***tour de l'utilisateur ○***
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
Veuillez saisir le numéro
[44, 37, 26, 19]
>>>
Je vais entrer les instructions AI.
Premier coup (adversaire) n ° 19
Retour (AI) n ° 18
python
***Tour de l'IA ●***
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
Veuillez saisir le numéro
[44, 37, 26, 19]
>>> 18
Premier coup (adversaire) n ° 26
Arrière (AI) n ° 34
Premier coup (adversaire) n ° 42
Arrière (AI) n ° 44
Premier coup (adversaire) n ° 43
Retour (AI) n ° 12
Premier coup (adversaire) n ° 29
Arrière (AI) n ° 37
Premier coup (adversaire) n ° 21
Arrière (AI) n ° 22
Premier coup (adversaire) n ° 23
Retour (AI) n ° 15
Premier coup (adversaire) n ° 7
Arrière (AI) n ° 41
Premier coup (adversaire) n ° 3
Retour (AI) n ° 14
Premier coup (adversaire) n ° 5
Retour (AI) n ° 6
Premier coup (adversaire) n ° 20
Retour (AI) n ° 4
Premier coup (adversaire) n ° 45
Retour (AI) n ° 46
Premier coup (adversaire) n ° 11
Deuxième (AI) n ° 2
Premier coup (adversaire) n ° 1
Retour (AI) n ° 13
Premier coup (adversaire) n ° 17
Arrière (AI) n ° 31
Premier coup (adversaire) n ° 39
Arrière (AI) n ° 16
Premier coup (adversaire) n ° 25
Retour (AI) n ° 24
Premier coup (adversaire) n ° 32
Arrière (AI) n ° 33
Premier coup (adversaire) n ° 8
Retour (AI) n ° 9
Premier coup (adversaire) n ° 0
Retour (AI) n ° 10
Premier coup (adversaire) n ° 40
Passe arrière (AI)
Premier coup (adversaire) n ° 47
Retour (AI) n ° 49
Premier coup (adversaire) n ° 56
Retour (AI) n ° 53
Premier coup (adversaire) n ° 48
Retour (AI) n ° 57
Premier coup (adversaire) n ° 58
Arrière (AI) n ° 55
Premier coup (adversaire) n ° 63
Retour (AI) n ° 52
Premier coup (adversaire) n ° 62
Retour (AI) n ° 61
Premier coup (adversaire) n ° 54
Retour (AI) n ° 38
Premier coup (adversaire) 59e
Retour (AI) n ° 30
Premier coup (adversaire) n ° 60
Retour (AI) n ° 51
Premier coup (adversaire) n ° 50
Eh, c’est une défaite totale orz Ou plutôt, j'ai passé un mois à créer l'IA la plus faible qui me permette de prendre les quatre coins.
Même à la fin de la formation, Q_MAX était de 0,023, ce qui était trop petit, alors j'ai pensé que c'était étrange. Normalement, à la fin de la formation, le journal devrait ressembler à ceci et Q_MAX devrait être proche de 1.
python
player:1 | pos:32 | LOSS: 0.0014 | Q_MAX: 0.9423
player:2 | pos:15 | LOSS: 0.0020 | Q_MAX: 0.9335
…
L'IA de divertissement est prête
La prochaine fois Revenge en passant du tensorflow au chainer.
Apparemment, des optimiseurs.RMSpropGraves, qui ne peut pas être utilisé avec tensorflow, fonctionne J'ai bien appris jusqu'à présent. (Au moment de la rédaction de cet article, ce n'est pas encore fort)
Si vous êtes familier avec cela, veuillez nous en informer. m(_ _)m
Recommended Posts