Crushing or Crushed

主にShort-handed NLHEで自分が勉強したことについてまとめるブログです。

GTOの体系化を1から考える - 1

シリーズものになる予定。

 

今回の記事は私が思っていることを淡々と綴るだけの記事です。間違っているところや疑問があったらTwitterやコメントで教えてください!

 

ポーカーにおける体系化とは

状態数が膨大なポーカーに対して、特徴が”似ている”情報を抽象化し、それにおける \mbox{GTO}^*を求めること。

 

f:id:alphanavis:20180630042212p:plain

IPレンジによってOOPレンジが決まるため、横に並んだ箱は対になっています。Flop Typeは特徴によっていくつかに分けたもの。ベットサイズは33%のみのもの、33%, 66%の2つのもの、などの選択肢になっています。この箱を選択して、そのシチュエーションに対するGTOを求めようというのが体系化のコンセプトです。

Optimal Bet Sizeは何によって決まっているか(フロップ以降)

PFのGTOはHUにならないことが多いので割愛。PFのベットサイズの最適化の論理も全く見当がつかない。

ポーカーは不完備情報ゲームですが、両プレイヤーが持つ情報でわかっているものが複数あります。

  1. IPのレンジ
  2. OOPのレンジ
  3. ボードに落ちているカード
  4. ベットサイズの選択肢
  5. ポットサイズ
  6. 有効スタック

また1,2,3,4,5から得られる情報は、

  1. IPのレンジのEV、EQと各ハンドのEV、EQ
  2. OOPのレンジのEV、EQと各ハンドのEV、EQ

従って、これらの8つの要素から最適なベットサイズが決まります。

体系化の何が難しいか

例)IPのA-high + ドライボードでのGTOを体系化したい。

IPのオープンレンジを15.0%、OOPのコールドコールレンジを16.8%とします。フロップにA-highのドライボードを10個用意、ベットサイズが33%,66%,125%,250%としてGTOsolverで計算させました。

「IP側は33%サイズのベットを50%の頻度程度打つ」という戦略 S^*が出たので、IPでプレイしていてA-highのドライボードのときはS^*をとりましょう!という結論にしました。

 (S^*は例です。本当に計算して求めたわけではないので注意)

この文を読むと疑問点が浮かび上がります。

疑問
  1. ドライボードの定義は?
  2.   S^*の戦略に丸め込んだ時のEVの損失は?
  3. 各フロップに対するレンジ全体のEV、各ハンドのEVの分散と偏差は?
  4. 選択したベットサイズの妥当性は?
  5. ”IPでプレイして”ってあるけどIP(OPEN15%レンジ)vsOOP(CAPPED16.8%レンジ)の場合じゃないの?

 

この5つの疑問点が体系化の何が難しいかを表しています。一つずつ見ていきましょう。

 

1.FLOPの特徴と抽象化

フロップの種類によってIPとOOPのEVが変化するのは自明です。本当ならばすべてのフロップの種類に対してGTOを知っておくべきですが、それは非現実的です。

なのでフロップの特徴毎に種類を減らせばよいことになります。A-highボード、K-highボード、ドライなボード、ウェットなボード等。種類を減らせば減らすほど、覚える量が減りますが、その分持つ情報量も減るのでNash均衡から遠ざかっていきます。また、正しくフロップを抽象化できないと、結果の妥当性が検証できません。

例でドライボードの定義は?とありましたが、ドライボードという特徴を正しく抽象化できていない場合、丸め込んだ戦略S^*に妥当性がなくなってしまう可能性があります。

困難な点:特徴による妥当なフロップの選択

 

2.どこまでEV lossを許すか

これはそのまま。

困難な点:EV損失をどこまで許すか決めること

 

3.EVとEQの分布(ここが正しくないかもしれない。

最適なベットサイズを決めるために必要な情報を最初に述べました。レンジ全体のEV(EQ)が等しくても各ハンドのEV(EQ)分布が異なる場合、最適なベットサイズが異なる場合が考えられます。フロップを抽象化する際にレンジ全体のEVで抽象化してしまうと、EV分布の情報が抜け落ちる可能性があります。

困難な点: EV,EQによる妥当なフロップの選択

 

4.部分ゲームのノード数

ベットサイズが一つしかないゲームのNash eq.と複数あるNash eq.は異なります(33%だけ、33%, 66%, 125%だけ)。どの程度ベットサイズの選択肢を持っておくかを定量的に決めるのは難しい。また各々のベットサイズの選択も難しい(25%, 50%のサイズなのか、33%, 66%のサイズなのか)。

困難な点:妥当なベットサイズの選択

 

5.Range vs. Range

 この例には結論部分に問題がありました。

IPでプレイしていてA-highのドライボードのときはS^*をとりましょう!

この結論だとBTN vs BB CCの場合も S^*をとることになります。この S^*が妥当な戦略かどうかを調べるにはIP vs OOPの考えられるレンジすべてに対して計算を行わなければなりません。

困難な点:フロップの抽象化だけでなく、レンジも考えないといけない

 

まとめ

状態数が膨大なゲームを抽象化するのは大変ですよ、という話。

次はフロップの抽象化はどのようにできるか考えたいです。

Poker AIからGTO学習パイプラインを知る

こんにちは。最近はポーカーそっちのけで理論の勉強ばかりしています。手段と目的が逆になってきている感がありますが、楽しいので良しとします。

今回はもうちょっとわかりやすい記事を。

 

昨今ディープラーニング機械学習を用いたゲームAIが話題によく上がります。AIで倒すにはまだあと百年はかかるだろうといわれた囲碁でも去年、人類最強の囲碁プロAIにが完封されました。ポーカーシーンでもHeads-up No-limit Hold'emにおいてプロ相手に14.7bb/100handsという素晴らしい成績を残しています。 

                    f:id:alphanavis:20180625132253p:plain

 

今回はそのPoker AI "Libratus"の学習パイプラインを追って、私たちがGTOsolverをどのように解釈するべきなのかを学べたらと思います。

 

・参考文献

Superhuman AI for heads-up no-limit poker: Libratus beats top professionals
Science  17 Dec 2017:
eaao1733
DOI: 10.1126/science.aao1733

http://science.sciencemag.org/content/early/2017/12/15/science.aao1733.full

 

Libratusとは

2017年にカナダのカーネギーメロン大学が開発したポーカーAIです。LibratusとはLatin で”バランスのとれた”という意味らしいです。つまり、Libratusが目指すのは、完璧なバランスが取れた戦略---GTO---です。毎アクションごとにGTOsolverを回すのは時間の制約上困難であるため、彼らはそれを克服するようなモジュールを提案しています。

 

1.Libratus modulesの概要

f:id:alphanavis:20180625131321p:plain

Abstraction(抽象化)

まず初めにゲームの抽象化(Abstraction)を行います。ゲームの状態数があまりに膨大なので、似ているところはまとめてしまおうというコンセプトです。

抽象化は私たちが行っているGTO体系化に少し似ています。

Eq. Finding(GTOの導出)

簡略したゲームに対してGTOSolverを用いて、ナッシュ均衡(Nash eq.)を求めます。

私たちで言うところのPioSolverやGTO+の計算と同じ。

Subgame Solver(部分ゲームに対するGTOを求める)

小さくしたゲーム空間でのナッシュ均衡と真のナッシュ均衡にはギャップがあります。より精度の良いNash eq.を求めるために、実際に行われているゲーム付近のゲーム木を再展開してNash eq.を求めなおします。

私たちで言うところの、気になったスポットをPIOにかけなおして、答えを確認する感じ。

Self-improver(強化学習)

抽象化したゲームにないような戦略をとられた場合、こちらはNash eq.を知らないので、相手にエクスプロイトされる可能性があります。なので、実際のゲームでとられた知らない戦略について、一日かけて計算しなおします。

私たちで言うところの、turnで200%のドンクを打たれたんだけど、どうすればよかったの???PIOに聞いてみよう。みたいな感じです。次からはそのような戦略に対する、反応を知っているので安心。

 

意外と人間と同じような考え方でmoduleが作られていますね。

 

2.ゲームの抽象化とGTOの導出

f:id:alphanavis:20180625133652p:plain

HU-NLHMではゲームの状態数(すべての場合の数)が ~10^{160}通りあるといわれています(定説ですが)。囲碁 ~10^{180} ですので、非常に大きいということがわかります。このすべての状態についてNash eq.を求めるのは非現実的です。なのでゲームを小さくしてあげることが必要になります。次に小さくしたゲーム空間のGTOを求めます。 \epsilon \mbox{ equilibrium}とは制約を緩くした状況下でのGTOのことです。PIOを使うときにも"Exploitable for 0.25% of the pot per hand (used pot size = 50)"といったように何%の誤差を許すかを指定すると思います。 \epsilonはその何%のところです。

 \epsilon \mbox{ equilibrium}(Game Theory sub-Optimal)では実はプロに勝てませんでした。なので、turn以降のプレイをフルサイズのゲームツリーに展開して計算しなおします。 \epsilon \mbox{ equilibrium}が真のGTOに十分近いという仮定を利用すれば計算時間がいくつか削れるので、実際のプレイに使える時間内に計算を終わらせることができます。

以下に、実際に何が行われているのかと、私たちがブラックボックスとして使っているGTOsolverの計算が何を意味しているのかを簡単に説明します。

戦略集合の抽象化

f:id:alphanavis:20180625225500p:plain

実際のAの戦略はcheckから1$刻みで10000通りあります。しかし、400$と401$ベットの戦略に劇的な戦略の変化はあるでしょうか?計算コストを節約するためにこの誤差を許して500$刻みにするだけで10000通りあった戦略が20通りまで減ります。

PIOsolverでベットサイズを指定するのはこの作業をしているわけですね。使ったことがある方はわかると思いますが、ベットサイズを多く指定すればすれはするほど、計算時間がかなりかかります。私たちが導出しているGTOは部分ゲームのNash eq.だということを忘れないようにしましょう。

 

部分ゲーム(Subgame)

 ゲーム全体の中の一部のゲームのこと。実際のゲームではベットサイズ選択の幅がとても広いが、PIOに解かせているゲームはベットサイズが複数程度のもので、このゲームは全体のゲームの部分ゲームである。

 

状態集合の抽象化

f:id:alphanavis:20180625225517p:plain

上の図を見ていただくとAc5dとAs5dが同じグループに属しています。リバーのボードに対して、これらのカードの期待値と勝率はほとんど同じです(実は違うが説明のためにほとんど同じとする)。計算コストを削減するためにこれらのハンドを1グループにまとめています。

PIOで集合分析をする際のコンセプトと同じですね。体系化するために、A-high+low-connectedボードや超ウェットなボードといったようにいくつフロップを指定して、OOPとIPのベット率、EVの分布を調べるといったことは大変有用です。しかし、カードの抽象化と同じように部分ゲームのNash eq.を導出しているということに気を付けましょう。

 \epsilon \mbox{ Nash Eq.}

f:id:alphanavis:20180625225743p:plain

厳密なNash eq.を導出するには抽象化されたゲームに対しても状態数が多すぎて計算コストがかかってしまいます。なので制約を緩くしてGTOを求める必要があります。それが \epsilon \mbox{ Nash Eq.}です。

PIOを使うときにも"Exploitable for 0.25% of the pot per hand (used pot size = 50)"といったように何%の誤差を許すかを指定すると思います。 \epsilonはその何%のところです。私たちがPIOを使って求めているGTOはこの制約を緩くしているGTsO(Game Theory sub-Optimal)です。

GTOsolver algorithm

PIOの中身。Monte Carlo Counterfactual Regret Minimizationというアルゴリズムが使われています。アルゴリズムの説明は割愛。興味がある方はLibratusの論文に引用されている参考文献をチェックしてみてください。

Blueprint Strategy

f:id:alphanavis:20180625230015p:plain

さて、ゲームの抽象化、GTO導出アルゴリズムの選定が終わると実際にGTOを求めることになります。抽象化されたゲームに対するNash eq.の集合を、彼らはBlueprint Strategyと呼んでいます。Blueprintとは日本語で設計図という意味です。抽象化された部分ゲームのGTOなので”ラフ”(Rough)な戦略の集合です。実際このラフな戦略ではプロには勝てませんでした。。。

私たちがPIOで目指しているのはこのBlueprint strategyを組み立てる、ということになります。妥当性のあるフロップを選定することで、すきのないBlueprint Strategyを築いていきたいところですね。

 

3.Subgame SolverとSelf-improver

Blueprint Strategyでプロに勝てなかった原因は大きく2つあります。

  1. 完全な(もしくは十分な)戦略ではないため搾取可能。
  2. Blueprint Strategyにないような戦略をとられると、GTOが全く分からないので、めちゃくちゃな戦略をとってしまう。

1を解決するためには真のGTOに近いGTO戦略を導出する必要があります。そのために提案されたのがSafe Subgame Solvingです。

Safe Subgame SolvingとはBlueprint strategyが幾分かNash eq.に近いことを利用して,部分ゲームからゲーム木を再展開してNash eq.を解く方法です。ツリーの再展開にはAlphaGoでも用いられたMonte Carlo Tree Searchが採用されています。このアルゴリズムにより3bb/100handsのEVを改善しました。

 

2を解決するには、AIが持っている部分ゲームを拡張する必要があります。

f:id:alphanavis:20180626064914p:plain

人間側はBlueprintにないようなゲームを展開することで優位を築くことができます。水色の点線を実際にプレイされた手だとすると、AI側は一番近い、ノードに丸め込むしかありません。赤色が実際にAIがとる戦略です。赤色の戦略は水色のGTOではないので、人間側が正しくプレイするとAI側の-EVになります。

実際のゲームは20日間に渡って行われました。AIは自分が知らない戦略、相手がよくとった戦略を記憶しておきます。夜の間にその部分ゲームの均衡を計算して、Blueprintを強化していくことにより、相手に搾取されない戦略を築きました。

 

4.結果と考察

Libratusはプロ5人相手に戦い、誰一人としてプロは勝てませんでした。AIから観察された結果を考えることで、強いプレイヤーになるためにはどのような戦略をとればよいかがわかります。

Libratusの強みは

  1. 多くの異なったベットサイズの使い分け
  2. 正しいドンクベット
  3. ポット200%以上のベット

だそうです。弱みと言えば”相手の戦略から搾取しない”といったところでしょうか。しかしGTOでプレイすることで、プロ相手に14.7bb/100hands出しているので問題ないと思います。(レーキはなし)

 

5.おわりに

今回はAIのGTO学習パイプラインを追うことで、私たちが普段使っているGTOsolverでは何を解いているかということを理解しました。ブラックボックス的に使うのではなくある程度知っておかないと、GTOsolverを神格化してしまうので注意しましょう。

 

ベットサイズがディフェンスレンジに与える影響(訂正版)

twitterFLOP以降のEVがおかしいというご指摘を受けました。それを受けて訂正いたしました。

問題だった点:GTO(UTG) vs not-GTO(BB)のEV差を見るとき、UTGのCB後の各EVを比べていた点。CB後のEVで戦略の良さを評価してしまうと、AAのPure NutsのみでCBを打つのが一番良い戦略のような結論にならざるを得ません。

改善:UTG open(Hero) vs BB cold callを考えるときに

  1. GTO       vs GTO
  2. GTO       vs not GTO
  3. not GTO vs not GTO

のゲーム全体のEV差を評価する。(CBを打つ前の)

 

狙い

実際にGTOのことはなんとなくわかったけど、レクリエーショナルプレイヤーを倒すにはどのようにするべきかを考える。

 

ベットサイズとディフェンスレンジ(UTG OPEN vs BB ColdCall編)

今回のボードはA-highのドライボードを想定します。

Ac 9d 6s, starting pot 55, Effective stack size 945.

BBはチェック。UTGベットサイズの33%と66%を見てみます。

UTG 33% C-bet (54% bet)

f:id:alphanavis:20180627034622p:plain

UTG 66% C-bet (34% bet)

f:id:alphanavis:20180627034726p:plain

サイズを大きくするとc-bet率が下がっています。

BBのディフェンスレンジ

これに対するBBの抵抗レンジは(見にくい方は拡大してください)

f:id:alphanavis:20180627035406p:plain

                                                           Flop Ac 9d 6s

33%のCBに対してはセットやガットショットストレートドロー、バックドアフラッシュドロー+ワンペア等をチェックレイズに回しています。JJ,TT,88,77等のマージナルなハンドはコールにしていますね。

対して66%のCBに対してチェックレイズはトップセットと一部のバックドアフラッシュドロー+ワンペアのみです。JJ, TT, 88, 77はフォールドしています。(この辺降りられる人は多分少ない)

これからわかる通り、異なるベットサイズに対して自分の抵抗レンジを変えなければいけないことになります。

フィッシュ(not GTO)はベットサイズを気にしない

彼らは自分のハンドしか見ないので(ちょっと進化すると相手のレンジを考えるふりとポットオッズの計算くらい)33%と66%のベットサイズの差なんて気にしません。なのでバリューは大きめに打つとよいです。それを以下に示します。

PIOのロックノードを使って、66%のUTGのベットサイズに対する抵抗レンジにvs 33% CBを入れてEVの変化を見ます。(フィッシュはベットサイズを気にしないので、33%を打たれようが66%を打たれようが抵抗レンジを変えないという仮定)

f:id:alphanavis:20180628074419p:plain

左の図は66%のCBに対するGTOの抵抗レンジのEVです。右の図は66%のCBに対して、33%CBディフェンスレンジを使っているときのIPのEVです。IPのEVが訳1.1上がっていることがわかります。(11.0bb/100hands相当)

      

UTG側はAヒットグッドキッカー(+バックドアフラッシュドロー)、ツーペア、9ヒット等で66%のベットを行うのがGTOだそうです。なので、フィッシュ相手には強いハンドのみでベットしてるだけで勝てます。(ブラフレンジを狭くする)

 

では、UTGが66%のベットに33%ベットレンジを用いるとどうなるでしょうか?(感覚的にはフィッシュ相手に頻度高めの大きいベットを打つ感じ、自己流の搾取戦略)

f:id:alphanavis:20180628080026p:plain

エクスプロイトなプレイをしていると思っていたのにIPのEVが33.846になっています。自分がGTOから外れてしまったおかげで、こちらも自らEVを捨ててしまいました。正しく搾取するのは難しそう。

まとめると、

f:id:alphanavis:20180628080354p:plain

UTGにとって一番EVが高いのはGTOプレイで相手がnot GTOの場合。UTGにとってEVが一番低いのは、自分が間違った搾取プレイ(GTOから外れた)場合。

 

終わりに

相手がGTOをプレイしている場合、GTOから離れるとまずいですよ、ということが伝わっていれば幸いです。

ところであなたはフィッシュじゃないんですか?という質問には一切お答えできません。予めご了承ください。

 

 

 

よりGTOについて知りたい方は過去の記事も参照ください。

 

alphanavis.hatenablog.com

alphanavis.hatenablog.com

alphanavis.hatenablog.com

 

 

雑記:メンタルゲームーサンクコストー

今回は人間の心理からポーカーを考えていこうと思います。うまいプレイヤーほど自分のメンタルを一定に保ちます。言い換えると、勝ち負けにかかわらず同じシチュエーションでは同じプレイをすることができます。

 

狙い

自分への戒め。ティルトでブラフはダメ、絶対。

サンクコストとは

サンクコストとは”過去に発生した回収不能な投資”のことです。ここでいう投資とは金銭であったり時間であったりを意味します。有名な例を挙げると、「Aさんは映画をみにいきました。1500円を払い、30分見たところでこの映画がとてもくだらないということに気付きました。しかし彼は30分と1500円をすでに投資しています。」

この時、彼があと1時間30分座り続けたときに、1500円と2時間という投資に対して、投資以上の満足感を得られるとは思いませんでしたが、使ったお金と時間がもったいなかったのでこの映画を見続けました。案の定、時間とお金を無駄にしました。

 

f:id:alphanavis:20180627014829p:plain

 

この例のサンクコストは”1500円と30分”です。この投資は回収することができません。

彼が意思決定に際して考慮すべき項目は、”映画がおもしろくなるかどうか”だけです。今までに投資したリソースの量ではありません。

かけたリソースの量が大きければ大きいほど、サンクコストのバイアスも大きくなります。

 

ポーカーにおけるサンクコスト

ポーカーにおけるサンクコストはあなたがこれまでに投資したベットです。例えばフロップでOOPからナッツフラッシュドローでチェックレイズ、ターンでベットしたとします。リバーの時点でフラッシュは完成せず。ここでのサンクコストはあなたがポットに供託したチップになります。ここでGTOの解をチェックだとしましょう。そしてあなたはGTOの解を知っています。

???「一抹の可能にかけてオールイン!!!!」

Reg「コール」

 

f:id:alphanavis:20180627014252p:plain

 

これがサンクコストの呪いにかかっているプレイヤーの例です。そして人はサンクコストを嫌う傾向にありますので、このような事例は多くあります。特に3-bet以上のポットだと、この傾向は強くなります。

 

すでに発生しまったコストを意識決定の材料に考慮してはいけませんね!

 

おわりに

自分で書いていて耳が痛くなるような記事でしたが、この傾向にあるのは自分だけじゃないと思います。Aゲームを心掛けるときはサンクコストも心の片隅に置いておきましょう。

 

参考文献

http://www.pokerology.com/articles/the-sunk-cost-effect/

3-4-5Bettingへの対策

1.3-4-5betする意味

主に2つあります。

For Value

AAはプリフロップで全部突っ込めればとても嬉しいです。なぜならプリフロップの時点でeuqityが負けているハンドはないからです。3(or more)-betする意味はバリューレイズです。自分のハンドのequityが大きいうちにポットを大きくしてしまおうという狙いがあります。

For Steal ( and protect our stronger range )

BTNのオープンに対してSBがre-stealする場面はよく見かけると思います。これは相手の広いレンジでのオープンに対して、3-betをすることによって相手の弱いハンドをおろしてポットを獲得するという狙いと、広めのレンジで3-betすることでこちらの強いレンジを守るという狙いがあります。

4-5-betも基本的には同じです。

 

2.3-betについて考える(BTN vs Blinds)

f:id:alphanavis:20180624021255p:plain

                        fig : BB(3bet 11bb) vs BTN(2.5bb)

BB - As 3-better

BTNの2.5bbに対してBB re-steal 3betを考えます。

ポットはblindを合わせて4bbです。11bbにレイズするとすれば10bbをリスクにかけて4bbをスチールしに行くので

 \dfrac{10}{4 + 11} = 0.667

従って、BTNが66.7%以上フォールドすればany hands 3-betで+EVになります。

BTN - As flatting 3-bet

BBの3-betに対して66.7%以上降りてしまうと-EVになることがわかりましたので、自分のopenレンジの33%以上でディフェンスすることが必要になります。45%のレンジでオープンしたとして、

 0.33 * 0.45 = 0.149

なので、15%のレンジでディフェンスすればよいことになります。(4-betレンジを含む)

 

3.4-betについて考える

 BTN - As 4-better

実際には15%のレンジの中にはKK+, AQs+等の強いハンドが含まれており、4-betレンジに回したいです。

ポットサイズ4bb + 11bb = 15bbに対して、22bbにレイズするとすれば19.5bb(すでに2.5bb払っている)をリスクにかけて15bbをとりに行くので

 \dfrac{19.5}{15 + 22} = 0.527

従って、BBが4betに対して52%以上フォールドするとすればany hands 4-betで+EVです。

BB - As flatting 4bet

4-betterに対して48%以上のディフェンスが必要なので、14%レンジで3-betしたとすると6.7%のレンジでディフェンスすればよいことになります。

 

4.実際の3-4-betサイズ

OOPの3betサイズは4倍、IPの3betサイズは3倍というのが現在の主流です。なぜかというと、OOPはポストフロップのプレイが難しく、equityを実現しにくい(IPより)です。したがって相手のディフェンスレンジを狭める意味で大きめのベットサイズが好まれます。

3bbのオープンに対して

  • OOP      - 3-bet: 12bb,  4-bet: 24bb
  • IP           - 3-bet: 9bb,     4-bet: 20bb

 を使用しています。

まとめ

5-betについても同様の計算なので省略しますがまとめると

  • 3-betに対して30~40%のディフェンスが必要
  • 4-betに対して40~45%のディフェンスが必要
  • 5-betに対して45~50%のディフェンスが必要

ただし3-4-betのサイズによってディフェンスレンジが変化することに注意してください。大きいベットに対してはディフェンスレンジは狭くてしていいです。

 

参考文献

 

Applications of No-Limit Hold'em (English Edition)

Applications of No-Limit Hold'em (English Edition)

 

 

洋書:Applications of No-Limit Hold'emの読み方

GTOを学ぶ上で著名なApplicaitions of No-Limit Hold'em(以下AoNLHM)を英語が苦手な方でも読みやすいような読み方について紹介してみたいと思います。

 

Applications of No-Limit Hold ’em: A Guide to Understanding Theoretically Sound Poker

Applications of No-Limit Hold ’em: A Guide to Understanding Theoretically Sound Poker

 

 

Solverの落とし穴

???「GTOって最強なんでしょ?、PIOsolver買ってzoomでブイブイ言わせてやろ」

PIOを買ったばかりの私です。

PIOはいわゆる参考書についている付録の”答え”です。例えば数学の参考書に答えがついていますよね、それらには解説もついていると思いますが、PIOには解説がついていません。

 

答えだけ覚えていったらテストで散々になってしまいます。なぜその答えになっているかを理解することはとても大事です。暗記できるところは暗記する(Push or Fold, Preflop等)、暗記できないところは体系化してなるべく理解する、これができるとPIOも喜びます。

この本を読んだら何がわかるか

GTOsolver(PIO, GTO+)やSnowieの計算結果の理解を手助けしてくれます。

Solverが出した結果は計算結果であり、なぜそのようなアクションになっているかは説明してくれません。 しかしこの本を読んで理論を理解すれば、計算結果を理解しやすくなります。正直GTOを暗記することができれば計算結果なんて理解する必要がないのですが、GTOを体系化して吸収するためにはやはり理論を理解することが一番早いと思います。

この本では主に

  1. IP, OOPのプレイの仕方
  2. ベットサイズがレンジにどう影響を与えるか
  3. 3ベットポットでのプレイ

を学習することができます。

 

読み方

結論から。各章の"Summery"から読む。以上。

Summeryにはその章のまとめが箇条書きにして書いてあります。大事なところをまとめてあるわけですね。この本は約500pageあります。辞書並みに分厚いですので、読むのに根気がいります。しかしSummeryだけ読むなら、30page以下です。

 Summeryの大事だと思うとこころ、知らなかったことにハイライトしましょう。そして、前に戻ってそこを読むとよいです。結構数式が出てきますが、算数(割り算、掛け算)程度なので数字に疎い人でも理解できますし、正直理論だけ理解するなら、数式を計算できなくても大丈夫です。せっかくtwitterというコミュニティがありますから、質問投げたらだれか答えてくれますw。

 

最初から全部理解しようとしなくてもいいです。というか、最初からチミチミ読み進めても読み終わることには半分以上忘れています。とにかくSummeryに書いてあることを覚えておいて、なぜそうなるかが気になったときに辞書的にこの本を使えば、英語が苦手な方でも読みやすくなると思います。

 

個人的にはkindle版を強くお勧めします。ハイライトできるし、章ごとに飛べたりしますので。またコピー&ペーストでGoogle翻訳機を使えます。最近Google翻訳に興味本位で論文を突っ込んでみたら意外と読めたので、この本でも使えるかもしれません。

 

 

 

AKQ GameのEV分布でGTOを学ぶ(前回の続き)

 

alphanavis.hatenablog.com

 の続きを少し短めに。また少し数理的なってしまいますがなるべく要点だけお伝えしていけたらなと思います。

 

1.おさらい

AKQ Gameはリバーのシチュエーションをとても簡略化したものです。

 

OOPの期待値(EV)は以下のように計算されるんでした。

 E_{P_1} = \dfrac{1}{6}bc-\dfrac{1}{3}b(1-c)-\dfrac{1}{6}c+\dfrac{1}{6}b

b = Pr^Q(\mbox{bluff})はIPがQでブラフを打つ確率、

c = Pr^K(\mbox{bluff chatch})OOPがKでブラフキャッチをする確率でした。

AはPure Nuts(100% equity)、KはBluff Cacher(50% equity)、QはPure Air(0% equity)でした。

AKQ Gameはリバーのブラフ率、ブラフキャッチ率の最適な頻度を考えるのに大変良いモデルだと思います。

 

2.EV分布

さて、bc[0,1]の範囲をとりますが、これらを動かしてみてるとOOPの期待値はどのように変化するのでしょうか。見てみましょう。

f:id:alphanavis:20180625034015p:plain

x軸はIPがブラフを打つ確率です(P_2 bet)。y軸はIPがブラフキャッチをする確率です(P_1 call)。z軸がP_1(P_{OOP})の期待値です。例えばIPがすべてのQでベットし( b = 1.0)、OOPがすべてのKでフォールド( c =0.0)する戦略をとっていると、OOPの期待値は約-0.15bb、つまり-15.5bb/100handです。

アグレッションが異常に高い、いわゆるManiacなプレイヤーに対してコールを多めにしなければいけないのはこういうことです。

 

OOPの期待値が0以上になっている点だけを緑の点でプロットしてみると、

f:id:alphanavis:20180625035043p:plain

このような風になります。OOPのはIPのすべての戦略に対して期待値が正になる部分は非常に少ない、言い換えると大変不利だということです。(ポーカーはポジションゲーだということがよくわかります。)

 

3.搾取プレイ

2節ではマニアックに対してコールするという戦略が必要だということをお話ししました。これは搾取プレイに当たります。 b=0.85のIPとプレイしているとすれば、OOPの期待値は以下の水色の線になります。

f:id:alphanavis:20180625035741p:plain

OOPの最適戦略はすべてのKでコールになっていることが図からわかります。大体期待値は0.13bb/handあたりでしょうか。

しかし、IP側がこちらのすべてコールという戦略に気づき始め、ベットする頻度を極端に減らしてきました。 b = 0.25

f:id:alphanavis:20180625035946p:plain

こちらはすべてのKでコールする戦略をとっているため期待値がマイナスになっています(-0.12bb/hand)。これは、IPのブラフ頻度が減ったことにより、相手のベットレンジのナッツ率が上がったためです。

水色線のような P_2ベット戦略のEV分布をみると、傾きがあることがわかります。この傾きがないような戦略がGTOです。傾きがないということは相手がどの戦略を選択しようと、EVが変化しません。

 

4.AKQ GameのGTOとEV

f:id:alphanavis:20180625040631p:plain

前回の記事でそれぞれのGTO

 b=\dfrac{1}{3},c=\dfrac{1}{3}だということを証明しました。上の図はGTOにおけるEVの線分です。どちらも傾きがないことが見てわかります。P_1GTOをプレイしているときの期待値は -\dfrac{1}{18}です。ゼロサムゲームなので、必然的に P_2の期待値は +\dfrac{1}{18}です。

P_2GTOでプレイすれば必ず +\dfrac{1}{18}の期待値が保証されますが、そこから離れてしまうと先ほど説明したように、P_2の戦略によっては-EVになります。

 

青線と緑戦の交点を鞍点(saddle point)と言います。与えられている関数を偏微分することによって求められるのですが、最適化理論によく出てくる話です。

 

5.おわりに

2記事にわたってAKQ Gameを勉強しました。GTOがどういうものなのかを再確認するのにとても役に立ったと思います。あと、ポーカーはポジションが本当に重要だということを実感できました!