PyTorch の社内勉強会の題材にしたいと思い立ち、畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)を用いた自己対戦型強化学習の三目並べ AI を実装したので公開します。見通しの良いシンプルな実装を目指しました。結局、それなりのコード量になってしまいましたが。 動作環境 Google Colaboratory の CPUランタイムにて動作を確認しました。 概略 おおまかな処理フローは次図の通りです。盤面情報を受け取った先攻方策と後攻方策は、○×を書き込む場所を返します。この先攻方策と後攻方策に AI を実装し自己対戦させます。 盤面情報は、空白マスをゼロ、先攻 ○ を+1、後攻 × を-1とした形状 (H,W)=(3,3) の二次元配列とします。 盤面座標は、場合により二次元座標と1次元に展開したフラット座標を使い分けます。 三目並べの
![自己対戦で強化学習する三目並べ AI をPyTorchで実装 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/7f3cc9915fa7607dea8dbfefe55b4e0d6271bc61/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU4JTg3JUFBJUU1JUI3JUIxJUU1JUFGJUJFJUU2JTg4JUE2JUUzJTgxJUE3JUU1JUJDJUI3JUU1JThDJTk2JUU1JUFEJUE2JUU3JUJGJTkyJUUzJTgxJTk5JUUzJTgyJThCJUU0JUI4JTg5JUU3JTlCJUFFJUU0JUI4JUE2JUUzJTgxJUI5JTIwQUklMjAlRTMlODIlOTJQeVRvcmNoJUUzJTgxJUE3JUU1JUFFJTlGJUU4JUEzJTg1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz03ZDI5N2QwM2Y2NGFjYWI5NTQ4YTU1MzMzY2JkODJmMw%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5ZGNsYWJfUDAwMiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZWQ2ZjAwZTg5OTJhNTMyMDk1ZDcwOWU5OGI4OGYzYzA%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4g5qCq5byP5Lya56S-44Ov44Kk44O744OH44Kj44O744K344O844CAWURD44Op44Oc%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D4a092a0abd417957bbc2f98dbb1c2c15)