*All archives* |  *Admin*

<<05  2017/06  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  07>>
floodgate for mahjong へ参戦その3・AI製作の目的とか
今日は残りの命令(鳴き・和了とか)について受け取った文字列を内部変数に落とし込むところまで終わりました。

棒テン即リー全ツッパAIまでは既存関数のコピペでだいたいなんとかなるでしょう。たぶん明日くらいにはできる。


今日はどうして麻雀AIを作ろうと思ったかをつらつらと書いていきます。

麻雀AIといえば、みなさんご存じのとおり、「爆打」というすごく強いAIがすでに存在しています。
私ごときの技術力では「爆打」には到底かなわないと思っているので、
よく将棋とか囲碁とかポーカーとかで話題になってるとおり、
「人間を超えるソフトを作る」とか「最強のAI」とかにはあまり関心はないです。
そこまでたどりつく自信は全くないので。

関心がある、言い換えればAIを作る一番の目的は、
「似たようなソフトどうしの成績を比較して、勝ちやすい戦術を探りたい」ということです。

例えば立直判断なら「先制愚形立直のみは絶対打たないソフト」とそういうこだわりのない「普通のソフト」(局収支or試合単位収支を単純に最大化する戦略をとる。)の両方を多数試合(できればさまざまなAI相手に)やらせて、統計的に有意な差が出ればうれしい、もしくは有意な差が出てくるまで試合数を重ねる(AI相手なら多数試合が比較的容易と思われる)みたいなことができればいいなぁと思っています。

「先制愚形立直のみは絶対打たないソフト」のアルゴリズムをどう作るかですが、
単純に役なしドラなしになったら強制的にダマ聴牌にさせるとか、
もっと根本的に、愚形立直のみの評価値(局収支)を下げることによって手作りの段階からでも愚形立直のみを避ける手組(シャンテン戻しなど)をさせるなど、
まぁ方策はないわけではないです。

他にも、もっと重要なところが押し引きのラインですね。
もちろん、計算上押しと降りを比較して、数値が良い方を選ぶということはできますが、
さっきと同じようにどちらかの戦略に数値を補正することで、ふつうより押し気味AIとふつうより降り気味AIみたいなのも作るのは可能です。
補正のしかたも、一律で押しにプラス点とかマイナス点させるとか、受け入れ枚数・高さなどに応じて補正点を変えるとかいろいろやりかたがあります。(例えば、良形なら単純な収支よりもかなり押すけど、愚形になったらかなり引き気味になるとか。)

そういうのをいろいろ比較してこっちの戦術の方が勝ちやすいみたいなのが見えてくれば面白いかなーとは思っています。

もちろん、対人間でやってるわけではないので、「そんなもんに意味はない」と批判されるかもしれませんが、まぁそのへんは自己満足的なところですね。批判の声は一応聞きはするけど、まぁ深く考えずに受け流すみたいな。

まぁ後は技術的・計算時間的な問題ですかね。
愚形立直のみをどうするかというのは実際目にする局面はそう多くはない(感覚的には数試合に1回あるかどうか。)上、結果に重大な影響が出る可能性が低い(局収支的には拮抗してるわけですし。)ので、結果が収束する→統計的に有意差が出るまでかなりの試合数が必要になることが予想されます。

1試合5分で終わるとすると、1000試合で5000分(≒80時間≒3日)、10000試合で30日…。
けっこう大変そうですね。10000試合でも十分かどうかはかなり怪しいですし、
そもそも1試合5分で終わるかどうかもかなり過小評価な気がするし。

そうすると、現状の計算機ベースだと時間的にだいぶ苦しいですね。どこかで省力化(計算の省略とか)は必要になりそう。
まぁそのへんはおいおい考えていきましょうか。
うまくAIが作れたら高性能のパソコンでも買おうか。

あとはそうですね。大量の牌譜の収集とかもできそうですね。もちろん人間同士の対局よりかは価値は落ちるとは思いますし、現状でも大概の研究をするには十分なサンプルサイズがあるので、どうしても必要というわけではないですが、AIの傾向を調べるという上でもまぁあってもいいかな、と。

それをするには自前でサーバー機能を付ける必要があったりとか、牌譜出力機能が必要とかはでてきそうですが、まぁそれもある程度うまくいってから考えようか。自前のAI同士の対局ならわざわざjson形式で文字をやり取りせずとも、前に作ったゲーム機能の延長線上でなんとかなりそうだし。

それと、染め手移行のアルゴリズム(パラメータ取りも含めて。)ずっと放置してやってないからそっちもやらないとなぁ。
染め手も重要と言えば重要ですけど、優先順位的にはふつうのAI作りよりは下かなぁ。


つらつらーと書いていったらなんかそれっぽい文章になった気がする。まぁこれからもいつものペースでこつこつがんばりましょうか。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード