麻雀AIについて1
- dragon0549610
- 2018年3月15日
- 読了時間: 5分
Twitterで何の記事を書くか投票を使って決めたところ、
「AIについての記事」となったので、今回は自分の作っているAIについて書こうと思う。
ちなみに、現段階でこの麻雀AIの能力はあまり高くはなく、
私はサークル内外でこやつに言及する際、人口無能 = AI(Artificial Incompetence)の略としてAIと呼んでいる。
Intelligenceになる日が近ければいいなと思うのだが。
■現在のAI■
●開発目的
高校時代、放課後のPC使用がゲーム禁止であったため。ゲームを作ることは認められていたので遊びたくて作った。
ちなみに高校を卒業してから父親がそのPC室の整備の仕事を少しだけ担当するという世界の狭さっぷりである。
●動作環境
主に私の作った麻雀ゲーム内で動作する。麻雀ゲームでは.mjlog形式の牌譜が出力でき、これを基に検討や分析を行っている。
牌譜サンプル(Youtube)→ https://youtu.be/OcA_z8W1zyo
mjlog形式にしたのは入出力の簡易さ、および『天鳳分析』http://www.geocities.jp/tenhoukaiseki/
が利用できるというメリットがあるのだが、見返したい場面が多く発生したから簡単な出力形式を選んだそれだけのことである。
(天鳳分析にクレジットが書いていなかったので、リンクを以て代えさせていただく)
●言語
VB.NET。コードは8年前から手を加えぐちゃぐちゃになったもので、かなり粗悪である。よく動いてんなこれ。
当然いつ止まってもおかしくないので、当時書いた関数などをC#で新たに書き直してクラスを作成したりしている。
次の麻雀ゲームはどういうものになるかまったくわからない。もう作らないかもしれない。でもたぶん天鳳以外でぼっち麻雀やりたいからつくる。
●実力
上記より天鳳分析のデータは存在するのだが、牌譜データが複雑なことになっていて現在データが取り出せないので主観的に述べる。
(Twitterを漁れば私に擬態した天鳳分析の画像が存在するかもしれない)
上卓民平均より下程度の実力である、と思われる。天鳳に例えれば良くて四段R無し、悪くて初段から落ちそうといった具合か。
打点を作ることについてはある程度できるのだが、鳴きや役に絡むと変な挙動が散見される。
跳満確定で明らかに損なリーチを打ったりするので、打ち筋としては私に似ている。
●あそびかた
初めに4000~6000点ずつ分けてやる。これでだいたいまあまあ勝てる麻雀になるのでたのしい。
役が絡む関数が存在していないためアナログな手法で主要な役を教えてある。
牌理については単純パーセプトロンを用いて実装したのだが、その値になぜか手を加えている。
ベクトルで加算する方式をとっているにもかかわらず、局収支はまったく計算していない。ひどいAIもあったもんである。
これより下は今考えてるメモみたいなものなのでぐちゃぐちゃです。
■AI(?)に関していまやろうとしていること■
それ全然関係なくね?っていう事柄も入っているのであしからず。
●入出力
やりたい入力→パターンマッチング、またはカスケード検出器による場面の認識(ようするに視覚認識)(併用もあり?調査中)
人間が麻雀を打つ時の補助動作→声で打牌(例:「ぱーそー」→8sが打牌される、など)(家事しながら麻雀したい)
AIの思考が牌譜と同時に見られるような牌譜形式の生成
(爆打が評価値を出力したものがアップロードされているのだが、いかんせん牌譜と同時に見るときに視認が大変しづらい。)
↑を望むのは、私の目指すAIが爆打より麻雀的アプローチの色が強いものにしたいという思いからきてる
●関数
作った関数→シャンテン戻しをする場合を拾う関数(有効牌(和了牌)数 <<< 一枚外して一枚持ってきたときの平均有効枚数 )
→モンテカルロ法により和了率を求める関数(occam参考)引数が13枚手牌、各牌残り枚数のテーブル、副露数。
これらが遅すぎて使い物にならないのでこれらの高速化。
作りたい関数→他家の河から所持枚数を予測する関数
→それを用いて和了率を求める関数
→「この牌を切らない聴牌ルート」関数
→放銃率関数(現状放置されてる多層パーセプトロンの関数つくりなおし)
ところでニューラルネットワークとパーセプトロンの違いってなんなん?よくわからん。
●ビジュアル
卓画→かっこいいやつ 最近Illustratorハマってるのでいいやつ作りたい そのうち卓画についての記事も書くか。
牌画→天鳳のヤツをとりあえずベクトル化してフォントにしたい
アルティマBより見やすくて素晴らしいのでこっそりデザインを市川屋に持ち込んで天鳳式の牌作ってリア麻で打ちたい(金ない)
Unityで天鳳Win版の再現 → あほやろ。完全に時間のムダ。でもやりたい。
●ツール
雀力向上→天鳳の画面をぱっと出され、所定の牌を数える、点数差を計算する、仕掛けのバックでありえるものを列挙するなどのトレーニング
特に枚数を数えるやつは天鳳打つ前に頭の運動としてやりたい。これのスコアと成績には相関があるはず(基礎的能力のため)
→AIの思考による思考の表示によるアシスト。(「ここは形テンを目指したほうがよい」「親の手出しが濃くなってきたから準備しろ」など)
サークル用に→オフラインで天鳳の牌譜を再生できるツール。大学構内で天鳳サーバへの接続が禁止されているし、
ネットワーク接続なしに牌譜を見ようとするとき大変不便。つのだは顧客の需要がわかっていない。
需要といえばあれだよな。一時期zeRoさんがツモ牌が手牌開く前に表示されたら実力向上につながるかもとかいってたやつ。
あれの角田の対応やばいわ。何msかしらんけどweb版のツモ牌が開くのがちょっと早くなってクソ吹いた。十段を足蹴にしてんな。ひでえw
おそらく、ツモという発声と同時に和了り牌が卓上に見えるということが思考育成につながるという意見なんだろうが、
和牛様はいったい何を勘違いしてあれを実装したんだろうね。角田の麻雀好きはどこかベクトルが変だ。人のコト言えたもんじゃないが。
しかし天鳳の対局GUIには洗練されていてほんとうにすごい。あれを上回るのは雀龍門スマホ版のジェスチャー機能があるくらいか。
ていうか脱線しすぎだろ。ひどすぎる。
●局収支で打つのは基本的に好きじゃない
●爆打が順位回帰でなくpt回帰で動作したときの弱体化の原因を突き止めたい
さてこのAI、ブログの記事内に既に一回登場している(CPU戦)。
親のホンイツ模様にノーテンからばしばし押している場面である。うーんひどい白。
記事に画像がなんもないのは面白くないので、卓画をひとつあげておく。これは完全に自作なので載せて大丈夫なはず。

Comments