麻雀AI NAGAの分析結果活用Tips

NAGAによる分析結果のURL共有

現状、カスタム牌譜に対する分析結果をURLで共有し誰でもビューアで閲覧可能です。
例えばMリーグの牌譜も天鳳牌譜エディタで入力(1局5分程度)すれば、分析結果は共有可能。「分析」に対するマネタイズはするけど「分析結果の閲覧」に対しては今のところ完全にオープンってことらしいです。ドワンゴさんは、将棋の時もそうだけど、ゲーム分析文化に対してのオープンな姿勢があり、リスペクトしちゃいますね。Mリーグ牌譜に対する分析結果はそこそこいいネタだと思いますが、、、実はマズいってことなら消します笑。

11月8日1戦目東1(多井さんが珍しく12000打った局)
同じく南2 (下でHTMLを説明してる局)

HTMLダウンロードによる詳細データ解析が可能

下の画面で、レポートURL列の「解析レポート」ボタン上で右クリックし、「リンク先を別名で保存」を選択すると、分析結果がtextデータとして含まれるHTMLファイルをダウンロードすることができます。

スクリーンショット 2021-11-14 22.27.21

HTMLファイルをテキストエディタで開きます。
ちょっと整形すると、こんな感じのデータがズラズラと並んでいます。基本的な見方を下で説明します。開発できる人は、普通にあーしたりこーしたりしてください。

スクリーンショット 2021-11-14 22.51.08


ダウンロードしてきたHTMLファイルは、基本的に以下の構造になっています。
①開局情報部分
 ②ツモ時点データ
 ③捨て牌時点データ
④終局情報部分

誰かがツモって捨てる度に②、③が繰り返される、ということです。

上に貼り付けた画像は、この局面の②です。

スクリーンショット 2021-11-14 23.06.51

"left_hai_num": 6 残り牌数です。局表示の下に小さく6とありますね。
"real_dahai": "W" 実際に打った赤枠の牌が西であることを示します。
"pred_dahai": "W" NAGA推奨の紫枠牌が西であることを示します。
"dahai_pred": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2429, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 7554, 0, 0, 0, 0] 1m-9m,1p-9p,1s-9s,東南西北白発中の順に打牌推奨値を1万分の1表記で持っているようです。

以下のデータは基本的に、起家から順に記載されています。視点によって見えている情報が違うので、各者の主観的な確率として持っているわけですね。
"game_rank": [[3323, 3474, 2192, 1009], [3374, 3018, 2184, 1421], [1422, 2917, 3782, 1877], [1341, 1135, 1696, 5826]]
半荘終了時の予想順位分布 起家の瑞原選手が1位33.23%、2位34.74%、3位21.92%、4位10.09%、松ヶ瀬選手が1位33.74%、2位30.18%、3位21.84%、4位14.21%というふうに見ます。
"kyoku_rank": [[1340, 7514, 860, 283], [6846, 2253, 789, 111], [8, 897, 8976, 117], [12, 9, 17, 9960]]
同様に局終了時の予想順位分布です。
"end_type": [[1707, 1046, 0, 712], [547, 726, 225, 904], [757, 1080, 1595, 1752], [6989, 7148, 8180, 6632]]
これは、画面に表示されている終局タイプ別の確率ですね。これも起家から順に記載されています。
"tenpai_s": [5054, 3068, 2041, 7330] 起家から順に、下家の聴牌確率1万分の1表記
"tenpai_t": [2995, 1487, 7213, 4706] 同様にトイメンの聴牌確率
"tenpai_k": [1757, 7036, 4133, 2651] 同様に上家の聴牌確率

で、面白いのが、牌種別の危険度です。これ、全員の34牌種分持ってるんですね。見方は上と同じで、danger_sが下家に対する危険度で、それを起家から順に1万分の1表記しています。つまり瑞原視点の対松ヶ瀬危険度、松ヶ瀬視点の対瀬戸熊危険度、瀬戸熊視点の対多井危険度、多井視点の対瑞原危険度、の順です。
danger_s
[0, 127, 0, 2497, 1647, 1448, 3050, 1209, 0, 702, 1053, 4393, 2142, 2111, 3115, 0, 0, 220, 0, 64, 0, 77, 77, 0, 0, 845, 0, 0, 36, 27, 0, 0, 0, 0],
[0, 0, 1022, 1489, 586, 1335, 1353, 275, 0, 408, 381, 1682, 1036, 855, 1271, 197, 136, 0, 26, 0, 0, 0, 209, 61, 0, 601, 0, 0, 0, 0, 0, 0, 0, 0],
[138, 0, 615, 730, 303, 680, 550, 0, 0, 456, 392, 985, 850, 746, 775, 347, 0, 103, 230, 177, 0, 364, 0, 120, 220, 201, 0, 0, 0, 0, 0, 0, 0, 0],
[3826, 269, 6721, 7330, 925, 5590, 3575, 0, 416, 1, 0, 2864, 212, 126, 3681, 0, 7, 0, 0, 0, 0, 46, 0, 15, 39, 2432, 0, 0, 156, 34, 0, 0, 0, 0]]
だから多井さんから見て太字の3,4m辺りが瑞原さんに超危険、とNAGA的には推測できるってことになるわけですね。
同様にdanger_tが対トイメン、danger_kが対上家の牌種別危険度。

で、これがツモ番単位で見えるってことはですよ、捨牌が並ぶ度に危険度変化が観測できるってことで、つまりですね、牌譜エディターで捨て牌の並びをいろいろ作ってこのデータの変化を確認すれば、NAGAが何を根拠に危険度をどう変化させてるかが確認できるってことです。誤差がどの程度か、も含めて。

というわけで、私としては以下のような項目が気になるので、暇を見つけて検証してみよっかなと思ってます。
・NAGAは手出しツモ切りを見てるのか(端シャボ危険度とか)
・NAGAは壁、ワンチャンスをどの程度のリスクと見てるのか
・モロひっかけのリスクとそこまでの牌の並びによる差
・序盤捨牌による場況がどの程度影響するのか
・本来同じ確率となるものがどのくらいブレるのか(学習精度)
これらは手牌や捨て牌を一箇所だけ変えて差を取る偏微分的な方法で確認できるはずですので、やってみると面白そうです。というか誰かやって笑

あと、HTMLの最後の方を見るとですね、'umaoka': [42, 8, -15, -35]
って記載がありましてですね、これが固定だとすると、Mリーグより微妙にトップが偉くない想定での推奨打牌ってことになるなあ、と、どうなんだろ。

最後に

私はNAGAの強さって「よくある局面で取るべきリスクをしっかり取って上がりに向かう」精度が高いから、それをミス無くやるだけでも平均するとすげえ強いってことなのかなと思っていて、局面局面をしっかり検討した時の人間の精度(手役意識した危険度や期待値認識)にはまだまだ敵わないのかなと想像してます。あと実際の対局では人読みやメタ要素も大きいので、AIがエージェントとして同一の相手を想定するモデルだとそこの差は埋まらない気がしますね。NAGA呼んでどんどん対戦してくれっていうサービスも、「データいっぱい集めたいんや」の一環だと思うんで、進化に期待してます。


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