見出し画像

GTO+の使い方⑥Special code input編

これまでのあらすじ

前回までAdvanced tree builderにおけるOOPとIPのベットサイズの入力方法を説明しましたが、各ポジションのカスタムセッティングに特殊なコードを入力することにより比較的複雑なアクションも設定できます。使いどころはあまりないかもしれませんが、今回はこの特殊コードについて説明したいと思います。

追加オプション(Extra option)の入力

各ストリート(フロップ、ターン、リバー)の「Use custom settings」をアクティブにすると入力画面が拡張されて、リードベットの設定とチェックした場合のチェックレイズの額が設定できるようになります。

1⃣複数のベットサイズ設定(Mutiple bet sizes)

入力項目に「50,60,70」と入力するとポット50%、60%、70%ベットの意味になります。「、」で区切らなくてもスペースを入力すると自動で「、」が表示されます。オールインを選択肢にしたい場合は「A」と入力してください。

2⃣チェックレイズ(Check-raise)

相手のベットに対するレイズ額を入力する場合、先に説明したとおりポット何%ベットでも入力できますが、チェックレイズにおけるポットサイズの計算は複雑ですので、オンラインポーカーでよくみられるベット額の2倍、3倍、4倍と選択したい場合は「2x,3x,4x」と入力してください。

3⃣ジオメトリックベットサイズ(Codes for geometric sizing)

 リーバーで自然にオールインできるサイズのベットをジオメトリック(幾何学的)ベットサイズといいます。
g=X」と入力するとXに最も近い幾何学的サイズのベットを作成します。例えば「g=50」 は、ポット50% に最も近い幾何学的サイズのベットをあらわします。
g>X」と入力すると幾何学的にX以上のサイズのベットが作成されます。例えば「g>50」 の場合、ポット50% 以上の最も近い幾何学的サイズのベットをあらわします。
g<X 」と入力するとX以下の幾何学的サイズのベットが作成されます。例えば「g<50」 の場合、50% 以下の最も近い幾何学的サイズのベットをあらわします。
gX」と入力するとX回のベットでスタック全部をポットに入れることになる幾何学的サイズのベットを作成します。したがって、「g4 」は4回のベットでスタック全部をポットに入れるサイズとなります。つまり「g1」は1回のベットでスタック全部をポットに入れるオールインを意味します。

プローブ(probe)、ドンク(donk)、コンティニュエーションベット(C-bet)

OOPのターン、リバーにおける最初のベットにはプローブ(probe)、ドンク(donk)、コンティニュエーションベット(C-bet)を区別してベットサイズを設定できます。
「50d,60c,70p」と入力すると、フロップでオリジナルレイザーであるIPがCBを打った場合、ポット50%サイズのドンクベット(donk bet)を打つ、フロップでチェック&チェックで終わった場合、60%サイズのCベットを打つ、フロップでオリジナルレイザーであるIPがチェックした場合ポット70%でベットする(probe bet プローブベット)という設定になります。

0入力

0 を入力すると、ベットは除外されます。Check-raiseに「0」を入力するとOOP はターンでチェックレイズを行いません。また「75,0d」と入力するとポット75%のリードベットをしますが、前のストリートでIPがベットしていればドンクベットをしないという設定になります。

オールイン

「A」のコードを入力するとオールインが選択できるようになります。

GTOソルバーのCFRアルゴリズム

 これまでIPとOOPのハンドレンジを入力し、選択するベットサイズを入力してきました。次回から実際にソルバーを回して解析(Run solver)するわけですが、ソルバーがどうやって計算しているのか簡単に説明しましょう。
 GTO+をはじめGTOソルバーはCFRアルゴリズムを用いたポーカー専用の計算機です。GTO+と同種のツールにPiosolverがありますが同じアルゴリズムが使われていますし、GTOwizardもMonker solverなどの計算結果をデータベース化ものですから結局CFRアルゴリズムによって計算されたものです。
CFRは2008年にMartin Zinkevichらが提唱した不完全情報ゲームにおいてナッシュ均衡を求める反復解法*です。

*Martin Zinkevichら「Regret Minimaization in games with incomplete imfomation」(不完全情報ゲームにおける後悔最小化)Advance in neural information processing systems(掲載誌「神経情報システムの進歩」) 1729~1736頁
概要「不完全情報ゲームのナッシュ均衡を見つけることは非常に注目されており、本稿では後悔(Regret)最小化に基づいてゲームを解析する手法について述べる。特に「反事実仮想的後悔」(Counterfactual Regret )の概念を導入し、この手法をポーカーの領域で実証する」

「不完全情報ゲームにおける後悔最小化」
「神経情報システムの進歩」の1729~1736頁

CFRは「Counterfactual Regret Minimaization(直訳:反事実仮想的後悔最小化)」の略で、なかなかうまい日本語訳が見当たらないので誤解を恐れず筆者が分かりやすく説明すると「実際にはあり得ない仮想を前提に期待値(EV)のロスを最小化する」ことです。
 これまでGTO+で入力したように、特定のハンドレンジと各ストリートにおけるベットサイズを固定化したプレイヤーA(OOP)とプレイヤーB(IP)がいて、AもBも相手のハンドレンジと選択しうるベットサイズを知っているという「あり得ない仮想」を前提にします。そして先手のプレイヤーAのあるアクション1に対し、プレイヤーBは、あらかじめ知っているプレイヤーAのハンドレンジとベットサイズを前提にして、最も期待値(EV)が高いカウンターアクション2を導きます。2人零和ゲームでは、一方プレイヤーの期待値(EV)の上昇は他方プレイヤーの期待値(EV)のマイナスを意味しますので、これによりプレイヤーAのアクション1の期待値が下がりますが、この期待値のロスを後悔(Regrect)と呼びます。このプレイヤーAの後悔(Regrect)を最小化するためにプレイヤーAのアクション1を、プレイヤーBのハンドレンジとベットサイズを前提にして更新したアクション2を導くことができます。このアクション2をさらに前提にして導いたプレイヤーBの期待値の高いカウンターアクション2を前提にして、さらにプレイヤーAのアクション2を更新したアクション3を前提にして・・・と繰り返して、最終的にカウンターアクションがとられない(搾取されない)最適アクションを求めるというわけです。

GTOソルバーは、このCFRの反復解法を計算するのですが、搾取可能性0%(つまり本来の意味のGTO)まで計算するとほぼ半永久的に計算し続けることになるので、計算を途中で止めるため、あらかじめ搾取可能性をどれだけ許容するか(可搾取量=exploitability)を設定して解析を始めることになります。

ポットの0.5%の搾取可能性を許容して解析(Run solver)しているGTO+。CFRの反復により解析にはおよそ数分かかります。


 いかがだったでしょうか?GTOソルバーの解析が反復計算で、非常に時間のかかるものだということがお分かりいただけたと思います。次回は実際の解析(Run solver)を説明していきたいと思います。
 ところで、ソルバーが導く解析結果は、相手のハンドレンジと選択しうるベットサイズが相互に知っているという「ありえない仮想(Counterfactual)」を前提にしています。ときどきある状況で「ポット33%ベットが最適である」という意見を聞きますが、注意が必要です。GTOソルバーの解答は、あらかじめ任意に設定されたベットサイズ(例えばポット33%,50%,75%,100%)のうち、どのサイズのベッティングをどのような頻度で行うのが最適かというもので、33%ベットを70%の頻度で行うべきだとしても他のサイズと比較して期待値が高いということではありません。また特定のハンドレンジ、特定のベットサイズという仮想を前提にせず、このボードとハンドにおける最適なアクションは何かという問いには何も答えていないのです。


この記事が気に入ったらサポートをしてみませんか?