サンプルプログラムを以下の通りです。UIはこのようにすでに用意されたものがあり、CPUと対戦したり、CPU同士での対戦を観戦したり、任意のCPUの盤面評価値を確認することができます。サンプルとしてCPU1~CPU6を用意しました。
Factor_NumOfDiscs = 2.0 var eval_board = [ [ 10, 1, 4, 4, 1, 10,], [ 1, 1, 5, 5, 1, 1,], [ 4, 5, 6, 6, 5, 4,], [ 4, 5, 6, 6, 5, 4,], [ 1, 1, 5, 5, 1, 1,], [ 10, 1, 4, 4, 1, 10,], ];この場合だと、隅を重要視して、その周辺の評価値を下げるというアイデアに到達していることが分かります。また Factor_NumOfDiscsについては序盤・中盤は小さいほうが筋よく打つが、最終盤は多く返したほしいため、そのバランスを加味して2.0という値に調整しています。
2018年3月20日に広尾学園で約30名の学生を対象に本プログラムを用いた2時間の講座を行いました。2名ペアの作業を行い全部で14個のプログラムができ、最後に500回の総当たり戦を行いました。以下の図はその時の結果でそれぞれの組み合わせに対する勝率(行が黒、列が白番)とイロレーティングを表示しています。参考にCPU2~6も参戦しています。学生が作ったプログラムはおよそ600~1100にレーティングが推移しており、それぞれの30分程度の最適化によって強さや相性に違いがでていることがわかります。
本講座においてアンケートで以下のようなフィードバックが得られました。
プログラミングってすごく頭良くてパソコンカチャカチャしているイメージだったので、私でもできるんだなって思ってすごく印象に残りました。最初、全然変な意見しか出てこない自分が嫌でしたが最後の方になるにつれだんだん割と大事な意見だったんだなと感じることが出来ました! |
盤面評価値を自分で色々いじってどんどん強いプログラムを作る為にはどうするできかと試行錯誤したこと。また、ディープラーニングの動きが加速し実際何をAIが行っているのか分からずただ結果だけを受け取るようになってきてる現代”学び”の概念が変わるのではないかという話もとても興味深かった。 |
プログラムを書く行程(考えるところ)が、授業内容としての自由度が高く自分の発想に委ねられている点で、新鮮味があって面白かったです。最後の締めの話は、とても熱い意見だったので参考になりました。 |
チームで作ったAIは盤面ごとの対応が出来ず、打って欲しいところに打ってくれなかったので臨機応変に対応するようなプログラミングを作るのは難しいと思いました。初期設定から少し変えるだけで強くなるのは面白かったです。 |
オセロは駒を置くときにプロは数字で見えるということに驚いた。また、その数字をAIに関数で入れ、数字を変えるだけで、AIの強さが変わって凄いと思った。 |
>講演有難うございました。プログラミングはしたことが無く少し不安でしたがめちゃくちゃ楽しかったです。また、第二回とかやって頂けたら嬉しいです。 |