麻雀AI研究  mjxビルド

2025/08/01(金) 19:50:11.98ID:JmmoHB6a
>>9
いまよく知られてる DL 系の麻雀 AI はどれもプレトレーニング用の牌譜が要るのがネックだね
Mortal は Mjai の mjson 形式、
Kanachan は雀魂の牌譜再生時の通信を傍受したバイナリデータ、
その他 OSS のプロジェクトは天鳳の mjlog 形式が多いかな

ネト麻の牌譜を使わないなら Akochan 同士の対戦で mjson の牌譜を作るのがいいんかね
でも Akochan は鳳凰卓の牌譜で統計データを作って参照してるから純粋じゃない?

山岡さんの dlmahjong は 0 から牌譜生成してるのが興味深いけど開発止まってるね
2025/08/01(金) 19:59:24.90ID:JmmoHB6a
>>9
mjai-manue は結構コードが少なくて勉強にはいいと思う
あと麻雀 AI 対戦サーバーのデファクトスタンダードである Mjai の作者による AI という記念碑的な意味もある
ちなみに Go 言語に移植した mjai-manue-go ってプロジェクトが最近できた
こっちは内部構造が整理されててさらにコードが読みやすくなってる

majiang-ai は作者がブログとか X でたびたび発信してるから参考になるかも
ただ個人的には結構検証が浅い気がするので結果は鵜呑みにできないかも
13焼き鳥名無しさん
垢版 |
2025/08/01(金) 20:01:00.75ID:aw0qNILC
>>11
牌譜生成の点でdlmahjongはだいぶ期待してたんだけどあれモデルの性能を可視化する段階までもいけてないからね、
現状実質なにもやってないようなもんなんだよな
開発止めてて悲しいよ

mortalたちは教師ありだし強化学習はないようなものだしね

akochanのアルゴリズムは知らなかったな
どちらにせよ自己対局で牌譜残すようにするにはそこそこ労力が必要そうだな

mjaiをローカルで立ち上げて学習するのが環境的には早いと思ったけどそうなるとrubyで1からAI書かないといけない

mjxはopen ai gymの閉鎖でもう動かなくなったと見ていいのかね
あれが一番手っ取り早いと思ってたんだが
14焼き鳥名無しさん
垢版 |
2025/08/01(金) 20:04:48.56ID:aw0qNILC
やっぱりmjaiでmjai-manueがすぐ実装できる点は評価するべきか

mjai-manueは少しバカにしてたけれどもAIと環境がサーバーを通してなにやり取りしてるかとか確認するためには有用なのかな
2025/08/01(金) 20:08:51.94ID:JmmoHB6a
>>13
Mortal は強化学習やってるよ
Suphx と同じで牌譜から大まかな打ち方をプレトレーニングした後自己対戦で強化学習してる

Akochan は論文出てる (自分は難しすぎて読めてない……)
https://arxiv.org/abs/1904.07491
2025/08/01(金) 20:11:20.24ID:JmmoHB6a
>>13
Mjai は TCP/IP で JSON をやり取りするだけだから何の言語で書いてもいけるよ
2025/08/01(金) 20:19:18.63ID:JmmoHB6a
>>13
誤解させたならごめん
Akochan には作成済みの設定ファイルが付属してるから実行はすぐにできる
むしろ付属以外のデータを使ってる人はほとんどいないと思う

Akochan はビルドがめんどくさいけど、
最近 Docker 内でビルドする akochan-docker ってリポジトリができたからそれを使えばすぐ試せるよ

ちなみに mjai-manue も牌譜から統計データと決定木を作成して参照してる
18焼き鳥名無しさん
垢版 |
2025/08/01(金) 22:53:47.82ID:EdYVqH65
>>17
全部ありがとう
週明けまた色々やってみる

akochanこう思うと全然触ってないのかもしれない
akochanとmortalをローカルでビルドするのを目先の目標にするよ

またアンカー飛ばすかもしれないがそのときはまたよろしくお願いします
2025/08/02(土) 05:57:49.47ID:yu6uLi16
>>18
頑張ってね

上でも言ったけど Akochan は以下のリポジトリを見ればビルドに最低限何が必要かわかるよ
ローカルでビルドするなら patch.sh の 3 つめの変更 (localhost から Docker コンテナ外に接続先を変える) だけ不要だね
https://github.com/Apricot-S/akochan-docker

Mortal はドキュメント通りにビルドするだけだね
https://mortal.ekyu.moe/user/build.html
20焼き鳥名無しさん
垢版 |
2025/08/04(月) 15:42:28.68ID:zlPiYrP4
>>19
mortalそのページに載ってるのは最後までできたんだけど,そのあとのトレーニングができないんだよね
https://github.com/Equim-chan/Mortal/discussions/57
ここ参考にすると,天鳳牌譜をmjai形式にしたあとにGzipしたjson.gzをデータセットにして,train.pyを実行したらmortal.pthができるのかね

ついでにmortalのdockerについてなんだけど,
https://mortal.ekyu.moe/user/docker.html
の「Prepare a trained model」で「snapshot mortal1-b40c192-t22040618」を使ってるみたいなんだけど,これなんのことかわかる??

今日はまだakochanに手つけれなかった;;
でもそのサイト参考にしたらビルドと実行もできそうだね!ありがとう!
2025/08/04(月) 19:43:34.31ID:4Wq1Zs7u
>>20
モデル名についてはあくまで推測だけど
mortal1-b40c192-t22040618 は

mortal1
Mortal v1 (鳳凰卓の牌譜を使ったモデル)

b40c192
Mortal/mortal/config.toml の

[resnet]
conv_channels = 192
num_blocks = 40

t22040618
2022年04月06日18時 (UTC? CST?)

例では Mortal v1を使って説明してるってことだね
2025/08/04(月) 19:59:00.73ID:4Wq1Zs7u
>>20
ごめん 自分は Mortal を動かしたことがないから確実なことは言えないけど
train.py より先に train_grp.py が必要っぽい
train.py での報酬計算に GRP (Global Reward Prediction) モデルを使ってるみたい

DeepWiki に聞くと色々詳しく解説してくれるよ
https://deepwiki.com/Equim-chan/Mortal
2025/08/04(月) 20:50:58.50ID:4Wq1Zs7u
>>20
ちなみに Mortal v3.1 では
mortal3-b24c512-t22122709
となってた
24焼き鳥名無しさん
垢版 |
2025/08/06(水) 14:52:19.06ID:dWMrSHtl
>>21
>>23
それわかるのすごいわ

>>22
なるほど、毎度助かります!
どちらにせよまずは教師データ集めだ
xmlで天鳳牌譜まとめちゃってるからちょっとめんどくさいけど頑張ります!
2025/08/06(水) 19:27:32.79ID:GATkyhzd
>>24
自分は使ってないけど、
このプロジェクトを使えばローカルの mjlog から mjson に変換できるっぽい?
https://github.com/fstqwq/mjlog2mjai

あと Mjai もコマンドラインオプションを見ると mjlog から mjson への変換機能があるみたい
https://github.com/gimite/mjai/blob/master/lib/mjai/mjai_command.rb#L55-L70
26焼き鳥名無しさん
垢版 |
2025/08/06(水) 22:28:20.41ID:iuTZybAd
>>25
ありがとうございます
データ読み込む動作確認はできたから次はそいつらで牌譜大量変換ですわ
2025/08/10(日) 15:29:49.73ID:bm6aKVze
>>26
そういえば Mortal や Akochan を使って何をする予定?
Mortal モデルを作って RiichiLab に提出する?
それとも 自作 AI 開発のための勉強?

このスレ今は二人しかいないっぽいけど、もっと人が増えたら RPA を組み合わせて天鳳個室・雀魂友人戦で遊ぶとかできたら楽しそうだね
28焼き鳥名無しさん
垢版 |
2025/08/20(水) 13:53:33.93ID:OUjDgBfe
>>27
ちょうどその話をしようと思ってたんだけど、
強化学習のAIを自作して、動作確認(学習して打牌選択の変化)をしたのち、最終的に天鳳に導入することが目的なんだ

0から作ることはさすがにできないから、どのAIをいじれば自作しやすいか模索してるのが今!

どれやれば一番手っ取り早いかな😭


ほかの人たちも対戦環境整えたものの人集まらなくて頓挫したとかブログ見かけるしやりたいところだね

天鳳に繋げるのってwiresharkとかしか見かけなかったんだけどRPAってのでできるの?!
29焼き鳥名無しさん
垢版 |
2025/08/20(水) 14:02:25.96ID:OUjDgBfe
RPA調べてみたけど便利そうだね
どのツール使えばいいかは迷っちゃいそうだけど
2025/08/20(水) 21:21:36.98ID:Qj0itpLE
>>28
なら Mortal がいいかな
麻雀 AI のフレームワークの中でもかなり設計がキレイだと思う
バッチ推論対応でシミュレーションも高速だし

天鳳は通信を直接送る方式の bot が多い気がする
雀魂は Playwright とか PyAutoGUI で RPA するのが主流かな

天鳳に投入するなら個室か一般卓だね
上級卓以降は公認アカウントが必要だけど、研究機関でも断られてるみたいだから個人ではまずムリっぽい
http://blog.tenhou.net/article/190000489.html

対戦環境ってだけなら RiichiLab はそこそこ参加者がいるね
https://mjai.app/
31焼き鳥名無しさん
垢版 |
2025/08/20(水) 22:29:24.34ID:XN7ebqC0
>>30
ありがとう
お陰で迷わずmortalに集中できそうだ

やっぱり天鳳の方式だとめんどくさいのかな
対人成績確認したいだけだから一般卓だけでも動作できればいいんだけども

天鳳しか考えてなかったけどMortalやるってなったら天鳳に拘らなくて雀魂でもいいね
RPAも使ってみたいし

リーチラボ実はクソザコ登録してあるんだけど週1なのがちょっとネックかなって
あと、公開されてるの登録しただけで書き方あんまわかんなかった
これzipに重みとかも詰めたら強化学習AIも登録できるってことだよね?

戦績も牌譜屋とかと比べると評価指標が少ないしね
2025/08/20(水) 23:18:50.63ID:Qj0itpLE
>>31
がんばってね

注意点として雀魂は天鳳と違って一応外部ツールは全部アウトだね
自分は調査・デバッグのために友人戦で100戦以上 Playwright で自動操作しても BAN されてないから、友人戦でこっそり遊ぶ分には見逃してくれると思うけど
段位戦は銅の間でも即 BAN されると思う

RiichiLab については重みも zip に入れたら OK 、むしろほとんどの参加者はそうしてると思う
圧縮後に 1 GB の制限があるけど BERT_{BASE} くらいのサイズでも大丈夫みたい
33焼き鳥名無しさん
垢版 |
2025/08/21(木) 02:17:30.67ID:rVsK5MrV
>>32
その雀魂とRiichiLabのAIはMortalベースで作ったやつ??
2025/08/21(木) 07:08:45.41ID:nSYv7SfU
>>33
一般的な話なら Mortal ベースのもそうじゃないのもある
Mortal を使った RPA ならたとえば shinkuan/Akagi がある

自分のことなら
RPA は動作確認用にターミナルから入力するものとツモ切り bot しか使ってない
RiichiLab に提出してるのはモンテカルロベースの AI だから重みファイルはない
シングルバイナリを bot.py から実行してパイプしてる
35焼き鳥名無しさん
垢版 |
2025/08/22(金) 15:49:16.63ID:jk7rRqef
>>34
モンテカルロ組めるのですらすごいわ

Akagiがmortal.pth公開してくれてるからそれ使ってmortal動かそうとしたらだめだった

やっぱり自前でmjai形式のデータセット用意して、trainしないとか
mjai-reviewer使うにしてもあれ1個1個やらないといけないのかな?
train用だとかなり要るだろうし効率的なやり方しらない?
2025/08/22(金) 19:35:05.53ID:unbT9CHp
>>35
モンテカルロって濁したけど mjai-manue の Go 移植のこと
自分でアルゴリズムを考えたわけじゃない

天鳳の mjlog 形式の牌譜がローカルにあるなら >>25 で紹介したツールでいけるんじゃない?
2025/08/22(金) 19:49:23.36ID:unbT9CHp
紹介しといてなんだけど、Akagi は有料で接続権を売ってるモデルの評価に雀魂王座の間を使ってるからあまり使いたくない……
38焼き鳥名無しさん
垢版 |
2025/08/27(水) 23:00:16.49ID:0cqC6hj/
>>37
akagiはちょっと黒いよね

自前のデータセットがxml形式で使えなかったから
新しくこんなの使ってsuphxのデータ全部集めてみた

https://github.com/MahjongRepository/phoenix-logs

suphxだけでもデータ抽出めっちゃ時間かかるわ
全部やろうかと思ってたけどとりあえず2019年だけでやってみる

mortalのトレーニング始められたらまた連絡するよ!
3903
垢版 |
2025/08/29(金) 01:07:45.25ID:oWtn88Fd
xml形式のmjlogを変換するコード書いたことあるから貼っとく
mjai使っているから多分正しく変換できるはず。。。(あんまり確認してないけど)
時間があったら使ってみてー

https://github.com/h11r03/mjlog-xml-to-mjai-json-
2025/08/29(金) 21:34:58.82ID:E9hW9WB6
>>39
README の解説がめちゃくちゃ丁寧でありがたい
あと mjai は最新の Ruby だと問題あるのを初めて知った
2025/08/30(土) 12:02:54.14ID:h7esdUVI
ちょっと相談なんだけど
mjai を Node.js とか Go に移植する需要ってあると思う?
それとも今は mjx の mjx_mjai_translater とか Mortal/libriichi の AkochanAgent みたいにシミュレーターにトランスレーターをかませば十分で
TCP/IP 通信のサーバーの需要自体がない?
42焼き鳥名無しさん
垢版 |
2025/09/01(月) 15:55:32.86ID:F1y2xxwf
>>39,40
それも使ってみたんだけどうまくいかなかった;;

https://crates.io/crates/mjlog2json/0.1.2
https://github.com/h11r03/mjlog-xml-to-mjai-json-
https://github.com/MahjongRepository/phoenix-logs

どれでやっても
https://github.com/Equim-chan/mjai-reviewer?tab=readme-ov-file
が機能しない

データセットは
https://qiita.com/neuzen-ryuki/items/48fa468fa0b1c502ed1e
https://tenhou.net/sc/raw/
これどっちもで試してみたんだけどなあ
43焼き鳥名無しさん
垢版 |
2025/09/01(月) 16:04:23.41ID:F1y2xxwf
>>41
あんまどれがどういうメリットあるのか知識ないからわからないけど,
mjaiみたいなTCP/IP 通信のサーバーが他にもあったら使い勝手は良いと思うな
Node.jsは電脳麻雀との差別化が難しい気がするけど,一緒に使いやすくなると考えたらむしろ良いのかもしれない

とはいえ,開発の実用段階に行けてる人からしたらトランスレーター使うだけで良いのかもしれないね
mjxもmortalも大規模プロジェクトだし

mjxってビルド壊れる以前にインストールしてる人しか使えないと思ってたんだけど今も使えるの?
2025/09/01(月) 20:12:59.41ID:I/wadFgi
>>42
mjai-reviewer を使おうとしてたのか
あれは mjlog や mjson じゃなくて 天鳳牌譜エディタ形式の json を入力するみたい
少なくとも README の用例と src/main.rs を軽く見た限りはそうだと思う
2025/09/03(水) 23:20:56.77ID:QUky5oVZ
>>43
ごめん mjx も TCP/IP 通信だった
gRPC を使ってるから mjai の JSON-RPC より速いってことみたい

通信の無駄を減らすなら Mortal や Kanachan みたいに同じプロセス内で処理を完結させるのが良いと思ってたけど、
AI クライアントを別マシンやコンテナに分離できる方がいいのかな?
クライアント間で使用する環境の競合 (ライブラリのバージョン違いとか) が発生しないとかのメリットが大きい?

自分も麻雀対戦シミュレーターを作ってみたいけど Mortal 方式にするか mjx 方式にするか悩むね
46焼き鳥名無しさん
垢版 |
2025/09/04(木) 16:25:21.39ID:Odu/Sve1
>>44
天鳳から持ってこれるのが,log.gzってやつで
log.gz→log→mjlog→xml→json→json.gz
って行こうとしてるんだけど,どっかでタグとか欠けてるのかツールが悪いのかxmlで止まってる

>>45
できるならもちろんmjxをなぞったほうがいいだろうけど,ビルド壊れてから全く触れてないから俺はmortalが現実的だと思ってるよ
47焼き鳥名無しさん
垢版 |
2025/09/04(木) 17:24:07.81ID:0wFxBCIG
mortalとakochanの違いってなんなんだろうか
akochanすぐビルドできて好きになっちゃうよ

deepwikiでみてみたら性能比較とか戦術変更とか結構研究用機能ついてていいね
2025/09/04(木) 18:50:01.45ID:BZCy/nim
>>46
認識合ってるか気になるからいくつか確認

1. 天鳳の log.gz の中にある HTML には観戦用の URL が複数入ってる
2. 観戦用の URL を一部変更すると mjlog のダウンロードができる
3. mjlog は拡張子が違うだけで中身は xml だから変換は不要 (強いて言うならファイル名の拡張子を変えるだけ)

ここまで認識合ってる?

phoenix-logs は log.gz からの牌譜 URL (log IDs) の抽出から mjlog (log content) のダウンロードまでサポートしてる

注意点としては
牌譜ダウンロードのセッション数がデフォルトだと 3 になってるから、最新の規約に合わせて(README に貼ってある X のポストを参照のこと) -t 1 を必ず指定すること
2025/09/04(木) 19:07:35.16ID:BZCy/nim
>>47
作者も思想も全く違う
むしろ同じなのは Mjai クライアントって点だけかも

Akochan は四人麻雀向けに補正した一人麻雀のゲーム木を探索してる
だから (あくまで近似だけど) 和了率や放銃率が出せる

Mortal はいわゆるディープでポンに近い
局面を丸ごとニューラルネットワークに入力して直接行動の価値を返す
ただしシャンテン数とか一人麻雀計算機の計算結果とかも追加で入力してる
計算は速いけど行動の価値 (Q 値) しか出ない
2025/09/10(水) 19:42:14.46ID:kLykDnhy
ごめん,全く理解が足りてなかった
mjlogとxmlは同じなのか

>>48でいうところの1から間違ってるのかも

自分が持ってるやつ(天鳳から拾ったlog.gzを解凍した.log)添付するよ.
https://imgur.com/a/C6rBaFt
Qiitaとかでダウンロードリンク先探してるけど,.zipでも.log.gzでも中身はURL無し.logしか見つからない.数年前と管理変わったのかな?

とはいえ,
https://github.com/MahjongRepository/phoenix-logs
の一番下の
Validate that downloaded logs can be parsed
実行してみても2009年の牌譜全部正常だったんだ

phoenix-logsから牌譜ダウンロードしたら,圧縮されて読めないmjlogが取得されるんだけど,
それを解凍したxmlがこれ.本来の天鳳xmlと変わっちゃってるのかな?
https://89.gigafile.nu/1219-dba67739ba8635f4098b9cf2c37c728ea

このxmlを「phoenix-logs-master mjlog2json」で,jsonにしようとしたら,lobbyのタグがないって言われた
拡張子.mjlogにしても変わらなかった

>>49
助かる
akochanゲーム木なのか
動作いい感じだったからmortalじゃなくてもいいかと思ったけど,深層学習したいしやっぱりmortal頑張るしかないか
Q値しか出せないってのも改善ポイントとしてちょうどいい気するし
51焼き鳥名無しさん
垢版 |
2025/09/10(水) 19:46:22.87ID:QjtmsNrC
書きながら文足したりしたから
読みづらくて申し訳ない
2025/09/10(水) 21:34:22.94ID:HyEJtneI
>>50
もしかして個室の牌譜をダウンロードしようとしてる?
天鳳のサイトを確認したら

> ※sca=個室 / scb=段位戦 / scc=鳳凰卓(牌譜あり) / scd=雀荘戦 / sce=技能戦+琥珀卓(牌譜あり)

って書いてある
nodocchi のリストから推測すると
おそらくログに牌譜 ID がついてるのは鳳凰卓と一部の牌譜 (天鳳位, AI, 飛びが発生した) だけ

あとごめん
phoenix-logs は SQLite の DB に牌譜を保存する (.db) んだけど、そこから圧縮してない xml を出力する機能が見当たらない
フォークしてエクスポート機能を追加したものがあるから、そっちを使えば展開された xml が出てくる
https://github.com/ChitoKim/phoenix-logs?tab=readme-ov-file#output-raw-mjlogxml-game-logs-into-text-files

自分はこのフォークをさらに三麻とか東風もエクスポートできるように改造して使ってたから
オリジナルにはエクスポート機能がないのを忘れてた

lobby 属性の件だけど、まったり麻雀の人のブログを見た感じ昔は lobby 属性がなかったっぽい?
http://kmo2.cocolog-nifty.com/prog/2008/05/post_14b1.html

変換スクリプトでもそんなに重要なポイントじゃないと思うから
Go 要素に適当な loddy (段位戦なら "0") を追記しちゃえばいいかも (未検証)

というかその牌譜はどうなってるんだろう?
type は四鳳南喰赤だけど段位や rate は初期値で性別がロボット 名前も EXAMPLE
と思ったらサンプルファイルらしい 除外すればいいと思う
https://kyphd.github.io/renow-docs/renow/mjlog/

> 2009/02/01 のファイルはサンプルのようなので除外している。
2025/09/10(水) 21:59:48.30ID:HyEJtneI
Mortal の改造の話ならポリシーベースに改造した Mortal の話が興味深い
https://github.com/Equim-chan/Mortal/discussions/91

フォーク版の方の Discussions の内容を見ると企業から研究資金が出てたっぽい?
ラボで使ってた独自のコードはリポジトリには含まれてないらしい
54焼き鳥名無しさん
垢版 |
2025/09/17(水) 15:29:46.88ID:Wd4cqur5
>>52
phoenix-logsフォーク助かる!一応自己流でやってたけど懸念要素だったからありがたい.

xmlにlobby=0追加したのもやってみたんだけど,動作しなかったんだよね.
でもこれが近道だと思うから,やり方変えてやってみる

牌譜?サンプル混じっててもphoenix-logs だとスキップしてくれそうだからどうだろう
log→db→xmlだから牌譜は確認出来なさそうなんだ
>>53
今までポリシーベース触ってたから興味深い.しかも自分が触ったことあるPPOだ
重みは価値ベースのほうから持ってこないといけないみたいだね.今やってるのが成功したらこっちに移行したいな
55焼き鳥名無しさん
垢版 |
2025/09/17(水) 16:00:57.89ID:Wd4cqur5
2009のデータでphoenix-logs フォーク使ってみたら「This DB has 58162 games in total」って出たんだけど
https://kyphd.github.io/renow-docs/renow/mjlog/
の四麻の2009は58160だから最初の2つがサンプルっぽいね,取り除いた.
実行したら理解が追いついたよ.ありがとう.

中身見たけど,xmlコードの前に牌譜ID挟んでくるんだね.試しに天鳳で開いたけどほんとにサンプルだったわ.他のはちゃんと開けた.

この2009.xmlはこのあとどうすればいいんだろう
mjai-reviewerでjsonにできない気がするんだけども
2025/09/17(水) 18:31:43.34ID:YeRNVIxT
>>55
mjai-reviewer で使ってるのはおそらく天鳳牌譜ビューア/エディタ形式の json だから変換が必要だね
調べたら変換ツールを自作してる人がいた
https://crates.io/crates/mjlog2json

xml から変換しなくても対局 ID を使って天鳳公式の json ダウンロード用の URL にアクセスしてもいいけど、
以前天鳳公式 X アカウントでそっちは CGI に負担がかかるとかポストしてたから前述のツールを使った方がいいかも

ところで何のために mjai-reviewer を使おうとしてる?
Mortal への入力は mjson 形式が必要だけども
トレーニングしたモデルの評価とか?
2025/09/17(水) 18:40:56.22ID:YeRNVIxT
phoenix-logs を読んでたら内部の設計とかスクリプトの使い方とか色々気になるから
機能はほぼそのままに 1 から書き直したツールを作ろうと思う

できれば time.sleep() とかである程度ダウンロード速度を調整したいけど、
天鳳公式にレートリミットを問い合わせるのってアリだと思う?
藪蛇かな?
2025/09/21(日) 20:24:25.06ID:wyqEm1q5
天鳳の牌譜について勘違いしてたことを訂正しとく

* API 経由で牌譜が取得できるのは
* 鳳凰卓
* 役満和了発生(四麻のみ、全部の卓を含む)
* 公認 AI (一部の牌譜は取得できない、条件不明)
* 天鳳位の全牌譜は mjlog を圧縮した zip をサイトからダウンロードできる

飛びがある牌譜が公開されるのかと思っていたけど、役満があると誰かが飛ぶことが多いだけだった
2025/09/21(日) 20:26:39.02ID:wyqEm1q5
>>55
2009.xml だけど --strip オプションを指定して個別の xml に出力した方がいいと思う
一つのファイルにまとめた方が読み込み速度は速いけど、取り回しが悪くなると思う
60焼き鳥名無しさん
垢版 |
2025/09/22(月) 09:23:32.33ID:a6uPzlMg
>>56
たしかに牌譜ID取得できたならxmlにこだわらなくてもいいね

mjlog2jsonなんだけど,これ牌譜IDがあると読み込んでくれないんだ
>>50 ではlobbyが無いってこれに言われたんだよね
一回--stripで個別にしてから牌譜ID消してやってみるけどたぶんまたlobby無いって言われそう

mortalってmjsonか
jsonと勘違いしてた.mjsonの場合だとどう作るの?

>>57
1から書き直せるならすごい助かる
天鳳ダウンロード速度うるさいし問い合わせるに越したことはないかもね
https://x.com/tsuno_s/status/1804487739657580636
これ見るに1セッションならなんでもいいのかもしれないけど
2025/09/22(月) 10:19:20.24ID:9RpjStku
>>60
mjlog から mjson への変換は >>25>>39 のツールで変換できると思う
621 ◆Q0YRMrCAIo
垢版 |
2025/09/22(月) 11:43:01.76ID:0yT6RsXj
>>61
教授からそんなことしてないでルールベースでいいから1から自分でAIと環境とプロトコル作れって言われたんだがそこまでやってることおかしいかね

基礎の知識が必要なのはごもっともだけども機械学習入ったらさすがに自分で作れんしなって思うんやが

進捗報告で言われたことやってないと見放す言われたからしばらくmortalの話薄くなりそうで申し訳ない
せっかく付き合ってくれてたのに
愚痴きかせるはめになってしまったのも申し訳ない😭

とりあえずmjai.appに乗っけれるAI1から作ろうかな
2025/09/22(月) 12:40:22.31ID:9RpjStku
>>62
学生さんでしたか
分野はやっぱり機械学習?

麻雀の環境・エージェントに関してはコーナーケースとかバグ取りが超大変だから自力実装はオススメできない
貴重な研究時間を浪費するのは勿体ない

環境に関しては
mjx は最新の Python とかだとビルドできないらしいから、Mortal とかの既存実装を使った方がいいと思う
それか山岡忠夫さんの cmajiang を使うのもいいかも
他には Kanachan v2ブランチの src/simulation は Kanachan の AI にべったりした実装だけど検討する価値はありそう
雀魂段位戦の牌譜を 2 億局使って動作検証済みらしい

自分は専門家じゃないから AI についてはなんとも言えないけど、Mortal の特徴量設計は参考になると思う
あと山岡忠夫さんがブログで麻雀 AI の設計についても書いてたはず
2025/09/22(月) 12:47:31.17ID:9RpjStku
>>62
オレオレプロトコルを作っても既存の AI (manue とか Akochan) と比較するときに結局 mjai プロトコルへの変換が必要になるから、最初から mjai プロトコルに対応した実装を持ってきた方がいいと思う

あと研究なら各作者に相談してみるとかはどう?
たとえば mjai.app 作者の smly (小嵜 耕平) さんは機械学習の専門家だし
2025/09/22(月) 13:14:37.02ID:9RpjStku
>>62
ルールベースの AI でいいなら電脳麻将もいいかもね
環境・エージェント・プロトコル全部揃ってるし AI 同士の自動対戦ツールもついてる

ただ、Node.js だから実行速度が遅いのは実験に影響するかも
2025/09/22(月) 14:42:34.78ID:9RpjStku
訂正: Kanachan の雀魂牌譜での動作検証は 1 億局だった
https://x.com/Cryolite/status/1648651785274556417
671 ◆Q0YRMrCAIo
垢版 |
2025/09/22(月) 14:45:25.97ID:VuiZRCwA
>>63
機械学習専攻にしてます
もっというと強化学習メインです

やっぱりmortalとかから発展させるほうがいいよね
従わないなら見放すとか言ってきたけどどういうものか伝えて説得する方向のほうが良いかな

cmajiang使ってはいたけど中身は見てないや
あれかなりすごそうだよね

Kanachanは初見だ
ありがとう、コード覗いてくるよ

>>64
やっぱりそうだよね
自分のやつなんて限界あるし発展性のあるmjaiに繋げるべき

なんとなく作者さんたちに連絡取るの避けてたけどもう1年近く研究しててこれだからさすがに連絡取るべきか

>>65
たしかにルールベースなら電脳麻雀でいいじゃんか
前に電脳麻雀触ってたときはルールベースで学習できないから意味ないなで蹴ったのに方向性わからなくなってくる
2025/09/22(月) 18:32:33.81ID:9RpjStku
強化学習メインとはすごい
自分は機械学習については全く素人だから色々聞いてみたいことがある

麻雀の強化学習の方法なんだけど、SAC-Discrete って有効だと思う?
Mortal や Kanachan は TD 系を使ってるけども
麻雀って究極的にはポーカー AI みたいに確率的に行動選択した方がいいと考えてて、
・モデルフリー
・オフポリシー
・確率的な方策が出力される
・離散空間用の方式
で調べたら SAC-Discrete が出てきたんだけど
2025/09/25(木) 19:39:54.67ID:m9ykZYTJ
phoenix-logs の書き直しが validate 以外完成したので公開した
牌譜の XML への出力機能も追加してある
あと、ログの自動ダウンロードの規約もある程度ツール側で守るようにした
良かったら使ってみて
https://github.com/Apricot-S/houou-logs

validate 実装後に公開するか少し悩んだけど、たぶんほとんどの人には不要だと思うから後から実装することにした
70焼き鳥名無しさん
垢版 |
2025/10/02(木) 14:26:03.21ID:LLbMe59u
>>68
見るのだいぶ遅くなってしまって申し訳ない.

SAC-Discreteって聞いたことないんだけど,調べてみた感じ要はPPOみたいな方策系のアルゴリズムってことだよね.
自分としては,
・モデルフリー
・オフポリシー
に関しては完全に同意

・確率的な方策が出力される
・離散空間用の方式
はしっかり理解できてないけど,方策に沿って学習を進められるってことならそれがいいと思ってる.
71焼き鳥名無しさん
垢版 |
2025/10/02(木) 15:29:04.97ID:zjVtPQyR
>>69
想像以上の仕上がりで正直笑ってしまったよ.これはすごい
教授からの目が離れたら使わせてもらうよ

githubも使いこなしてて尊敬するわ.バージョンの更新とかしたことない.
72焼き鳥名無しさん
垢版 |
2025/10/02(木) 15:30:42.18ID:zjVtPQyR
それと,mjxビルドできたよ
https://github.com/mjx-project/mjx/issues/1016
ここの通りにやったら最新ではないもののビルドできた.

まだそれ以上いじってないんだけども
2025/10/10(金) 22:28:08.98ID:16T+Yvmh
膝の上に座れ!
2025/10/16(木) 07:26:03.30ID:u7r6lAD8
天鳳鳳凰卓の 2015 年 ~ 2024 年の牌譜を Mjai の mjson 形式 (gzip 圧縮済み) に変換したデータセットが公開されてた
データセットのライセンスは CC BY 4.0 になってる
https://github.com/NikkeTryHard/tenhou-to-mjai
2025/10/16(木) 07:45:40.59ID:u7r6lAD8
>>74
自己レスだけど
確認してみたら db ファイルは NOTICE にもある通り houou-logs で作成したみたい
手元で houou-logs を使って牌譜を export できた
2025/11/15(土) 10:53:37.06ID:MlxMlIuS
機械学習専攻の彼は無事に麻雀 AI の研究に入れたのだろうか
2025/11/24(月) 09:15:07.51ID:T9tT6HtC
最強ほそみんさん
78焼き鳥名無しさん
垢版 |
2025/12/11(木) 15:58:38.24ID:ATehQhaY
>>75
ご無沙汰しております。
指導教員と色々ありまして、研究テーマを変えることにしました

強化学習は諦めてモンテカルロのパラメータいじってシュミレーションしてみようと思います

またお世話になりそうです
2025/12/12(金) 00:35:48.81ID:ggMSdIie
>>78
お世話にということは麻雀関係は継続?
頑張ってね~
2025/12/18(木) 07:31:41.06ID:kylxfGPf
ぬるぽ
レスを投稿する

16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況