見出し画像

【Suphx論文解説②】麻雀AIの基本(行動決定フロー)

前回の記事ではSuphxには三つのテクニックを適用していると説明しましたが、その前にSuphxの全体像を確認しておく必要があります。

論文では下記2つが取り上げられています。

・行動決定フロー(Decision Flow)
・特徴量とモデル構造(Features and Model Structures)

今回はSuphxの行動決定フローについて説明していきます。

Suphxの行動決定フロー

Suphxは下図のフローチャートで「リーチ」や「鳴き」などの行動を決定します。

スクリーンショット 2020-10-08 21.48.01

この図は左半分がツモ番、右半分は待ち番での行動決定フローです。上部にあるオレンジの四角が起点となっています。

緑のひし形では実際にその行動をするかどうかを判断します。それぞれ「〇〇モデル」のように呼ばれていますが、”モデル”というのは学習済みのAIみたいなイメージです。各モデルはそれぞれが独立したAIだと思ってください。

※左下の"Can Riichi"から下に伸びる矢印は誤植です。YesではなくてNoですね。


1つの戦略モデルと5つの戦術モデル

 Suphxは合計6つのモデルによって成り立っています。

戦略モデル

・アガリ判断モデル(Winning model)

戦術モデル

・打牌選択モデル (Discard model)
・リーチ判断モデル(Riichi model)
・チー判断モデル (Chow model)
・ポン判断モデル (Pong model)
・カン判断モデル (Kong model)


1つはWinning Modelと呼ばれる最適なアガリを判断するモデルです。これは要するに「オーラス時にラス確のアガリをしない」という鉄のルールを課すものです。半荘全体を通して最適な行動を判定するのでここでは戦略モデルと呼ぶことにします。

※ 論文にはオーラス時(the last round of the game)と明記されています。なのでSuphxは理論的には南3で見逃したり安目拒否をしないことになります。オーラス満貫条件にするために見逃しフリテンツモなどはしないということです。ここら辺は今後確かめていきたいですね。

残り5つは各局で鳴きやリーチなどの行動を判断するモデルです。その局面における最適な行動を判定するのでここでは戦術モデルと呼ぶことにします。

それぞれの戦術モデルはどれくらい妥当な選択であるかを表す「信頼度スコア(Confidence Score)」を出力します。チーもポンも出来る場合は信頼度スコアの高い方の行動が優先されます。

各モデルの学習方法やネットワーク構造などは次回取り上げます。


ツモ番での行動決定

まずはツモ番から見てみます。

スクリーンショット 2020-10-09 0.45.11


Suphxは牌をツモってくると

①ツモ(Win)れるか → ツモるべきか?

を判断します。オーラス以外はツモって次局です。

アガらない場合は

②カンできるか → カンすべきか?

③リーチできるか → リーチすべきか?

と判断していきます。カン出来る場合はリンシャン牌をツモるのでまた同じループを繰り返します。ちなみにClosed Kongは暗カンでAdd Kongは加カンです。

リーチ判断ではリーチすべきどうかを判断しています。ダマにすることもあります。リーチ出来なければ捨てる牌を選んで終了です。

※ここで注意が必要なのですが、リーチ宣言牌をどれにするかは「リーチ判断モデル」ではなく「打牌選択モデル」によって行われます。手役だけでなく安全度も考慮されていると考えられます。

余談ですが、Suphxは頻繁にツモ切リーチをすることで有名です。


その原因は「(リーチ出来たとしても)リーチ判断モデルから出力される信頼度スコアが低いため」であると考えられます。テンパった時点では信頼度スコアが低かったが、次のツモで信頼度スコアが閾値を超えたためリーチに踏み切った…という状況です。やはりSuphxのツモ切リーチは気まぐれではなく、しっかりと計算されたものであることがわかります


待ち番での行動決定

スクリーンショット 2020-10-09 0.47.31

次に右側の待ち番での行動決定を見てみます。右のオレンジの四角(Other player discards a tile)がスタートです。

やっていることは簡単で、まず相手の捨て牌に対して

①ロン(Win)できるか? → ロンすべきか?

を判断します。ロンした場合はそこで局が終了です。先ほど説明したWinningモデルによって判定しているので、オーラスで捲れない場合は見逃すことも可能であると考えられます。

※ 僕自身としては実際にSuphxが見逃しを選択した場面は見たことがありません。推測ですが、そもそも見逃しが必要にならないように右側の打牌選択モデルが機能しているのだと思います。

ロンできない場合は鳴き判断に入ります。

②チーできるか? → (どの牌を)チーすべきか?

③ポンできるか? → ポンすべきか?

④カンできるか? → カンすべきか?

を判断していきます。

もし鳴けない場合は次のプレイヤーのツモ番に移ります。鳴ける場合は、どの鳴きが一番信頼度スコアが高いのかを判定します。

画像2

例えば、このような牌姿から1pをポンするかチーするかは信頼度スコアによって決まるということです。

もし他家のポンと被ってしまった場合はポン優先となり、また同じループの繰り返しとなります。カンの場合はツモ番ループに突入します。



出来るだけ麻雀プレイヤー目線で書きました。次のネットワーク構造と特徴量設計もわかりやすく書けるように頑張りたいと思います。


この記事が気に入ったらサポートをしてみませんか?