オセロAIを作る!~イントロダクション~

自己紹介

みなさま初めまして。エンジニアをやっている、せぶといいます。
今回から数回に分けて記事を書きます。
もし興味があれば読んでくださると嬉しいです。

ボードゲームとAI

単刀直入に申し上げますとこの記事はオセロAIを実装してみる話になりますが、この記事を書くに至る背景を説明させてください。

AlphaGoというプログラムをご存知でしょうか。DeepMindという企業が開発した囲碁AI(リンク)なのですが、2016年5月、当時世界最強と囁かれていた韓国のプロ棋士イ・セドルを5番勝負4-1で下しました。大きなニュースになったのでご存知の方も多いと思います。

囲碁は将棋やオセロなどと比べて盤面が広くルールも複雑であるため、AIが人類に勝つのはまだ10年は先だろうと当時言われていました。実際私がまだ高校生だった頃は囲碁AIはアマチュアの初段程度の棋力であり、プログラムがプロ棋士に勝つ日なんか永遠に来ないだろうとさえ言われている程でした。それがたった十数年で世界トッププロ棋士を負かしてしまいます。AIの発展具合、凄まじいですね。

この記事の目的

さて、上で申し上げたような盛り上がりを見せているボードゲームAIですが、ボードゲームAIとは実際何なのでしょうか。ただのプログラムがなぜ強い手を打てるのでしょう。素人ではとても理解できない難解な理論なのでしょうか。

この記事では、ボードゲームAIというものを少し理解するために素人である私がオセロAIを実装してみます。素人がオセロAIを作ってみることでボードゲームAIがどんな仕組みでできているかを良い感じに導入できればいいなと思っています。

オセロを選んだ理由は、ぶっちゃけた話、実装が簡単だからです。以後説明していきますが、将棋や囲碁と比べてかなりすっきりと実装できます。ルールも比較的単純です。

想定する対象

  • 基本情報程度のコンピュータ理論知識があったり、プログラミングの経験があったりしたほうが理解し易いかもしれません。なるべく前提条件のない記事にしたいですが、悪しからず。
  • そもそもボードゲームにもAIにも興味ない人や、逆にガチなかたには向かないと思います。

注意

あくまで理論的な導入となることを目的とし、マシン構築やプログラミング過程などは記事にしません。そういうのも書きたかったですが、大作になってしまうので省きます。もし希望があれば実装編を追記します。

次回

次回から実際にオセロAIを作っていきます。

次回はまずオセロゲームを作る話を予定しています。「そこからかよ!」という突っ込みが飛んできそうですが、オセロAIを作る上で重要となるアイデアがここにあるのです。
個人的にはここの実装が一番楽しかったです。

ここまで読んでくださってありがとうございました。また読んでいただけると幸いです。
それでは。