0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

麻雀AIの精度を+8pt上げたのは「入力の見せ方」だった。入力を壊して分かった、AIが頼っている情報【詳細①】

0
Last updated at Posted at 2026-10-27

はじめに

網羅編で、「入力のまとめ方を変えただけで、人間の打牌との一致率(Top-1)が+8ポイント上がった」と書きました。この記事はその詳細編①です。

  • 何を変えたのか(最初の設計と、今の設計 v3)
  • どんな局面で良くなったのか
  • 入力を1種類ずつ壊すと、何が効いていると分かるのか
  • 「点数や順位のような、使わないと思っていた情報が実は効いていたのでは?」という疑問への答え

ここで言う精度は人間の打牌との一致率で、麻雀の強さではありません。モデルは各1本(seed 1)です。

比べた2つのモデル

最初に作ったモデルは、手牌・河・ドラなどを平らな1本の特徴ベクトルにまとめて、全結合層(MLP)で混ぜていました。これを「最初の設計」と呼びます(late fusion)。精度が思ったほど伸びず、牌ごとにトークンを作って1本の系列にする今の設計(v3、early fusion)に作り直しました。

この記事は、その作り直しで何が変わったのかの記録です。情報は同じで、混ぜ方だけが違う2つのモデルを比べます。

最初の設計(late fusion) v3(early fusion)
イベント系列(ツモ・打牌・鳴きの時系列) Transformer 6層に通して1本のベクトルにまとめる 牌トークンと一緒に、1本の系列として Transformer 6層に通す
局情報(点数・順位・風など)と牌ごとの情報 局情報41次元と、牌ごとの20チャネル×37牌を平らにした781次元をMLPに通す 局情報は1トークン、牌は37トークン。牌ごとの情報はそのトークンに乗ったまま
出力 2つのベクトルをつなげて出力MLP 各牌トークンの最終隠れ状態に共通の Linear(256→1) をかけ、牌ごとにスコア

入力の系列構造

最初の設計は、「どの値がどの牌のものか」を、平らにした表からMLPが学ぶ必要があります。v3 は、値が牌トークンに付いたまま、その牌が自分のスコアを出します。

そろえた条件は次のとおりです。

  • データ: 天鳳2023年(鳳凰卓、4人打ち・赤あり)。学習は2023年のtrain 約5,580万局面、1エポック(27,244 step、バッチ2,048)、学習率3e-4、seed 1
  • 評価: 同じ年のvalid 19,343試合。強制ツモ切りを除いた約872万局面
  • 共通: 幅256、8ヘッド、FFN 1024、Pre-norm、同じイベント埋め込み
  • どちらも、牌効率やシャンテン数などの派生特徴は使っていない(牌の基本チャネルだけ)

結果は次のとおりです。

最初の設計 v3 差(95%区間)
ツモ後の打牌 68.90% 77.14% +8.24pt
鳴いた直後の打牌 67.29% 79.76% +12.47pt
全局面 68.83% 77.25% +8.42pt [+8.39, +8.45]

区間は試合単位のブートストラップ(2,000回)です。網羅編の 68.9% → 77.1% は、このうちツモ後の打牌の値です。

パラメータ数では説明できない

「v3 の方が大きいモデルだから」ではありません。

パラメータ数 推論FLOPs(系列長33)
最初の設計 5,232,678 2.09億
v3 4,824,833 4.47億

v3 はパラメータが約8%少ないです。一方、計算量(FLOPs)は約2.1倍です。v3 は牌トークン37個と局情報トークン1個を系列に足すので、Transformerが処理するトークン数が増えます。計算量の増加が改善の一部を説明する可能性は、この比較では排除できていません(計算量をそろえた学習はしていません)。

どんな局面で良くなったのか

局面を層に分けて、Top-1の改善量(v3 − 最初の設計)を比べました。

層ごとのTop-1改善量

層 局面数 最初の設計 v3 改善
聴牌 1,034,350 75.57% 90.39% +14.82pt
1向聴 2,618,791 68.97% 79.87% +10.90pt
2向聴 2,804,917 68.33% 75.37% +7.04pt
3向聴以上 2,257,420 66.20% 70.52% +4.32pt
他家リーチなし 7,159,580 68.82% 76.96% +8.14pt
他家リーチあり 1,555,898 68.86% 78.55% +9.69pt
1〜6巡 4,493,854 68.03% 74.87% +6.84pt
7〜12巡 3,124,476 68.95% 79.60% +10.64pt
13巡以降 1,097,148 71.74% 80.30% +8.56pt

(どの区間の幅も±0.1〜0.2pt程度です。)

  • 手が進んでいるほど、改善が大きいです。聴牌では最初の設計でも75.6%ですが、v3 は90.4%まで届きます
  • 他家リーチ中、鳴いた直後、中盤も大きく伸びています

聴牌の打牌は「待ちが残る牌を選ぶ」「当たり牌を避ける」判断で、牌ごとの残り枚数や他家の現物が決め手になります。牌ごとの数量が決め手になる局面ほど、改善が大きいという並びです。

一方、点数・順位・親・オーラスで分けた層では、改善量はほぼ同じでした。

層 改善
自分の順位 1位 / 2位 / 3位 / 4位 +8.38 / +8.40 / +8.38 / +8.51pt
子 / 親 +8.41 / +8.44pt
オーラス以外 / オーラス +8.45 / +8.10pt

入力を壊して、何を使っているかを調べる

「どこで良くなったか」の次は、「何を使って良くなったか」です。学習済みモデルの入力を1種類ずつ、同じバッチ内の別の対局の局面の値に差し替えて、Top-1の落ち方を見ました。大きく落ちる入力ほど、モデルがそれを使っています。

入力を壊したときのTop-1の低下

(2023年validの約43.6万局面、強制ツモ切りを除く。)

壊した入力 最初の設計の低下 v3 の低下
牌ごとの見えている枚数 7.0pt 34.9pt
牌ごとの残り枚数 9.5pt 40.8pt
手牌 33.0pt 24.5pt
イベント系列(河・ツモの時系列) 20.2pt 27.8pt
他家の現物(3人分) 0.9pt 3.5pt
点数・順位 0.2pt 0.8pt
風・親 1.5pt 2.2pt

v3 は、牌ごとの「見えている枚数」「残り枚数」に強く頼っています(−35pt、−41pt)。最初の設計は同じ情報を持っているのに、ほとんど頼れていません(−7pt、−10pt)。平らにした表の中から、「この値はこの牌のもの」という対応を学べていないのだと考えています。

さらに、改善が大きかった局面と、頼り方の差が大きい局面が同じ向きに並びました。

シャンテン数 見えている枚数・残り枚数を壊した低下(v3 − 最初の設計)
聴牌 +46.1pt
1向聴 +34.5pt
2向聴 +28.4pt
3向聴以上 +24.5pt

リーチ中の現物

他家リーチ中に、他家の現物のチャネルを壊すと、次のようになります。

最初の設計 v3
他家リーチ中 −0.3pt −16.9pt
リーチなし −1.0pt −0.6pt

最初の設計は、リーチ中でも現物の情報をほとんど使えていません。v3 の「他家リーチ中の改善が大きい」(+9.7pt)ことは、これで説明できます。

「点数・順位のような、使わないと思っていた情報が効いていたのでは?」

上の表を見ると、小さな寄与は実際にあります。

  • 点数・順位: v3 の方が最初の設計より0.53pt余計に落ちる(95%区間 [+0.46, +0.60])
  • 風・親: 0.69pt(区間 [+0.61, +0.77])
  • オーラスでは、点数・順位の差が1.92pt([+1.63, +2.21])まで大きくなる

v3 の方が、点数・順位のような静的な情報を少し多く使っています。ただし、大きさは牌ごとの数量(見えている枚数・残り枚数)の1/50以下です。それに、改善量そのものはオーラスでも他の局面と変わりません(+8.10pt 対 +8.45pt)。

結論は、「小さな寄与は実際にあるが、+8ポイントの主な出どころではない」です。効いていたのは新しい情報ではなく、最初の設計も持っていた牌ごとの情報を、使える形で渡したことだと考えています。

牌効率やシャンテン数などの派生特徴を追加しても、差は0.1ポイント未満でした(seed 1本)。入力に枚数や河や現物が入っていれば、モデルが自分で導けているようです。

限界

  • モデルは各1本(seed 1)、2023年だけ、1エポックです。区間は試合の抽出のばらつきだけで、学習のseedによるばらつきは入っていません。16年分で学習した最終モデルで、同じ形になるかは確かめていません(最初の設計の16年分モデルがありません)
  • 入力の差し替えは、局面として矛盾した入力を作ることがあります(手牌と合法手が合わないなど)。低下の絶対値は「その情報が無い状況」の値ではなく、最初の設計とv3の比較と順位を見るものです
  • 入力のまとまりは互いに独立ではありません(見えている枚数と残り枚数は手牌と関係します)。単独で壊した値は足し合わせられません
  • 「最初の設計が牌と数量の対応を学べていない」のは、推論時の依存の差から考えた説明です。確かめるには、最初の設計に牌トークン単位のスコアだけを足した条件で学習する実験が要ります(未実施)
  • 計算量の違いを統制していません(上記)
  • 層ごとの比較は多重比較の補正をしていません

まとめ

  • 同じ情報・同じデータで、混ぜ方だけを変えると、Top-1が68.8% → 77.3%(+8.4pt)
  • 改善は、聴牌・1向聴、他家リーチ中、鳴いた直後など、牌ごとの数量が決め手になる局面に集中する
  • v3 は「見えている枚数」「残り枚数」(−35pt、−41pt)、リーチ中の現物(−16.9pt)に強く頼る。最初の設計は同じ情報を持っていても、ほとんど頼れていない(−7pt、−10pt、−0.3pt)
  • 点数・順位のような静的な情報はv3 の方が少し多く使うが、主因ではない
  • パラメータ数は新の方が少ないが、計算量は約2.1倍

次の詳細②では、AIは相手のリーチで降りるのか、安牌を持つのかを調べます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?