※ChatGPT作、”テキサスホールデムをプレイする人工知能”
手札毎のプリフロップ戦略
前回の投稿
で作成したシミュレーションを用いると、特定の手札が配られたときに最も期待値が大きい戦略を求めることができる。今回はそれを試してみよう。実際に開発したプログラムは次のページにおいておく。
読者が試すには計算が重すぎる(実際のソルバーとかを開発する場合は並列処理が必須だろう。)ので、筆者が何日かかけて計算した結果を示そう。
前回同様に、ゲームを簡略化しフロップ以降のベッティングラウンドではすべてのプレイヤーがチェックするものとして勝敗を決定する。ブラインドは10/20で、各プレイヤーのスタックは180、レイズは2ベットを60、3ベットを180に固定する。対戦相手が特定のハンドレンジについて戦略を固定している場合において、特定の手札が配られた場合、以下のそれぞれの戦略を取った場合のチップの期待値を計算する。
- 3ベット/3ベット・・・3ベットまでレイズし、受動的には3ベットまでコール
- 2ベット/3ベット・・・2ベットまでレイズし、受動的には3ベットまでコール
- 2ベット/2ベット・・・2ベットまでレイズし、受動的には2ベットまでコール
- 1ベット/2ベット・・・リンプインし、受動的には2ベットまでコール
- 1ベット/1ベット・・・リンプインし、レイズされた場合はフォールド
- フォールド
ただし、リンプインはしないプレイヤーも多いだろうと思うため、本稿では4.と5.は無視して戦略を求める(計算すると、意外に1ベット/2ベットの期待値が一番高い手札が存在しているが、筆者によるゲームの簡略化による影響もあるかもしれない。しかし、現実にはリンプインした方が良い場合も少なくないのかもしれない。)。見やすいように各戦略は以下で色塗りする。
- 3ベット/3ベット・・・赤
- 2ベット/3ベット・・・青
- 2ベット/2ベット・・・緑
- フォールド・・・灰色
アンティがない場合
最初に、タイトアグレッシブなプレイヤーのモデルについて最適な戦略を計算しよう。タイトアグレッシブなプレイヤーは以下のような戦略を採用していると仮定する(フロップ以降の戦略を無視するため、単純に勝率が高い順にVPIPが20%程度になるようにハンドレンジを定めている)。
3bet/3bet | 2bet/3bet | 2bet/2bet | Fold | |
---|---|---|---|---|
TAG | 10%, 2人 | 20%, 2人 | なし | 左記以外 |
実際の各手札毎の戦略を示せば以下の通りである。

プレイヤーは6人とし、自分以外のプレイヤーは上記のベット戦略を採用しているものと仮定する。この場合における各手札の最適な戦略は以下の通りである。

多少の差異はあるものの、大概対戦相手のハンドレンジやベット戦略と同じ戦略を採用することが最適であるように見える。こういった意味で、アンティがないゲームではVPIPが20%程度になるようにハンドレンジを絞ることが均衡戦略になっていると推測できるだろう。アンティがないゲームではフォールドすることに対するペナルティがSB、BB以外にはないため、弱い手札は遠慮なくフォールドすることが適切な行動であるということになる。
一方で、アンティがある場合に同様にして対戦相手が20%までハンドレンジを絞っていた場合の最適な戦略はどうなるだろうか?アンティは0.25bbと仮定しよう。これを計算してみると以下のようなイメージになる。

広い範囲の手札でエントリーすることが期待値を最大化する戦略につながるように見える。要するに、アンティが0.25bbもある場合はVPIPが20%になるまでハンドレンジを絞る戦略はフォールドしすぎであり、ルースにプレイすることでエクスプロイトできるということになる。上記の戦略は、勝率テーブルとして4人の表を用いたVPIP60%の戦略に近い。アンティが0.25bbある場合は、ポーカーの本で勉強して20%にハンドレンジを絞るプレイヤーが初心者っぽいVPIP60%ぐらいのプレイヤーにカモにされるという珍現象が生じる可能性がある。実際に、筆者がゲームをやり始めたころに感じたのはVPIPを20%に絞っても強くない気がするということであったが、アンティに原因があったのかもしれない。
アンティとVPIP
前節で述べたように、アンティがある場合は最適な戦略におけるVPIPは20%というわけではないようである。筆者がプレイしているゲームだと0.25bbのアンティがついているので、VPIPは高めに調整する必要がある。おそらく、プレイヤーが短時間でゲームを楽しめるように参加率を高めるようにゲームを設計しているのだろう。また、アンティが大きいと参加率が上がるため、スキルより運の要素が強めになる傾向があるのかもしれない。プレイヤーのスキルで大きく差がついてしまうと、ゲームの集客を行う上で都合が悪い部分もあるのかもしれない。プロプレイヤーお断りみたいなカジノの場合は、アンティがかなり高めに設定されている場合もあるようである。
それではどの程度のVPIPになるように調整すればよいかということであるが、ChatGPTによるとアンティが0.1bb上がるごとに大体VPIPは4%ぐらい上げるようにエントリーすると良いらしい。表をコピペすると
アンティの比率 | VPIPの目安 |
---|---|
アンティなし | 18~22% |
0.1bb | 22~26% |
0.2bb | 25~30% |
0.3bb | 28~34% |
0.5bb | 32~40% |
というのが目安であるらしい。筆者がやっているゲームだとVPIPが30%ぐらいが均衡戦略になりそうである。ただし、筆者が作った計算機で計算すると40%ぐらいが均衡戦略になりそうに見える。最後に、これらの計算結果を確認してみよう。
アンティが0.25bbの場合
アンティが0.25bbある場合について、次のような戦略をとるプレイヤー5人と対戦する場合の最適なプリフロップ戦略を求めよう。
3bet/3bet | 2bet/3bet | 2bet/2bet | Fold | |
---|---|---|---|---|
アグレッシブ | 10%, 2人 | 20%, 2人 | 40%, 4人 | 左記以外 |
実際の各手札毎の戦略を示せば以下の通りである。

これに対して、期待値が最大になるベット戦略を計算すると次の通りである。

若干対戦相手のプレイヤーよりレンジが広い気がするが、大体VPIPが40%ぐらいが均衡戦略になりそうに見える。このようにアンティの水準によって最適なプリフロップ戦略はだいぶ異なるように見えるため、参加するゲームのルールに応じてVPIPの水準を調整する必要があることには注意が必要だろう。
また、アンティが0.25bbの場合は、ランクの低いSuitedのハンドは全般的にフォールドする場合と2ベット/2ベットでエントリーする場合、2ベット/3ベットでエントリーする場合で期待値に大きな差がない傾向があるように見える。おそらくこれらのハンドはツーペア以上の役が出来た時に強い手札を刺すことができるが、それが発生する確率がランクの大きさとあまり関係がないためだろう。ランクの低いSuitedの手札は全般的にフォールドしてもいいし、2ベット/2ベットでエントリーしても期待値は大して変わらないというのが結論になるように見える。うまくプレイできる自信があれば3ベットにコールしてもよいということになる。0.25bbのアンティがある場合は、筆者のSuitedは全部エントリーするという初心者感が全開な戦略にもある程度合理性があるということになるかもしれない。まあ、全部エントリーはさすがにやりすぎ感がある気がするけど・・・
均衡戦略を機械的に計算できるか?
アンティなどゲームのルールによって、採用すべきハンドレンジは大きく変わることが分かった。そのため、与えられた条件の下で最適な戦略を機械的に導出できる仕組みが欲しい気がしてくる。本稿では対戦相手の戦略を固定して計算したため、モンテカルロシミュレーションでひたすら計算すれば最適なベット戦略を求めることができた。これをゲーム理論のナッシュ均衡戦略のように、対戦相手が自分と同じ最適なベット戦略を採用してくるという前提の下で最適なベット戦略を求めることができるだろうか?実をいうと、これは反実仮想リグレット最小化(Counterfactual Regret Minimization)というアルゴリズムを使って計算するようである。このアルゴリズムについては、理解が及ぶようになったらそのうち簡単に紹介したいと思う。
また、反実仮想リグレット最小化はベット戦略を混合戦略として推定するが、本稿のように最適な純粋戦略として均衡戦略を求める場合はどうすればよいだろうか?本稿のように、各手札で採用できる戦略が4通りあり、かつ、それを169通りの手札で定める必要がある場合、\(\small 4^{169}\)の組み合わせの中から最適な戦略を求める組み合わせ最適化問題を解くことになるだろう。これはおそらくチェスや将棋のAIと同じであり、深層強化学習(DQN)を用いて解を探索することになるだろう。筆者のような簡易なお手製プログラムで解を求めることは難しいということであきらめるしかない。機械学習マスターだという自信がある人は挑戦してみてはどうだろうか。