囚人のジレンマで「しっぺ返し」は4位だった。手違いが1%あるだけで、根に持つ戦略は1手2.42点から1.53点に落ちる
約9分で読めます

囚人のジレンマで「しっぺ返し」は4位だった。手違いが1%あるだけで、根に持つ戦略は1手2.42点から1.53点に落ちる


繰り返し囚人のジレンマの話は、たいてい同じ結論で終わる。しっぺ返し(Tit for Tat)が強い、と。

初手は協調。以後は相手が前回やったことをそのまま返す。それだけの単純な戦略が、1980年のAxelrodの大会で複雑な戦略を退けて優勝した。「やられたらやり返す、でも自分からは裏切らない」が最適解に近い、という話は、人間関係の教訓としてもよく引用される。

私が引っかかっていたのは、この結論が手違いのない世界の話だという点だ。現実には、協調するつもりだったのに伝わらなかった、ということが起きる。返信を忘れる。言い方を間違える。相手には裏切りに見える。そのとき、しっぺ返しはどうなるのか。

10個の戦略を実装して総当たりさせ、「意図と逆の手が出てしまう確率」を0%から20%まで振ってみた。

実験に使ったコードの全文はGitHubに置いています

実験の設定

利得は標準的なもので、両方協調なら3点ずつ、両方裏切りなら1点ずつ、片方だけ裏切れば裏切った側が5点・された側が0点。200手を1試合とし、全ペア(自分自身とも)を40回ずつ戦わせて、1手あたりの平均得点で比べた。

戦略は10個。

  • お人好し(ALLC) 常に協調
  • 裏切り者(ALLD) 常に裏切り
  • しっぺ返し(TFT) 初手協調、以後は相手の前回の手を返す
  • 疑心暗鬼のしっぺ返し(STFT) 初手だけ裏切る
  • 二度までは許す(TF2T) 2回続けて裏切られたときだけ仕返す
  • 根に持つ(GRUDGER) 一度でも裏切られたら以後ずっと裏切る
  • 気まぐれ(RANDOM) 五分五分でランダム
  • パブロフ(PAVLOV) 前回よく稼げたなら同じ手、稼げなかったら手を変える
  • ジョス(JOSS) しっぺ返しだが10%は抜き打ちで裏切る
  • 寛容なしっぺ返し(GTFT) 裏切られても10%は水に流す

手違いなしでも、しっぺ返しは1位ではなかった

横棒グラフ。10戦略の1手あたり平均得点を、手違いなし(青)と手違い1%(赤)の2本ずつで比較している。手違いなしでは二度までは許す2.643、寛容なしっぺ返し2.614、お人好し2.520、しっぺ返し2.497の順。手違い1%ではすべて下がるが、根に持つ2.415→1.991、お人好し2.520→2.215の下げ幅が大きい

順位戦略手違いなし手違い1%
1二度までは許す (TF2T)2.6432.452
2寛容なしっぺ返し (GTFT)2.6142.405
3お人好し (ALLC)2.5202.215
4しっぺ返し (TFT)2.4972.232
5パブロフ (PAVLOV)2.4672.306
6根に持つ (GRUDGER)2.4151.991

手違いが一切なくても、しっぺ返しは4位だった。ここは正直に書いておくと、Axelrodの大会の再現ではない。参加戦略の顔ぶれも回数も違うので、この10個の中ではという限定つきの結果だ。それでも「しっぺ返しより甘い戦略のほうが上に来る」というのは、意外だった。相手にお人好しが混ざっている環境では、仕返しの厳しさより、協調を維持できることのほうが効く。

そして手違いを1%入れると、下げ幅に大きな差が出る。とりわけ根に持つ(GRUDGER)は2.415から1.991へ。同じ戦略同士で組ませると、この落差はもっと露骨になる。

手違い率しっぺ返し同士寛容なしっぺ返し同士二度までは許す同士根に持つ同士
0%3.0003.0003.0003.000
1%2.4612.9062.9891.525
5%2.2732.6782.9471.242

100手に1手の手違いで、根に持つ同士は3.000から1.525へ半減する。1回の事故が永久の断絶になるので当然だが、実際に数字で見ると重い。

「エコー」を見る

しっぺ返しの弱点は昔から指摘されている。片方が手違いで裏切ると、相手が仕返し、それにまた仕返し、と延々と報復が続く。エコーと呼ばれる現象だ。同じ乱数を使って、しっぺ返し同士と寛容なしっぺ返し同士を並べた。

2段の帯グラフ。上段はしっぺ返し同士の40手で、序盤の手違いのあと両者が交互に裏切りと協調を繰り返す赤と緑の縞模様が最後まで続き、75点対80点。下段は寛容なしっぺ返し同士の同じ乱数での40手で、序盤は同じように荒れるが10手目あたりで両者とも協調に戻り、以降ほぼ緑のまま98点対103点になっている

上段。序盤の手違いのあと、CDCDCDCD... の縞模様が最後まで続いている。2人とも「相手が裏切ったから返しているだけ」であって、どちらも悪くない。それでも40手ずっと抜け出せない。手違いがなければ120点ずつ取れたはずの試合が、75点と80点になった。

下段は同じ乱数、同じ手違いから始まっている。違うのは「10%の確率で水に流す」という1点だけだ。10手目あたりで片方が仕返しを1回スキップし、そこから協調に戻って、以降はほぼ緑のまま。98点と103点。

抜け出す方法は、どちらかが一度だけ損を引き受けることしかない。 正しさを積み上げても縞模様は終わらない。

手違いが増えたらどうなるか

手違い率を0%から20%まで振って、順位の入れ替わりを見た。

手違い率を横軸、1手あたりの平均得点を縦軸にした折れ線グラフ。二度までは許す(橙)は0%で2.63と最も高いが右に下がり続け、裏切り者(赤)と根に持つ(紫)は右に上がり続けて、15%付近で逆転する。0%からTF2Tが1位、10%からGTFTが1位、15%からGRUDGERが1位、20%からALLDが1位という注記が入っている

手違い率を0%から20%まで1段階ずつ上げていくアニメーション。10戦略の得点棒グラフが並び替わっていき、最初は「二度までは許す」が1位で赤くハイライトされているが、手違いが増えるにつれて「裏切り者」と「根に持つ」の棒が伸びてきて、最後は「裏切り者」が1位になる

はっきりした構造が出た。許す側の戦略は右肩下がり、許さない側は右肩上がりで、15%あたりで交差する。手違い20%の世界では、常に裏切る戦略が1位になる。

裏を返すと、協調が成り立つかどうかは戦略の良し悪しではなく、環境の手違い率で決まっている。同じしっぺ返しが、ある世界では合理的で、別の世界では自滅的になる。

誰が誰に強いのかは、対戦表で見たほうが早い。

増えるのはどれか

最後に、得点の高い戦略が次世代で増えていく進化シミュレーション(レプリケータ動態)を120世代まわした。

左右2枚の折れ線グラフ。左の手違いなしでは、二度までは許す・寛容なしっぺ返し・しっぺ返しの3本が拮抗して20%前後で並ぶ。右の手違い1%では、寛容なしっぺ返しが67.6%まで伸びて他を引き離し、二度までは許すが29.0%、しっぺ返しは1.5%まで落ちる

手違いのない世界では、TF2T・GTFT・TFTが20%前後で拮抗する。どれでもいい、という状態だ。

手違いを1%入れると分かれる。寛容なしっぺ返しが67.6%まで伸び、しっぺ返しは1.5%まで落ちる。 集団の中で協調が続く条件は「裏切りを罰すること」ではなく、「事故から復帰できること」のほうにあった。

まとめ

  • 10戦略の総当たりで、しっぺ返しは手違いなしでも4位。上位は「二度までは許す」「寛容なしっぺ返し」
  • 手違い1%で、根に持つ戦略は同士討ちの得点が3.000から1.525へ半減する
  • しっぺ返し同士は1回の手違いから40手ずっと報復の縞模様を抜けられない。10%の寛容さがあれば10手で復帰した
  • 手違い率を上げていくと1位が TF2T → GTFT → GRUDGER → ALLD と移る。15%を超えると許す戦略は全部負ける
  • 進化シミュレーションでは、手違い1%の世界で寛容なしっぺ返しが67.6%を占めた

「やられたらやり返す」が強い、という話を、私はずっと処世術として読んでいた。実際に測ってみると、その強さには前提条件があった。相手の行動が、相手の意図を正しく表している世界でしか成立しない。

手違いが100回に1回あるだけで、しっぺ返し同士は縞模様に入る。厄介なのは、その中にいる2人が、どちらも自分は正しく振る舞っていると認識している点だ。相手が裏切ったから返した。それだけのことを、お互いにやっている。外から見れば全40手が無駄なのに、中にいる2人にはそれが見えない。

抜け出したのは、寛容な側だった。10回に1回、仕返しをやめてみる。その1回は明確に損で、実際その手番では0点を取られている。それでも合計では上回った。

たぶん、あの1回の損は、相手を許すために払ったのではない。自分がまだ縞模様に入っていないことを確かめるために払ったのだと思う。