tomohxxの日記

麻雀プログラミング

麻雀AI開発(4) 計画変更

麻雀AI開発の4回目です。前回記事はこちら。
tomohxx.hatenablog.com

この記事の中で東風戦の攻略には苦労しないだろうと考えていたのですが、実際やってみるとそうではないことがわかりました。その理由として、まず、東風戦の成績を収束させるには一局戦以上の時間がかかることが挙げられます。一回の東風戦で平均一回連荘があるとして1000試合消化するのに約5000局シミュレーションする必要があります。これだけの回数をこなすことで、ようやく平均順位の95%信頼区間を±0.6程度に抑えることができます。ちなみにこれだけシミュレーションするのに私の環境で約2日かかります。また、前回記事で評価関数(行動の価値を決める関数)の解釈可能性を放棄してしまいました。この結果、期待最終順位を評価関数に取り込んで、持ち点が多いときは保守的に打つ、持ち点が少ないときは攻撃的に打つといった行動を実現する方法をたくさん考えることができてしまい、試行錯誤のコストがとても高くなってしまいました。要するに、解釈可能性を放棄した状況では変数をたった一つ増やすだけでも既存の変数との多くの組み合わせを考えなければならないので非常に大変というわけです。それならばいっそのことニューラルネットワークのような表現力の高いモデルを用意して最適化を自動で行ったら、とツッコミたくなります。そして、仮に手動での最適化にこだわってたくさん時間をかけてよい成績を収めたとして、それにどれほどの価値があるのか疑問です。手動での最適化が大変であればあるほど、これ以上は成績の向上が見込めないと断言するのが難しくなるのではないでしょうか?最適な変数の組み合わせを見落とす可能性が高まるからです。そんなわけで東風戦攻略は一旦中止とします。延期とするのかなど今後の計画は未定です。

最後にデータを残しておきます。前回までに開発AIを東風戦で打たせた場合の成績はどうなるか確認しました。少しだけ改造しています。

試合形式 東風戦
試合数 1000
局数 5580
和了 0.2556
放銃率 0.1348
1位率 0.297
2位率 0.243
3位率 0.217
4位率 0.243
平均打点 6530

どうやら1位率と4位率が下がり、2位率と3位率が上がる傾向があるようです。和了率と放銃率の変動幅は約1%ですね。本当はこれをベースに期待最終順位を取り入れると成績がどれだけ向上するかを見たかったです。