見出し画像

麻雀AI「Mortal」の牌譜検討で雀力向上! 使い方を詳細に説明!

 みなさまどうも、珍しく流行りの話題に乗りたくなった最高級牛肉です。普段は2~3周回遅れくらいが基本の牛歩マンです。
 今回は近頃噂のあいつ、麻雀AIのMortalくんを用いた牌譜の検討の方法について書いていきます。n番煎じではありますが、せめてかゆいところまであと1~2cmくらいの距離までは手が届くように、具体的にはそのテキストに一通り触れるように頑張ってみましたので、諸々笑ってご容赦いただければ幸いです(文中にミス等々ございましたら、是非是非ご指摘ご教示くださいませ)。

★8/15追記:Mortalがバージョンアップしました!
 アップデートにより一致率が実装されるなどしました。詳しくはこちら。


Mortalとは?

「Mortal」とは、Equim氏によって開発された麻雀AIです(※1)。天鳳7~9段相当の実力があるとされている麻雀AI「Akochan」よりも強いとのことなので、天鳳初段の筆者からしたら『めちゃくちゃ強いAI!』って感じです。
 それにくわえて、このMortalくん、なんと牌譜の検討も行ってくれます。しかも無料で。さらには天鳳と雀魂の2つの牌譜に対応。あなたが神か。
 特に初級者~中級者くらいの方には効果やメリットが非常に大きいと評判のMortalの使い方をまだご存知ない方は、是非このnoteで覚えていってください(必要な部分だけ飛ばし読みすればOKです!)。

※1:2022年6月26日に「mjai-reviewer 1.0.0」のエンジンとしてリリース。

 では早速、Mortalの牌譜検討の使い方を見ていきましょう!




使い方1. 牌譜のURLをコピーする

 まず最初に、Mortalくんに検討して欲しい牌譜のURLをコピーしてきましょう。
 雀魂であれば基本画面の右下の「牌譜」→検討したい牌譜の右上の「シェア」→「httpsの部分から末尾まで選択してコピー」でOK。

画像1. 雀魂のホーム画面→「牌譜」
画像2. 雀魂の牌譜画面→「シェア」→URLをコピー


 天鳳のWeb版であれば「牌譜」画面→検討したい牌譜の上で右クリック→「URL(アドレス)をコピー」でOKです。

画像3. 天鳳Web版の牌譜画面→右クリックからURLをコピー


 なお、自分自身の牌譜はもちろんのこと、他の人の牌譜についても、雀魂牌譜屋さんやnodocchi.moeさんの天鳳IDログ検索などから探すこともできます(後者は基本的に有料会員の期間内にプレイされた試合のものに限られますが)。

画像4. 雀魂牌譜屋さんの対戦記録画面からURLをコピー
画像5. nodocchi.moeさんの天鳳IDログ検索画面からURLをコピー




使い方2. Mortalのページに行く

 牌譜のURLがコピーできたら、次にmjai-reviewerのサイトに行きましょう。ここがMortalくんのおうちです。


 使い方はごく簡単。以下の通り、わずか3ステップでOKです!(※2)

画像6. 手順1~3(下記参照)
(画像クリックで拡大できます)


手順1.「天鳳または雀魂の牌譜URL」の欄にコピーしておいたURLを貼り付ける(※3)。

手順2.「私は人間です」と書かれたバナーをクリックし、適切な画像を選択してから「チェック」ボタンを押す。わりとムズいものもある。

手順3.「送信」ボタンを押す。


※2:「対象プレイヤー」はコピーしたURLから自動的に指定を読み取ってもらえるので、いじらなくてOK。「使用するAI」もデフォルトがMortalくんになっているので、いじらなくてOKです。
※3:Mortalのページのトップにも書いてある通り、Mortalによる検討は「四麻」「段位戦」「半荘戦」の牌譜に限られます。条件に合わない牌譜URLにはエラーが返されます。

 そこまで操作すると読み込み中の画面が表示されますので、そのまま15秒ほど待ちましょう。自動的に牌譜の検討画面に移動してくれます。はやい!

画像7. 読み込み中の画面(すぐ終わる)




使い方3. Mortalの検討画面の見方

 さあ、いよいよ牌譜検討画面です! が、「何となく分かるから細かい説明はいいや」って方はここまでで大丈夫! お疲れさまでした! 「ひとつひとつ細かく見ていきたいなー」って方はもう少しお付き合いください!

画像8. 牌譜検討画面
(画像クリックで拡大できます)

★Layout: Vertical Horizontal
 Mortalは局ごとに「Replay viewer(牌譜ビューア)」を呼び出して、実際の牌譜を見ながら検討ができます。そのレイアウトの指定です(VerticalとHorizontalはそれぞれ垂直と水平の意味です)。
 ちなみに圧倒的にHorizontalがお勧めです(デフォルトはVertical)。


★Game Summary:見たまんま。東1局から終局まで、各局どう決着がついたかの簡易一覧表示。
・Tsumo、Ron、Self、Ryuukyoku:それぞれツモ、ロン、自家、流局。そのまんまだけど念のため。


★Metadata:メタデータ。詳細は以下の通り。

画像9.メタデータ(これを説明したかったのでこのnoteを書いた.その1)
(画像クリックで拡大できます)

・engine:使用エンジンがMortalかAkochanか。
・softmax temperature (τ):温度付きソフトマックス関数。ものすごく大雑把に言うと「機械学習における学習方法のひとつであり、その関数」。たぶん。値が低いと「高い確率」が強調されるらしい。使用者が気にする必要は全くない。
・game length:東風戦か半荘戦か。現時点では、Mortalは半荘戦のみ対応。
・player id:0~3までの値を取る。0が東1局0本場の起家(東家)で、3が北家。
・log id:何のログIDなのかよくわかんない。たぶん使用者が気にする必要は全くない。
・loading time:読み込み時間。us=µs=マイクロ秒(microsecond)、ns=ナノ秒(nanosecond)。使用者が気にする必要は全くない。
・review time:検討処理時間。s=秒(second)、ms=ミリ秒(millisecond)。Mortalはこれがめっちゃ速いが、使用者が気にする必要は全くない。
・rating:評価値、のようなもの。Mortalにとっての誤打との差が少なければ高評価になるらしい。一説によると魂天平均でふわっと88くらいだとか、90超えてたらかなりいい部類だとかなんとか(※4)。ご参考までに、天鳳四麻初段、雀魂四麻雀傑2の筆者が試しに検討してみた自身の最近の10半荘分のratingは76.735~86.274、平均値は81.568でした(※5)。
・mjai-reviewer version:そのまんまバージョン情報。
・generated at:検討結果の生成日時。生成後14日間はサーバー上に結果が保存され、それ以降は削除される。

※4:ゆうせーさんの配信より超ざっくり引用。
※5:たかだか10半荘分なので統計的有意性はゼロです。


★FAQ:よくある質問。重要っぽい部分のみ以下に意訳雑まとめ抜粋。
(これを説明したかったのでこのnoteを書いた.その2)

・三麻のデータも検討できる?
 → 三麻と四麻は完全に別ゲーなので無理。

・MortalやAkochanの強さはどの程度?
 → 少なくとも現時点ではMortalやAkochanは天鳳や雀魂で合法的に段位戦ができないので「天鳳○○段」といったような一般的な基準では表せない。

・MortalとAkochanの強さの比較は?
 → 天鳳/鳳凰卓/七段配分(90,45,0,-135)でMortal3体 VS Akochan1体でMortalの平均順位が2.479。一見「Mortalそんな強くなくない?」って思えるかもだけど、1試合あたりMortalは常に3体いるので、Mortal全体が達成可能な平均順位の理論値は1.0ではなく2.0になる点に注意(例:あるゲームの1着・2着・3着がMortal、4着がAkochanだった場合、そのゲームのMortalの平均順位は「(1+2+3)/3=2」となる)。

・(Mortal) 放銃率の項目はどこ?
 → AkochanにはあるけどMortalにはない。それぞれ別々の作者によって作られた別々の麻雀AIなので、互換性については期待しないでね。

・(Mortal) 表記の意味は?
 → Φ:この局(k)の開始時に推定されたポイントの動き(※6)。
 → Ppk:この局(k)の開始時に推定された各プレイヤー(p)に対応するそれぞれの確率の値(※7)。
 → Q^π(s,a):Q値(※8)。理論的には「ポイントの動きの推定値」。
 → πτ(a|s):要するにMortalのオススメ度であり、NAGAで言うところの「牌の上のバーの高さ」みたいなもの(※9)。厳密には別物だけど。

・(Mortal) 最善手以外のアクションの価値が軒並みやたら低いことがあるのは何故?
 → Mortalの目的は「麻雀で最高の成績を得ること」であって、「すべての選択の正確な価値を計算すること」ではないので、最善手以外のアクションの評価値が不正確になる可能性があるためです。Mortalおよび麻雀の性質上、すべての選択の評価値をより正確に解析しようとすると、かえって精度が落ちてしまうのよ(※10)。

※6:見た感じではポイント配分のことっぽいが、なんか見本ページを除いて「3,1.5,0,-4.5」で固定されてる気がする(天鳳初段の牌譜でも天鳳位の牌譜でも同じ数値だった)。今はこういう形らしい。
※7:なんて???(後ほど憶測で説明します)
※8:ざっくり、機械学習のうち強化学習と呼ばれる手法のうちのひとつであり、価値を表す値。「その瞬間に得られる価値」と「次のタイミングで得られる価値」の合計と定義されているとかなんとか。
※9:作者さんは「この項目、Mortalが内部でどのように動作しているかを理解していないと誤解を招く恐れが大きいし、削除しようかな」とも考えたらしいが、「でもやっぱりこれがあった方がぱっと見でなんとなく分かりやすいよね」という結論に落ち着いて残したらしい。
※10:Q. サルでもわかるように説明して!
   → A.「Mortalは検討用ではなく実戦用に最適化されています」




使い方4. 局ごとの検討画面の見方

 そんなわけでようやく本編に入りました。ここまで既に約4000字弱。

画像10. 局ごとのデータ
(画像クリックで拡大できます)

★Replay viewer:牌譜ビューア。
 → 文字をクリックすると天鳳の牌譜ビューアが起動するので「>>牌譜を再生」をクリック。
 → 画面をスクロールしても自動的に追尾してくれる。便利。
 → 雀魂の牌譜の場合も天鳳の牌譜ビューアの機能が使える。超便利。
 → マウスホイールでサクサク進めたり戻したりできるのでむしろ雀魂の牌譜画面よりもべnゲフンゲフン(マウスホイールで操作できない場合は別のブラウザを試してみると解決するかも)。
 → 手牌ON=ONにすると他家の手牌をオープンする。
 → 暗転ON=ONにするとツモ切りされた牌を暗く表示する。
 → 上南喰赤=部屋とルールの表示。雀魂の牌譜だと英語で表示される。
 → ○段=段位とレートの表示(R1800以上の場合)。雀魂の牌譜だと英語で表示される。雀傑2はExpert II、雀豪3はMaster IIIとかそんな感じ。
 → 手牌表示の部分をクリックすると自動的に「その手牌の状態の天鳳の牌理画面」を新しいウィンドウで開いてくれる(座席に関わらず全プレイヤーの手牌から行ける)。めちゃくちゃ便利。

画像11. 天鳳の牌理画面(めっちゃ便利)


★Final placement EV at ○○ start:局開始時点での最終順位の確率予測。

画像12. 最終順位予測と変動ポイント予測

 → Φn=[なんたら]・E[かんたら]=数字:「Φ=得点配分が「3,1.5,0,-4.5」だったとき」に「E=プレイヤーの段位ポイントがどれくらい変動するかの予測値」。たぶん。例えば実際は天鳳/鳳凰卓/七段配分(90,45,0,-135)なのであれば、単純に「E[かんたら]=数字」の数字部分を30倍すればよさそう。
 → score:局開始時点での持ち点。そのまんま。
 →1st ~ 4th prob%:局開始時点での最終順位の確率予測。主に持ち点と配牌に左右されているはず。たぶん。

★Turn、shanten、#n/nn :巡目、シャンテン数、その選択の推奨順位

画像13. いよいよ本題、1手ごとの検討画面
(画像クリックで拡大できます)

 → Turn:巡目の表示。
 → shanten:シャンテン数の表示。
 → #n/nn:その選択の推奨度合いの表示。画像13.の一番上の手牌だと14枚中11種類の選択肢があるが、プレイヤーの選択は上から2番目に推奨されるものだ、ということになる。なお、プレイヤーとMortalの選択が一致している場合には何も表示されない。
 → Draw:ツモってきた牌。
 → Player:プレイヤーの選択。Mortalの選択と違う場合、背景が赤くハイライトされる。
 → Mortal:Mortalくんの選択。AIならではの独特の癖はあるが、少なくとも天鳳上卓や雀魂金の間クラスの住民なら基本的にはMortalくんの教えに従った方が成績向上に繋がりやすいものと思われる……が、機械学習AIの常として、その選択の理由を教えてはくれない。このため、理由については自分で考えて推測したり、上級者に教えを乞うたりする必要がある。
 → Discard:捨て牌。
 → kamicha👈 cuts ○:鳴ける牌を捨てた他家とその牌の表示。
 → pass:鳴きや和了を行わなかった場合の表示。
 → Chii、Pon、Kan:チー、ポン、カン。
 → Riichi、Tsumo、Ron:リーチ、ツモ(和了)、ロン。
 → 詳細:クリックするとMortalくんの推奨度の順に並んだ選択肢の一覧が表示される。最重要機能。鳴き判断や見逃し判断についても同様に選択肢の一覧が出る。

画像14. 詳細表示
(画像クリックで拡大できます)

 → Action (α):その瞬間に取り得るすべての手の選択肢。
 → Q^π(s,a):超絶ざっくり言うと「ポイントの動きの推定値」。値が大きいほど良いはずではあるが、ここは見なくてもいい気がする。
 → πτ(a|s)×100Mortalのオススメ度であり、NAGAで言うところの「牌の上のバーの高さ」的なもの。すべての選択肢の数字を合計するとまあだいたい100くらいになる。そして、最も推奨される手と2番目に推奨される手の間に極端な差が生じることがわりとよくある(※11)(※12)。ともあれ、これが1未満の選択肢は論外だし、2倍以上の開きがある選択肢は基本的により上位のものを選べば牌理通りになるし、10~20以内程度の差であれば状況や判断次第でどちらも正しいと言えたりもする。

※11:圧倒的大差がついている手については、Mortal的には「実質的に選択肢がこれしかない」という状態であり、基本的に従った方が良い(99%推奨の手に従うと放銃しちゃうよ、なんてこともあるが、その場合は「むしろ放銃するのが正しい選択であり、そうしなかった場合、長期的には損の方が大きくなる」と理解すればいい)。
※12:FAQにもある通り、Mortalの目的は「麻雀で最高の成績を得ること」であって、「すべての選択の正確な価値を計算すること」ではないので、最善手以外のアクションの評価値が不正確になるケースは稀でなくよくある。あるのだが、Mortalおよび麻雀の性質上、すべての選択の評価値をより正確に解析しようとすると、かえって精度が落ちてしまう。つまり、最初から『そういう仕様』なので、それを念頭に置いて利用するのが良い。




まとめ(ここを読めば1分で完了)

・Metadataのratingも参考に
・レイアウトはHorizontalが超オススメ
・牌譜ビューアを見ながら検討しよう
・Mortalの選択と食い違ったら詳細から選択肢ごとの推奨度を確認
(2つ目以降の選択肢の評価は不正確である可能性があることに留意)
・難解な場面では牌譜ビューアから天鳳の牌理画面も確認しよう
・どうしても分からない部分は上級者に聞いてみよう
・無料で使えて、使えば使うほど上手くなれる! 使い倒して強くなろう!


最後に

 7000文字超とやたら長いnoteになってしまいましたが、100人中2~3人くらいはこういうのが好きなタイプの方が混じっていてくれると嬉しいです(ここまで読んでくださったあなたはたぶん該当するはず!)。

 繰り返しになりますが、天鳳鳳凰卓安定以上の力を持つ麻雀AIが、いつでも好きな時に好きなだけ、しかも無料でコーチをしてくれるのですから、Mortalならびに作者であるEquim氏には頭が上がりません。
 初級者~中級者くらいの方にとっては特に効果が大きいと評判のMortal。是非是非活用して、麻雀の上達に繋げていきましょう!




おまけ:Mortal関連の記事や動画

 NGワード:このおまけ部分さえあればこのnoteは不要なのでは?









 どれも大変素晴らしい内容です。是非是非ご覧ください!



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