投稿日:2022/08/31

学生時代に作ったオセロAIの話

こんにちは、fujiwaraです。
今日は、私が学生時代に作ったオセロAIについてお話しようと思います。

AIについて

AIブームは過去に何度が波がありましたが、今のAIは、レベルも市場規模も過去最高レベルだと思います。文章を入力するとそれをイメージした絵を描いてくれるAIが話題になってますね。絵の質も創造性もプロのクリエイタが身の危険を感じるレベルのようです。Google社の開発したLaMDAという会話AIは意識が芽生えたと話題になりました。意識が芽生えたと発言したGoogle社のエンジニアは解雇されてしまったようです(意味深)。彼とAIとの会話内容が公開されていますが、そう錯覚してもおかしくないレベルです。意識や感情とは何か、禅の言葉の解釈など、AIの語るそれらの回答は非常に興味深いものがあります。ちなみに、現在AIエンジニアの単価は非常に高額です。普通のエンジニアが月70~100万だとすると、AIエンジニアだと月150~200万くらいになっています。
私の学生時代もプチAIブームでしたが、当時はまさかこんなにAIが進化するとは思ってもみませんでした。例えば将棋のAIがプロ棋士に勝つなんて100年くらい先だと思っていました。そんな頃に、何か自分でも作ってみようと思ったのがオセロのAIです。

オセロについて

オセロのルールについてはおそらくみなさんご存知かと思うのですが、簡単に言えば、黒(先手)と白(後手)で交互に石を置いていって、自分の石で挟んだ相手の石をひっくり返して自分の石にする、というのを繰り返して最後に石数の多いほうが勝ちというものです。オセロの盤面は↓こんな形で、石を2目ずつ置いた状態からスタートです。赤は「隅」、黄色は「星」といわれる地点です。
banmen

では、どういう基準で手を決定していくか、というAIの思考回路について次項より説明します。

~序盤~

始めはひたすら定石通りの手を選択します。定石はオセロを研究した人たちが「こうきたらこう打つのがベスト」と道筋を決めてくれたものです。定石にも何パターンかあるのですが、それらをなるべくたくさんAIに覚えさせて、相手が定石通りの手を打ってきたらAIも定石通りの手を打つようにします。定石が尽きるか、もしくは、相手が定石から外れた手を打ってきたら中盤へと移行します。

~中盤~

まず、私自身オセロは全くの初心者だったので、オセロの本を読み漁ってその結果たどり着いた私なりの攻略法が以下3点です。
※他にもあった気がしますが記憶の彼方です。。

  1. 始めはなるべく自分の石数が少ないほうが有利。
  2. 隅をとるとかなり有利。
  3. 星に自分の石がくるとかなり不利。

これを踏まえて、まず数手先(3手先か4手先だったかうろ覚えです)のあらゆる局面を内部的に作って、局面ごとに点数をつけます。どう点数をつけるかというと、1.より、自分の石数が少ない局面ほど点数は高く、逆に自分の石数が多い局面ほど点数を低く設定します。更に2.より、隅がとれる局面は点数をかなり高く設定します。また3.より、星に自分の石がくる局面は点数をかなり低く設定します。それぞれ具体的にどれくらいの点数を設定したかは覚えていません。。
局面毎に点数をつけ終わったら、1手毎にそこから派生する全ての局面の点数の中で最小点数を見つけます。例えば、現局面でA, B, Cという3つの手が打てるとします。Aから派生するあらゆる局面の中で最小の点数が500点だとします。同様にBは400点、Cは600点だとします。そしたらその中で最大点数となる手を選択します。例だとCです。どういうことかというと、その手を打ったときの最悪のケースを想定して、その被害が一番少ない手を選ぶ、というイメージです。始めは最高のケースを想定して最高の手を選ぶようにしていたのですが、それだと安定しませんでした。
さて、盤面残り10手ほど(うろ覚えです…)になったら終盤へと移行します。

~終盤~

終盤では、その手から派生する最後の局面まで読み、勝つ局面の数と負ける局面の数から勝つ確率を計算し、その中で一番勝つ確率の高い手を選択します。例えば、現局面でA, B, Cという3つの手が打てるとします。Aでは勝つ確率90%、Bでは80%、Cでは85%だとすると、Aを選択します。

まとめ

当時の環境はWindows95の低スペックのPCでした。言語はCです。AIの強さは、私が相手だと10回中7, 8回はAIが勝ちました。試しにファミコンソフトのオセロゲームと戦わせてみたところ、確かレベルが5段階あったうち3段階目まではAIが勝てたと記憶しています。
かなりの時間と情熱をかけて作ったプログラムはFDに保存していたのですが、今やどこにもありません。勿論当時のPCも。。ちなみにFDはフロッピーディスクという古代の記憶媒体です。せめてこうして記録を残してあげることで、当時の自分が少しは報われるのではないかと思いペンをとった次第です。