はじめに
ボードゲームやカードゲームにおけるAIといえば囲碁やチェスなどの完全情報ゲームにおける成功が印象的ですが,ポーカーを中心とした不完全情報ゲームも着々と攻略されてきています.
不完全情報ゲームではナッシュ均衡戦略を最適戦略として求めるというアプローチがしばしば取られます.実際,2人プレイヤのポーカーでプロに匹敵する強さを見せたLibratus[1]でもナッシュ均衡戦略を求めることが行われています.このときにナッシュ均衡戦略を求めるためにしばしば用いられるのがCounterfactual Regret Minimization (CFR)[2]と呼ばれるアルゴリズムであり,Libratusや6人プレイヤのポーカーAIであるPluribus[3]もCFRを基礎としたアルゴリズムによって戦略を計算しています.
私が以前に書いた記事では,花札「こいこい」にCFRアルゴリズムを適用した実例について紹介しました.今回は,CFRのアルゴリズムについての解説と,そのアルゴリズムの実装方法についての紹介を行います.
Notation
ナッシュ均衡についての定義やCFRで出てくる数式の定義を行うために,いくつかの用語を定義します.
まず,有限の展開型不完全情報ゲームは以下の要素から構成されます.
- :人のプレイヤの集合.
- :ゲーム中の意思決定点(ノード).そこに至るまでのプレイヤの行動の履歴によって定義される.
- :全ノードの集合.
- :それ以上行動を取ることができない終端ノードの集合.
- :ノードで取ることが可能な行動の集合.
- :ノードで行動を取るプレイヤ.の場合,チャンスプレイヤが確率で行動を選択する.
- :プレイヤの利得関数.二人零和ゲームの場合,すべてのについてが成り立つ.
- :プレイヤの情報分割,すなわち,の分割.
- :情報集合,すなわち,プレイヤに属するノードの部分集合.であるとき,これらのノードはプレイヤからは区別できない.
また,戦略やノードへの到達確率を以下のように定義します.
- :プレイヤが従う戦略.上の確率分布として定義される.ただし,は情報集合で取ることが可能な行動の集合.
- :プレイヤの戦略,すなわち,各情報集合から上の確率分布への関数.
- :プレイヤの戦略の集合.
- :全てのプレイヤが戦略に従って行動したとき,ノードに到達する確率.
- :全てのプレイヤが戦略に従って行動したとき,ノードに到達した状態からノードへと到達する確率.
- :プレイヤが戦略に従って行動し,それ以外のプレイヤが必ずノードに向かうように行動するときに,ノードに到達する確率.
- :プレイヤ以外が戦略に従って行動し,プレイヤが必ずノードに向かうように行動するときに,ノードに到達する確率.
- :戦略に従った際に,情報集合に含まれるいずれかのノードに到達する確率.また,同様に,,とする.
- :戦略に従った際のプレイヤの期待利得.
ナッシュ均衡
定義
ナッシュ均衡は以下の式を満たす戦略の組み合わせとして定義されます.
また,-ナッシュ均衡はナッシュ均衡の近似であり,以下のような式を満たす戦略の組み合わせとして定義されます.
なぜナッシュ均衡戦略に従うことが良いのか??
二人零和不完全情報ゲームではナッシュ均衡戦略を最適戦略として求めることがしばしば行われますが,これはなぜでしょうか??一般的なシングルプレイヤー設定の強化学習で行われるように利得(報酬)を最大化するような戦略を求めることはできないのでしょうか??
これに関しての説明を行うために,まず最初に,自分以外のプレイヤ全員の戦略が何かしらの戦略に固定されていて学習時にも実際のプレイ時にもその戦略に従っているケースを考えます.強化学習的に考えると,このケースでは相手のプレイヤは強化学習環境の一部であるとみなすことができるため,自分の期待利得は自分の戦略のみに依存していると考えることができます.なので,このケースではその環境のもとで利得を最大化するような戦略を求めれば良い,ということになり,この目的関数は一般的な強化学習の目的関数である報酬の最大化と一致することになります.
しかし,実際のプレイでは相手は学習時と同じ戦略を取ってくるかどうかはわかりませんし,色々なプレイヤと対戦することを考えると,相手の単一の戦略に対してだけでなく様々な戦略に対して強そうな戦略というものを考えたほうが良さそうです.なので,単一の戦略に対して利得を最大化する戦略を求めるようなアプローチでは良い戦略は得られないかもしれない,ということになってしまいます.
そこで代わりに最適戦略として定義されるのが,ナッシュ均衡です.ナッシュ均衡は,上述した定義から,どのプレイヤも自分だけが戦略を変えることによって,期待利得を上げることができないような戦略の組合せであることがわかります.特に,二人零和ゲームの場合,ナッシュ均衡戦略に従うことで相手の戦略に関係なく自分の期待利得を以上にすることができます.これは利得の損失を最小限に抑えられることを意味しており,さらにこれに加えて対称性があるゲームの場合1,相手のどんな戦略に対しても期待利得が0以上になるため,ナッシュ均衡戦略は期待利得的に考えると負けない戦略である,ということが言えます.
これまでの説明をまとめると,ナッシュ均衡戦略は,二人零和不完全情報ゲームでは利得の損失を最小限に抑えられる(特にゲームに対称性がある場合は期待利得が0以上になる)という性質を持ちます.したがって,ナッシュ均衡戦略は相手の様々な戦略に対して安定して強い戦略であると考えられるため,二人零和不完全情報ゲームではナッシュ均衡戦略を最適戦略として求めることがしばしば行われます.
Counterfactual Regret Minimization
CFRは,反復的に戦略を更新することでナッシュ均衡を近似的に求めるアルゴリズムです.CFRでは,「この行動を取ったほうが良かった」という後悔 (regret) を小さくするように戦略を更新します.
Counterfactual Regret
CFRにおいて戦略の更新に用いられるregretは以下のようにして定義されます.
まず,CFRの反復におけるプレイヤの戦略をとします.また,情報集合に含まれるいずれかのノードから到達することができる終端ノードの集合をとし,ある終端ノードへと到達することができる中のノードをと定義します.情報集合におけるプレイヤのcounterfactual value を以下の式で定義します.
この式は,情報集合に到達したときのプレイヤの期待利得に,プレイヤが必ずに向かうように行動したときにに到達する確率を重み付けしたものとなっています.同様にして,をプレイヤが情報集合において必ず行動を選択するように戦略を変更した場合のcounterfactual valueと定義します.
counterfactual value を用いて,反復において情報集合で行動を取ることに対するinstantaneous regret は以下の式で定義されます.
この式は「情報集合で行動を取るように戦略を更新したらどの程度期待利得が増えるのか,ということを定式化したregretとなっています.
最後に,反復において情報集合で行動を取ることに対するcounterfactual regret は,それまでの反復におけるinstantaneous regretを用いて以下の式で定義されます.
counterfactual regretはこれまでの反復のregretの累積になっているという点がポイントです.これでCFRの戦略の更新に必要なcounterfactual regretの定義ができましたので,次は戦略の更新式の説明に移ります.
戦略の更新式
CFRでは各反復で各情報集合,行動に対してcounterfactual regret を計算し,それをベースに次反復の戦略2を計算します.
ただし,とします.これは,counterfactual regretが正の値である行動に対して,その行動を取る確率をregretの比率で与えるという処理であると解釈することができます.
最終的な出力
CFRにおいて特に注意しなければいけないのが,CFRが最終的な戦略として出力するのは最終反復における戦略ではなく,以下の式で定義される平均戦略であるという点です.
これは,CFRにおいて平均戦略はナッシュ均衡へと収束が保証されている[3]からであり,逆に各反復の戦略はナッシュ均衡へと収束する保証はありません.ナッシュ均衡の近似解を求めるためにCFRを用いることがほとんどだと思いますので,そのようなときには平均戦略を最終的な出力とすることを忘れないようにしましょう.
なお,平均戦略がナッシュ均衡へと収束することは,各反復における平均戦略が-ナッシュ均衡となることから導くことができます.ただし,はを満たします3.この証明はこの記事では省略し,またの機会に行いたいと思います.
実装
前章ではCFRにおける戦略の更新方法や最終的な出力について説明しましたが,ここではCFRのアルゴリズムの実装について記述したいと思います.
CFRでは各反復ごとにすべての情報集合に対してinstantaneous regretを計算する必要がありますが,そのためにはすべての情報集合に対するcounterfactual value を計算する必要があります.その定義から,1つの情報集合のcounterfactual valueの計算には情報集合に含まれる各ノードを根とした部分木を探索する必要があります.これを愚直にやろうとして各情報集合のcounterfactual valueをいちいち一から計算すると,同じノードを何度も何度も辿らないといけないことになってしまいます.これでは計算量がとんでもないことになってしまうので,ノードを辿る回数をできる限り少なくすることを考えます.
強化学習におけるvalue functionを知っている方にとっては当たり前なことに思われるかもしれませんが,counterfactual valueは以下のように式を変更することで再帰的な形へと書き直すことができます.
まず,ノードから到達することができる終端ノードの集合をとすると,counterfactual valueは以下のように変形できます.
ここで,としvalueと呼ぶことにすると,は以下のように再帰的に書くことができます.
これはvalue の計算には子ノードのvalueを計算すれば良いことを表しています.すべての終端ノードの利得が計算できればその親ノードのvalueが計算でき,それができればそのまた親ノードのvalueが計算でき,・・・,といった流れを繰り返すと,ゲーム木の根ノードを含めた全てのノードに対して再帰的にvalueを計算することができます.
この式を利用すると,ゲーム木の全ノードを一回ずつ辿るだけで,全ての情報集合に対するcounterfactual valueを計算することができます.以下の擬似コードはCFRのアルゴリズムであり,この擬似コードでも再帰的にvalueの計算を行っています.
関数CFRのパラメータは,行動履歴,戦略を更新するプレイヤ,現在の反復数,ノード到達確率,およびです.変数はvalue に対応しています.
実装の仕方によっては各反復ですべてのプレイヤの戦略を同時に更新することもできますが,この擬似コードでは各プレイヤの戦略を交互に更新するようになっています.
実験
CFRのアルゴリズムがどの程度ナッシュ均衡に近い戦略を求められるかを調べるために,Kuhn Pokerと呼ばれるゲームにCFRを適用させる実験を行いました.実験に用いたコードはこちらに公開しています.
Kuhn Poker
Kuhn Pokerは非常に単純化されたポーカーであり,その単純さ故にゲーム理論を用いた完全な分析が可能な二人零和不完全情報ゲームです.
このゲームでは3枚(キング・クイーン・ジャックなどの3種類)のみのカードを用います.各プレイヤには3枚の中から1枚ずつカードが配られ,テキサスホールデムなどのようなポーカーと同様にベッドを行います.両方のプレイヤがベッドした場合,より高い数字のカードを持つプレイヤの勝利となり,利得を得ます.両方のプレイヤがチェック(パス)した場合,より高い数字のカードを持つプレイヤの勝利となり,利得を得ます.それ以外の場合(片方のプレイヤのみがベッドした場合),ベッドしたプレイヤの勝利となり,利得を得ます.二人零和ゲームのため,負けたプレイヤの利得は勝利したプレイヤの利得にをかけた値となります.
Exploitability
CFRの平均戦略とナッシュ均衡との近さを確認するために,exploitabilityと呼ばれる指標を用います.二人零和ゲームにおいて,ある戦略のexploitability は以下の式で定義されます.
戦略がナッシュ均衡であるとき,このexploitabilityはとなります.逆にナッシュ均衡から離れた戦略となっている場合,やは大きな値となるため,結果的にexploitabilityもよりも大きな値となります.今回の場合はexploitabilityがに近いほどナッシュ均衡に近い平均戦略が得られている,と考えてもらえれば良いと思います.
実験結果
各反復ごとの平均戦略のexploitabilityは以下のようになりました.
反復数が増加するにつれて平均戦略のexploitabilityがに近づいていっており,平均戦略がナッシュ均衡へと近づいていっていることがわかります.
はへと,はへと近づいていることがわかります.これらの値はKuhn Pokerのナッシュ均衡の期待利得と一致しており,この観点からも平均戦略がナッシュ均衡へと近づいていっていることがわかります.
おわりに
今回は,展開型不完全情報ゲームのナッシュ均衡計算アルゴリズムであるCFRについての解説を行いました.次回は平均戦略がナッシュ均衡へと収束することの証明の解説を行おうと思います.
今回の実験で用いた内容も含め,CFRの実装コードをこちらに公開しています.CFRだけでなく,モンテカルロ近似を用いることで反復ごとに辿るノードの数を減少させたMonte Carlo CFR[4]の実装も含まれていて,今後も色々とアップデートをしていく予定です.よかったらスターやプルリク,宣伝などお願いします m(_ _)m
参考文献
[1] Noam Brown and Tuomas Sandholm. Superhuman ai for heads-up no-limit poker: Libratus beats top professionals. Science, Vol. 359, No. 6374, pp. 418–424, 2018.
[2] Noam Brown and Tuomas Sandholm. Superhuman ai for multiplayer poker. Science, Vol. 365, No. 6456, pp. 885–890, 2019.
[3] Martin Zinkevich, Michael Johanson, Michael Bowling, and Carmelo Piccione. Regret minimization in games with incomplete information. In Advances in neural information processing systems, pp. 1729–1736, 2008.
[4] Marc Lanctot, Kevin Waugh, Martin Zinkevich, and Michael Bowling. Monte carlo sampling for regret minimization in extensive games. In Advances in neural information processing systems, pp. 1078–1086, 2009.
コメント