漫画カイジに出てくるEカードというゲームをご存知でしょうか?
以下は はと日記 様の「カイジ」のEカードについて考えてみる。という記事からの引用です。
Eカードについて有効な戦略を考えられております。
http://ameblo.jp/hatobeam2/entry-10370496856.html


・皇帝側:皇帝カード1枚・市民カード4枚

・奴隷側:奴隷カード1枚・市民カード4枚

各カードの強さ:皇帝>市民>奴隷 ※但し皇帝は奴隷に負ける


皇帝側、奴隷側の順に手持ちのカードから一枚提示し勝敗を決する。この際プレイヤーはカードを目視で確認してから提示しなければならない。

双方の勝利条件は

・皇帝側:皇帝カードと市民をぶつけること(掛け金1に対し報酬1)

・奴隷側:奴隷カードを皇帝カードにぶつけること(掛け金1に対し報酬5)

互いに市民カードで引き分けた場合は双方残されたカードで提示順を逆にして再戦する。プレイヤーは皇帝側と奴隷側を3回ずつプレイし、これを2セット計12試合戦う。

----------------------------------------

双方がカードを全くランダムに出した場合の奴隷側の勝率は

第一戦> 1/25

第二戦> 1/25 ※第二戦勝利(1/16) × 第一戦引分(16/25) = 1/25

第三戦> 1/25 ※第三戦勝利(1/9) × 第一・二戦引分(16/25 × 9/16) = 1/25

第四戦> 1/25 ※第四戦勝利(1/4) × 第一~三戦引分(16/25 × 9/16 × 4/9) = 1/25

第五戦> 1/25 ※第五戦勝利(1/1) × 第一~四戦引分(16/25 × 9/16 × 4/9 × 1/4) = 1/25

計 >5/25 (20%)

となりオッズどおりなんですが、曲者なのは「プレイヤーはカードを目視で確認してから提示しなければならない。」というルール。人間は手元の市民を区別して考えられない為、プレイヤーにとってはカード残数に関わらず皇帝(奴隷)を出すか?出さないか?という事実上の二択になってしまいます。

第一戦> 1/4

第二戦> 1/16 ※第二戦勝利(1/4) × 第一戦引分(1/4) = 1/16

第三戦> 1/64 ※第三戦勝利(1/4) × 第一・二戦引分(1/4 × 1/4) = 1/64

第四戦> 1/256 ※第四戦勝利(1/4) × 第一~三戦引分(1/4 × 1/4 × 1/4) = 1/256

第五戦> 1/256 ※第五戦勝利(1/1) × 第一~四戦引分(1/4 × 1/4 × 1/4 × 1/4) = 1/256

計 >86/256 (33.6%)


ここから導き出されるのは

・人間がカードを見て対戦する限り奴隷側の勝率は見かけより高い。

・勝率が均等ではなく、第一戦で奴隷を提示する(25%)のが最も勝率が高い。



なるほど。もちろん漫画では心理的な読み合いの描写が魅力なのでこの戦略を取るキャラクターがいるとすれば、おそらく負けるでしょう笑

では、『Eカードというゲームは「勝率が均等ではなく、第一戦で奴隷を提示する(25%)のが最も勝率が高い。」ということを知っているプレイヤー(以下A)』に対して、Aの戦略を知っているプレイヤーB(以下B)の最適な戦略ははたして「勝率が均等ではなく、第一戦で奴隷を提示する(25%)のが最も勝率が高い。」であろうか。

大雑把に言えば期待値が一番高い戦略を取るナッシュ均衡と違い、いわゆる対人読みな訳です。

アルゴリズムとしては
1.ランダムでカードを選ぶAI(a)を作る
2.aを相手にしてGAなりで学習させ、期待値的に一番高い戦略を取ることができるAI(b)を作る。
ただし、このbは理論上「第一戦で奴隷を提示する」確率が多くなるはず。
3.bに対して2と同じように学習させてAI(c)を作る。
4.終 わ ら な い

でもカードゲームなんかはそこらへんのメタ変遷が面白かったりするんですよね。

これを麻雀AIにも適応できる部分があるんじゃないかと思ってます。
現実の麻雀でもメンゼンで手作り重視で打つのが強い人、鳴きが上手い人、色々いらっしゃいます。
最速面前聴牌即リーとベタ降りだけでは一定以上までしか勝ち切れないのは、単純に実力の差もありましょうが、上位卓ほど卓囲ってる相手が鳴き麻雀の傾向にあるからだと思われます。

麻雀は対戦に時間がかかり、運に左右されやすいというゲームの性質上こうしたメタ読みの戦略がオカルト派にしか使われていないです。
しかし、AI使って何局も打つなら、こういった要素も取り入れられればもっと面白くなる思ってます。
また、こういう要素や戦略のカスタマイズが誰にでも簡単にできるようになれば、麻雀AIの文化の発展に繋がると考えております。恐らく、麻雀そのものの人口も増えるかと。


長々と書きましたが、戦略読みの要素は強いAIが実現できてからする話であって、麻雀AI界ではまだ時間がかかりそうですね。
しかし、こういった要素は強くなるためだけではなく楽しむためにも必要な要素なので是非取り入れることができればなと思います。
既存の麻雀AIのアルゴリズムは最速和了、降りの認識、降り、鳴きの技術を中心に考えられている。
ただし、降りの認識とはリーチの有無、鳴きの数などを考慮して認識している。


1位を取るための理想の打ち方は、最速で最大点数の役で和了ることである。
しかしそれは現実的でなく、実際は最速和了りか素早くそこそこ高い点数であがり、他人に和了らせないことが目標となっている。
ネット麻雀だと上位プレイヤーになるほど和了点が小さくなるはより速さが求められていることに起因する。
ゆえに、現状ある麻雀アルゴリズムの多くは最速聴牌を目指すように作られている場合が多い。

では、手作りに関して求められるのは最速聴牌、最速和了だけだろうか?
東風戦の東4局、子である自分の点数が①45000点の1位、②10000点の4位、③2位と5900点差の3位などなど、①~③どの状況でも目指すのは最速和了だろうか?

答えはNO。順位によってなんらかの報酬がある場合、例えば②の状況で中のみ1000点で和了る人は恐らく私の言う麻雀とは違う麻雀を楽しんでいる人だろう。

麻雀は点数や順位によって同じ局面でも打ち方が変わる。
当たり前だが大切なことである。
現状のAIにこういった状況判断が組み込まれていないのが主流である理由として
1.成績への影響が他の要素に比べ小さいから。
2.目標点数(役)を決めて手作りするアルゴリズムを書くことが難しいから。

1.について
とつげき東北氏の先行研究によって成績との相関が特に強いのは放銃率、和了率であることがわかっている。また、最速聴牌(先制リーチ)、ベタ降り、単純な押し引き判断のみである程度までの成績には到達できることが多くの人が体験している。
点数数で打ち方を変えるアルゴリズムの優先度が低かったことが分かる。

2.について
最速和了を目指すネット麻雀では他のプレイヤーも同様の打ち方をするため、点数の変動が小さく、その技術が必要となる場面が少ないこと、点数はドラで簡単に調整できること、人間が打つ場合でも配牌、ツモに左右される部分が大きいことが挙げられる。
和了役の判定のアルゴリズムはあるので、私はそこから逆算して不要牌と必要牌の判断をするように書く予定である。


点数で打ち方を変えるアルゴリズム
具体的に必要なパーツは
・最速聴牌を目指すアルゴリズム(ある)
・局ごとの和了点の統計データ(ある、作りやすい)
・配牌、ツモ1~3巡目の手牌を向聴数、予想される点数で評価するアルゴリズム(向聴数を計算するアルゴリズムはある、点数を予想するアルゴリズムはない。)
・必要な点数に応じた役作り(ないが、点数を予想するアルゴリズムと重複する部分が多い)

具体的には、試合の終盤で自分がダントツであり、自分の和了り目が薄いなら4巡目から降りたり、ドラを切っていく。負けているなら最速聴牌ではなく高い手を作る。
東風第3局で2位との差が1000しかないから、オーラスで3900点和了られてもいいように配牌によっては4200点以上の手も見えるようにするなど。

私はAIのアルゴリズム全体を数値によってで判断するように書くつもりなので、
局が始まる前に点数差を認識しておくことによって取るべき戦略を変え、各種重みを変更したいと考えている。
例えば、他人の先制リーチがかかっている場合、打牌A、B、Cの比較で
自分の手
A 向聴数±0 +0.3a 
B 向聴数-1 +0.5a
C 向聴数+1 -0.4a
+
A 危険度 高 -0.3b
B 危険度 中 -0.2b
C 危険度 小 -0.05b
+

=?

平場、a,b=1
勝ってる a=0.5 ,b=1.5
負けてる a=1.4 ,b=0.6

こういった具合で数値の高い選択肢を選ぶ。
この定数の部分や変数の部分は機械学習やユーザーで決められるようにする予定です。



・成績の比較手法を正しく議論するために統計学の勉強を本格的に始めた。

・牌譜データさえあれば他人のデータも細かいデータまで出すことができると判明した。
しかし鳳凰卓の牌譜しか手に入っていない。

・特上卓の牌譜データを収集するためのプログラムについて、アドバイスを頂いた。
しかし、私のプログラミングスキルでは実現できそうにない。
友人が協力してくれるかもしれない。
ただし、優先すべきことは他にあるので、時間がかかっても大きな影響はない。

・サービスとしての麻雀AIを戦わせる場について具体的なプランを立てている。
・実際に研究を行って論文を書かれた方からメールをいただいた。
悩んでいた研究テーマとしての麻雀AIのアピールの仕方についての手法を教わった。

・成績と各種の割合(和了率や立直率など)との関係を用いて、Rごとの比較を行うのは難しいのではないかという指摘を頂いた。
あくまで麻雀AIを素早く強くするために必要な技術の分析のために考えてることではあるが、大きな課題となりそうである。

・成績と各種割合のデータを「麻雀解析.exe」を用いて出力するときの難点がある。
1.「麻雀解析.exe」は自分の牌譜でないと解析できない
2.天鳳公式から得ることのできるログには対戦者の名前は直接は書かれていない。

これらの解決策として、
1.有料版を使用して「麻雀解析.exe」をしようした人から成績のデータをもらう
2.公式から得る牌譜に対戦者の名前の情報を入れ試してみる
3.解析ツールを自作する。
綺麗な文章として纏められないのはご愛敬

正解に言うと将棋のようにAI同士を対戦させる文化を麻雀にも普及させたいです。


1.何故、麻雀AIを作りたいのか
1.1.人間が打つと時間がかかるから
1.2.新たな戦略を効率よく試したいから
1.3.不完全情報ゲームの研究として面白いから

1.1.人間が打つと時間が掛かるから
これについて
1.1.1.実力差を計るのには何千試合も必要であり時間がかかる。
1.1.2.牌譜検討によって得た戦略が有効であるかどうか判断するのに時間がかかる。

1.2.新たな戦略を効率よく考えたいから
下記で記述する現状の研究法では確かに有効な戦略は得られている。しかし、一つ戦略を生み出すのには非常に時間がかかる。GAやニューラルネットワークによって戦略を生み出すことそのものをAIが実現できれば、有効な戦略について効率よく考えることができる。


1.3.不完全情報ゲームの研究として面白いから
麻雀が他のテーブルゲームに比べ研究が進んでない理由の一つとしてゲーム理論で分類するところの「不完全情報ゲーム」である点が挙げられる。昨今のコンピュータの性能の大幅進化によってオセロ、将棋などの「完全情報ゲーム」についてはAI研究が進まっているが、「不完全情報ゲーム」については研究が遅れていた。
最近では、同じ不完全情報ゲームであるポーカー(の一部のルール)についてはナッシュ均衡の概念を用いることによって、世界チャンピオンに匹敵するAIが完成しているが、不完全であることに加え「多人数ゲーム」である麻雀については現状だと成果を上げている研究は少ない。
これらのことを踏まえ私は、麻雀について高い性能を持ったAIを作ることができれば他の不完全情報ゲームの研究の手がかりになると考えた。


N

お気に入り日記の更新

この日記について

日記内を検索