Muse用アルゴリズム v1 — 重み追加学習版
2026年11月4日

Museまたは自分が1席、追加学習したAIが3席を担当する四人麻雀です。
半荘・東風・一局を選べます。AIは自分の手牌と公開情報で判断します。

【起動】
1. ZIPを新しいフォルダに展開し、Python 3.12を用意します。
2. 展開先で実行: python launch.py
   Linux / macOSでは python3 launch.py の場合があります。
3. http://127.0.0.1:8765 を同じ環境のブラウザで開きます。終了は Ctrl+C。
初回のみ依存パッケージの取得にネット接続が必要です。
初回は固定版の元モデルを取得し、同梱の学習済み出力層を適用します。
以後は追加学習済みmodel.onnxを使います。学習の実行は不要です。
Python 3.10〜3.12、x64版Linux / Windows、およびMacに対応します。
対応環境すべてで今回検証したという意味ではありません。

【Museへの指示例】
添付ZIPを展開してREADME.txtを読み、起動してください。
Museの席で、自分の手牌と公開情報だけを使ってAI3人と半荘を打って。
相手の手牌や山牌を調べず、終了後に結果と印象的な局面を報告して。
ブラウザが使えなければテキスト対局で進めてください。

Muse自身による操作は未検証です。Muse側で展開・起動してください。
別PCのlocalhostへ、Museのクラウド環境からそのまま接続はできません。
テキスト対局: python launch.py --terminal

【今回の重み変更】
Mortal-S42由来のONNXモデルの出力層を追加学習しています。
dqn.net.weight と dqn.net.bias の行動評価部分を変更し、ONNXに保存済みです。
元の局面と萬子・筒子交換後の局面の平均評価値を教師にする自己蒸留です。
学習時の修正量を半分に抑えて採用しました。特徴抽出器・正規化統計・
局面価値の行は固定しています。全層の再学習や、新規自己対戦による
大規模な強化学習ではありません。

学習用24半荘と未学習の検証用8半荘を、配牌の種ごとに分離しています。
棋力はさらに別の配牌による旧版との48半荘で評価します。
教師の評価値への一致度だけでは棋力向上を証明できません。
実測値と結論は「追加学習と検証.txt」を参照してください。

【旧版との比較】
  python launch.py --ai strong
    前版S42+。元の重み＋二重評価＋半荘の終盤処理。
  python launch.py --ai baseline
    原版S42。元の重み＋一回評価。
weights/base-head.npzから元の出力層を復元します。

【記録】
training/report.json               学習条件・変更数・ハッシュ・検証値
training/data-manifest.json        データ分割と元牌譜のハッシュ
training/evaluation-plan.json      対戦前に固定した評価条件
training/table-check.json          画面用対局エンジンの完走記録
evaluation/weights-v1/summary.json 新旧比較の全結果と信頼区間
evaluation/comparison/             前版の集計。学習用牌譜は再生成します
前版の改良と検証.txt                前版の資料。今回の学習結果ではありません

【再現】
初回準備を済ませた後、展開先で実行します。Windowsでは .venv/bin/python を
.venv\Scripts\python.exe に読み替えます。
  先にtraining/README.mdの手順で元牌譜を再生成してください。
  .venv/bin/python train-weights.py cache --logs training/source-logs
  .venv/bin/python train-weights.py fit
候補はmodel-trained.onnxに保存され、使用中のmodel.onnxは上書きしません。
前の学習記録を残す場合は --cache と --report で別の保存先を指定します。
  .venv/bin/python -m unittest test_ai -v
  .venv/bin/python test-weights.py -v
  .venv/bin/python benchmark.py --seeds 24 --start 93000 --key 20261104 --threads 3 --output 新しい比較結果
比較対象は旧版strongと新版museです。既存の空でない出力先には書き込みません。
同じ旧版同士の対照試験は --self-check --seeds 1 を指定します。

【由来とライセンス】
Mortal公式の新モデルではなく、個人用に追加学習した派生モデルです。
Mortal-S42: https://huggingface.co/haor/Mortal-S42
ONNX元モデル: https://huggingface.co/xzhe121/Mortal-S42-onnx
Mortal / libriichi: https://github.com/Equim-chan/Mortal
RiichiEnv: https://github.com/smly/RiichiEnv
初回取得するlibriichi: https://github.com/shinkuan/Akagi-MjaiBot-Mortal
重みはApache-2.0、Mortalと追加コードはAGPL-3.0-or-later。
NOTICE.txt、LICENSE-MODEL.txt、LICENSE-MORTAL.txtを同梱しています。
README-UPSTREAM-MODEL.txtとupstream-model-identity.jsonは変更前の資料です。
