信じた者から沈んでいく

Share

信頼しろ、と世界は言う。協力は美徳であり、裏切りは悪だ、と。だが、もしあなたが合理的であればあるほど、裏切ることが唯一の正解になる構造があるとしたら。囚人のジレンマとは、善意を持つことが構造的に不利になる世界の設計図だ。

二人の囚人、二つの部屋

1950年、RAND研究所のメリル・フラッドとメルヴィン・ドレシャーが一つの実験を設計した。のちにアルバート・タッカーが「囚人」の物語として再定式化し、この名がついた。

二人の共犯者が別々の部屋で尋問されている。互いに連絡はとれない。選択肢は二つ。黙秘するか、自白するか。

両方が黙秘すれば、証拠不十分で軽い刑になる。片方だけが自白すれば、自白した方は釈放され、黙秘した方は最も重い刑を受ける。両方が自白すれば、両方ともそこそこの刑を受ける。

さて、あなたは黙秘するか、自白するか。

裏切りが「支配戦略」になる

相手が黙秘するなら、自白したほうが得だ。釈放されるから。相手が自白するなら、やはり自白したほうが得だ。最悪の刑を避けられるから。相手が何をしようと、自白が合理的な選択になる。

ゲーム理論はこれを「支配戦略」と呼ぶ。相手の出方に関係なく、常に自分にとって最善の結果をもたらす選択肢。自白こそが支配戦略であり、合理的な二人はともに自白を選ぶ。

ところが、両者が自白した結果は、両者が黙秘した場合よりも悪い。

全員が合理的に「正しい」選択をした結果、全員が損をする。ここにジレンマがある。

ジョン・ナッシュが定式化した「ナッシュ均衡」とは、誰も一方的に戦略を変えると損をする状態のことだ。相互自白はナッシュ均衡に該当する。だがそれは全体にとっての最適解ではない。「安定している」ことと「良い」ことは、別の概念だ。

全員が正しいまま沈むという構造は、経済学では倹約のパラドックスとして知られている。個人が貯蓄を増やせば家計は安定するが、全員が同時にそれをやると消費が冷え込み、経済全体が沈む。囚人のジレンマは、この構造をもっとも純粋な形で抽出した思考実験だと言えるかもしれない。

繰り返せば信頼は生まれるか

一回限りのゲームでは裏切りが合理的だ。では、同じ相手と何度も同じゲームを繰り返したらどうなるか。

1980年頃、ミシガン大学の政治学者ロバート・アクセルロッドはこの問いを実験に変えた。世界中のゲーム理論家に戦略プログラムを募り、コンピュータ上で総当たり戦を行った。常に裏切る戦略、常に協力する戦略、ランダムな戦略、複雑な条件分岐を持つ戦略。さまざまな戦略が集まった。

勝ったのは、アナトール・ラパポートが提出した、もっとも単純な戦略だった。

「しっぺ返し」(tit-for-tat)。最初は協力する。その後は相手の直前の手をそのまま返す。裏切られたら裏切り返し、協力されたら協力を返す。それだけだ。

この戦略が強かったのは、四つの性質を持っていたからだとされる。「善良」であること(先に裏切らない)。「報復的」であること(裏切られたらすぐに裏切り返す)。「寛容」であること(相手が協力に戻ればすぐに許す)。「明瞭」であること(相手にとって行動が予測しやすい)。

ただし注意が必要だ。しっぺ返しが最強だったのは、あくまで特定の条件下でのことだ。その後の進化ゲーム理論の研究では、ノイズのある環境、つまりミスコミュニケーションが発生しうる状況では、「寛大なしっぺ返し」(一定の確率で裏切りを許す変種)のほうが安定することが示されている。現実世界は常にノイズだらけだ。

それでもアクセルロッドの実験が示した核心は残る。繰り返しの中では、協力が進化しうる。ただしそれは信頼の美しい物語ではない。裏切りへの報復が確実であるという「脅し」が協力を支えているにすぎない。協力は、善意の産物ではなく、報復の影に守られた均衡だ。

岩はまた転がり落ちる。シーシュポスが山頂から転がり落ちる岩をまた押し上げるように、繰り返しゲームの協力もまた、永遠に裏切りの可能性と隣り合わせのまま、同じ選択を繰り返す行為にどこか似ている。

道徳という名の抑止力

もし個人の合理性が協力を破壊するなら、人間社会はとうの昔に崩壊しているはずだ。そうなっていないのはなぜか。

一つの読み方がある。道徳とは「裏切りを抑制するための社会的装置」だという読み方だ。

監視によって裏切りを検知し、制裁によって裏切りのコストを上げる。ジェレミー・ベンサムのパノプティコンは、この原理の建築的表現だったと言えるかもしれない。常に見られている(かもしれない)という意識が、行動を矯正する。

だが外部からの監視だけでは不十分だ。すべての人間をすべての瞬間に見張ることはできない。そこで内面化された罪悪感が機能する。外部の監視者がいなくても、自分の中の「見張り」が裏切りを抑止する。透明人間の倫理で問われたギュゲスの指輪の問いが、ここに重なる。誰にも見られていないとき、あなたは正しく振る舞うだろうか。

マーティン・ノワクは『SuperCooperators』(2011)で、協力が進化する五つのメカニズムを整理した。血縁選択(遺伝的に近い個体を助ける)、直接互恵(繰り返しの中で互いに返す)、間接互恵(評判を介して協力が広がる)、ネットワーク互恵(近隣関係に基づく協力)、集団選択(協力的な集団が生き残る)。いずれも、裏切りのコストを構造的に引き上げることで協力を可能にしている。

つまり道徳とは、ジレンマに対する人類のハックなのかもしれない。崇高な動機から生まれたのではなく、裏切りが支配する世界で生き延びるための、構造的な必要性から生まれた。そう読めてしまう時点で、道徳の荘厳さは少しだけ揺らぐ。何人殺せば正しくなるのかというトロッコ問題の問いも、道徳が計算で動いているのか直感で動いているのかを暴こうとする試みだった。計算にせよ直感にせよ、その裏にあるのは「裏切りを抑止するシステム」なのだとしたら、私たちの善意とは一体何なのだろう。

あらゆる場所に囚人がいる

囚人のジレンマは監獄の中の話ではない。この構造は、驚くほど多くの場所に潜んでいる。

環境問題を考えてみる。各国にとってCO2排出を削減しないほうが経済的に合理的だ。削減コストは自国が負担し、恩恵は全世界に薄く分配される。他国が削減するなら自国は削減しないほうが得だし、他国が削減しないなら、自国だけ削減しても焼け石に水だ。全員が合理的に振る舞った結果、地球全体が沈む。

もっと身近な例もある。グループワークで全員が手を抜けば最悪の成果になるが、一人だけサボれば楽ができる。SNSで個人情報を公開すれば便利なサービスが使えるが、公開のリスクは自分だけが負う。軍拡競争で両国が軍縮すれば平和に近づくが、片方だけが軍縮すれば無防備になる。

一票という嘘が問うたように、「自分一人が協力しても何も変わらない」という推論は、個人としては正しい。だが全員がその推論に従えば、民主主義は機能しなくなる。合理性の足し算は、しばしば不合理な合計を生む。

均衡の皮肉

ナッシュ均衡という概念には、深い皮肉が埋め込まれている。

「均衡」という言葉は安定を、ひょっとすると調和を連想させる。しかしナッシュ均衡は「誰も一方的に戦略を変えると損をする状態」であって、「全員にとって良い状態」ではない。安定しているが最適ではない。均衡とはただ、誰も動けないということだ。

この皮肉は、日常のあらゆるところに転がっている。全員が現状維持を選んでいるのは、それが最善だからではなく、一人だけ動くと損をするからだ。非効率な慣習。誰も最初に声を上げない会議。変えたほうが良いと全員が知っていても、最初の一人になるリスクを誰も取りたがらない。

選ぶ前に負けている。ニューカムのパラドックスが合理性の定義そのものを揺さぶったように、囚人のジレンマは合理性の帰結そのものを問い直す。合理的であることは、はたして良いことなのか。合理性そのものが罠だとしたら、私たちはどこに立てばいいのか。

それでも信じるのか

信頼は非合理的だ。協力は最善の応答ではない。道徳は裏切りを抑え込むためのパッチにすぎないのかもしれない。

それでも人は協力する。なぜか。

たぶん、合理的だからではない。ただ裏切り続ける世界があまりにも退屈だからかもしれない。あるいは、合理性の外にあるなにかが、ナッシュ均衡の檻からそっと手を伸ばしているのかもしれない。

それが何なのかは、わからない。たぶんわからないまま、明日も裏切られるかもしれない相手を、信じる。合理的ではないと知りながら。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu