ブログ

強い麻雀AI

19. October 2023 | 2 minutes read
Share this:

麻雀AIの簡単な概要

麻雀をプレイするための強力な AI を作成する試みには、かなり長い歴史があります。 まず最初に、Ruby で書かれた麻雀サーバーである mjai プロジェクト [1] と、モンテカルロ法に基づく 麻雀AI である mjai-manue プロジェクト [2] について言及する必要があるでしょう。 mjai ネットワーク プロトコルは、R Mahjong を含む多くの麻雀プロジェクトで使用されています。 また、オープンソース プロジェクト mjai-occam にも言及する価値があります。これは当時かなり強力な AI であり、Tenho で R1800 を超える評価に達しました[3][4]

真に強力な麻雀用人工知能を開発した先駆者は、水上直樹氏です。その AI はモンテカルロ シミュレーションと対戦相手のモデルに基づいて作成されました。 水上直樹が創作した爆打、初めて天鳳の鳳凰ロビーのゲームレベルに到達。爆打は、一般向けに提供された最初の強力な麻雀 AI でもありました。

その後、さらに強力な麻雀用AIが開発されました。 後者の中で特筆すべきは Super Phoenix と NAGA。

AI Super Phoenix( Suphx) は5つのCNNで構成されている。 各モデルは、まず人間のトッププレイヤーどうしの対戦の牌譜を用いた教師あり学習で訓練し、そして自己対戦による強化学習によってさらに性能を向上させた [5]。 Suphx AIさんが天鳳で8.4安定段位に達しました。 ただし、Suphx AI は一般の人が使用することはできません。 NAGA AIも高いレベルのプレイに達しています。 NAGA AIをベースとしたタイル解析サービス(有料)を開始しました。 なお、この2つのAI(Super PhoenixとNAGA)は大企業が開発したものである。

大企業が開発した麻雀AIのほかに、研究機関や独立系の開発者が開発した麻雀AIもある。 オープンソースプロジェクトもあります。

オープンソース プロジェクトの 1 つは Akochan [6] です。Akochan は、麻雀の抽象化として複数のマルコフ決定プロセス (MDP) を使用して、効果的な検索ツリーを構築します [7]。 麻雀で1 爆打、2 manue と対戦した場合、Akochanが 爆打 に対局力で大きく勝ることが示された [7]。 Akochanの欠点は、作業スピードの低さである。

言及する価値のある 2 番目のオープンソース麻雀 AI プロジェクトは Mortal [8] です。 モデルのトレーニングには、オフライン強化学習 (プレイされたゲームの記録に基づく) とオンライン強化学習の両方が使用されます。 Mortal プロジェクトの作者が実施したテストでは、ゲームの強さの点で Mortal が Akochan よりも大幅に優れていることがわかりました。 どうやら、現在 Mortal が最も強力な麻雀 AI であるようです。 モルタル・プロジェクトはインフラがよく整備されており、すぐにトレーニングができたり、他にもいろいろ面白いことができる。 Akochan と Mortal プロジェクトのおかげで、SUO AI (R Mahjong用 AI) のトレーニング時に発生したいくつかの問題が解決されました。 また、tenhoやmahjongsoulでプレイした対局を分析できる無料オンラインサービス(NAGAサービスの無料アナログ)もある。

既存の麻雀 AI の強さについては、私自身の (おそらく物議を醸すかもしれない) 評価を別の記事で述べたいと思います。 私の推測では、ゲームの強さの点で、『NAGA』は『Mortal』に大きく劣るとしか言えません。

結論として、麻雀 AI を作成するためのもう 1 つの興味深い野心的なオープン ソース プロジェクト、kanachan [9] について触れておく必要があります。 kanachanプロジェクトのアプローチは、より強力な表現フレームワーク(transformer など)に基づく大規模モデルを訓練するために、膨大な量のデータを使用することである。 この場合、「麻雀魂」の対局記録が使用されます (作者の kanachan は、「麻雀魂」の対局記録をダウンロードするためのライブラリも作成しました [10])。 Tこのプロジェクトの目標は、NAGA や Suphx などの既存のトップレベルの麻雀 AI、さらには人間の最高のプロ棋士にも勝つことができる麻雀 AI を作成することです。 残念ながら、著者はkanachan AIゲームの達成された強さを判断できるようなテスト結果を提供していない。

Super Oracle(SUO)

Super Oracle(SUO)は麻雀をするための人工知能です。 SUOは麻雀アプリ「R Mahjong」で使用されています。 SUO は、麻雀の各種意思決定を行うモデルを機械学習を用いて学習させ、そのモデルを用いて意思決定を行う。 SUOは5つのモデル(打牌モデル、チーモデル、ポンモデル、立直モデル、槓モデル)にCNNを使用している:

  • 打牌に際してどの牌を捨てるかを判断する打牌モデル。
  • リーチを行うかどうか判断するリーチモデル。
  • チーモデル、チーを行うか、また、行うとしたらどの牌でチーするかを判断。
  • ポンを行うかどうかを判断するポンモデル。
  • カンを行うかどうかを判断するカンモデル。

CNN の入力は、プレイヤーが観測した情報です。 入力データ構造の選択は、CNN の予測精度に大きな影響を与えます。SUOでは、出力層のサイズを除き、すべてのモデル(打牌モデル/立直モデル/チーモデル/ポンモデル/槓モデル)は同様のネットワーク構造を採用しています(図1)。

mahjong models
図 1: モデルの構造

各モデルには、10 個の残差ブロック、1 つの入力 CNN と 1 つの出力 CNN、および出力の高密度層が含まれています。 これらのモデルを用いて、SUO は図 2 のフローチャートに従って意思決定を行う。

suo flowchart
図 2: SUOの決定フロー

オーラスでの和了判断(最下位が確定する和了を避ける)などにヒューリスティクスをいれており。 CNN をトレーニングする場合、プロジェクト [6] および [8] が使用されました。

SUOの対局の強さを検証するために連荘が行われた。 プレイ数 3992 試合(半荘) 3SUO対1Akochan。 結果を表 1 に示します。

を表 1: 成績 3992試合(半荘)
麻雀AIエージェント 平均順位
Akochan 2.498
SUO 2.501




参考文献