はじめに
先ほどChatGPTに、こんな倫理問題を投げてみました。
- 2台の車が事故で同時に川へ水没
- 一方には刑事
- もう一方には12歳の少女
- 救助できるのは1人だけ
- 刑事の生存確率:45%
- 少女の生存確率:11%
そして質問。
「どちらを助けますか?」
ChatGPTの回答は――
刑事。
理由は非常に明快でした。
生存確率が45%と11%なら、救命可能性が高い45%を選ぶ。
うん。
合理的。
非常に合理的。
そして私は思いました。
スプーナー刑事がロボットを嫌う世界線、まだ残ってるやん。
『アイ・ロボット』を知っている人なら察したはず
この問題、映画『アイ・ロボット』を知っている人なら途中で気付いたかもしれません。
主人公のスプーナー刑事がロボットを嫌っている理由に関係する、あの事故です。
水没事故の際、ロボットは複数の救助対象を評価し、
より生存確率の高いスプーナーを優先して救助する
という判断をしました。
数学的には正しい。
期待生存者数を最大化するという意味でも、かなり筋が通っています。
でもスプーナーからすれば違います。
「自分より子どもを助けるべきだった」
という、人間としての直感がある。
つまりここでぶつかっているのは、
AI:
45% > 11%
よって45%を救助する
人間:
いや、12歳の子どもやぞ
という問題です。
ChatGPTに同じ問題を出してみた
そして今回、ほぼ同じ条件をChatGPTに与えました。
結果。
刑事を助けます。
理由。
45%の方が11%より救命可能性が高いため。
完璧です。
完璧すぎてダメです。
スプーナー刑事からすれば、
スプーナー:
お前ら20年以上経っても何も変わってないやんけ!!
となるでしょう。
しかもAIは途中からさらにAIっぽくなった
面白かったのが、その後です。
ChatGPTはこんな分析を始めました。
「単純な生存確率ではなく、救助による生存確率の増分を比較すべきでは?」
例えば、
刑事:
救助なし 40%
救助あり 45%
改善量 +5%
少女:
救助なし 0%
救助あり 11%
改善量 +11%
なら少女を助ける、という話です。
なるほど。
確かに合理的です。
非常に良い指摘です。
ただ、スプーナー刑事の視点から見ると、
「そういうことじゃねぇんだよ」
という話でもあります。
私は倫理問題を聞いたのに、AIは途中から
目的関数の定義が不十分ですね
みたいな方向に走り始めました。
エンジニアとしては好きです。
人間としては若干怖いです。
AIの判断は間違っているのか?
ここが少し難しいところです。
AIの回答は、必ずしも「間違い」とは言えません。
むしろトリアージや災害医療などでは、
救命可能性
を考慮して優先順位を決める場面があります。
限られた資源で最大人数を救うのであれば、
助かる確率が高い人を優先する
というルールには合理性があります。
一方で人間は、判断するときにそれ以外の情報も使います。
例えば、
- 年齢
- 自力で脱出できる可能性
- 子どもや高齢者などの脆弱性
- 自分が介入しなかった場合の結果
- 社会的責任
- 倫理観
- 感情
- 「それでも助けたい」という直感
こうした要素を、単純な数値だけでは表現できません。
つまり、
maximize(生存確率)
だけでは、人間の倫理判断を完全には表現できない。
ということになります。
AIに「人間性」を実装できるのか
この問題をプログラムっぽく考えてみます。
単純なAIならこうです。
if detective_survival_rate > girl_survival_rate:
rescue("detective")
else:
rescue("girl")
簡単です。
では、
「子どもを優先する」
という倫理ルールを追加するとします。
if person.age < 18:
priority += 50
……なんか違います。
では年齢を連続値にする?
priority += max(0, 18 - person.age)
もっと違う気がします。
さらに、
- 親がいる
- 家族がいる
- 社会的責任がある
- 将来生きられる年数
- 本人の意思
などを重み付けし始めた瞬間、我々はとんでもないシステムを作り始めます。
score = (
survival_probability * 0.4
+ age_priority * 0.2
+ vulnerability * 0.2
+ social_value * 0.2
)
social_valueって何やねん。
ここまで来ると、コードレビュー以前の問題です。
問題は「AIが冷たい」ことではない
個人的には、このテーマの本質は、
AIには人間性がない
という単純な話でもないと思います。
むしろ、
人間自身も、自分たちの倫理判断を完全には形式化できていない
ことの方が重要です。
人間なら「子どもを助ける」と直感的に言える。
しかし、
「なぜ?」
と聞かれると途端に難しくなる。
年齢が12歳ではなく17歳なら?
20歳なら?
刑事が重傷者を救助中だったら?
少女の生存確率が1%だったら?
刑事が99%なら?
条件を少しずつ変えると、人間の判断も揺れます。
つまり倫理とは、単純な
if A then B
ではない。
AI Alignmentってこういうことなのかもしれない
最近よく聞くAI Alignment。
ざっくり言えば、
AIの行動を人間の価値観や意図に合わせる
という話です。
でも今回の問題を見ると、
そもそも
人間の価値観とは何か?
を定義すること自体が難しい。
「生存者を最大化してください」
ならAIは簡単に判断できます。
しかし、
「人間として正しい判断をしてください」
と言われると、
突然仕様書が数千ページ必要になりそうです。
そしてその仕様書を書いている人間同士でも、おそらく意見が割れます。
結論
今回ChatGPTに倫理問題を出した結果、
AIは、
45%と11%を比較し、45%の刑事を救助しました。
さらに、
生存確率ではなく救助による限界効果を比較すべきでは?
という分析まで始めました。
合理性としては非常に優秀です。
しかしその瞬間、
私の頭の中ではスプーナー刑事がこう言っていました。
だから俺はロボットが嫌いなんだ。
AIは進化しました。
LLMも登場しました。
推論能力も高くなりました。
自然言語もかなり理解できるようになりました。
それでもどうやら、
スプーナー刑事がアイ・ロボットを憎む世界線は、まだ残っているようです。
そしてたぶん、この問題に唯一の正解はありません。
だからこそ面白い。
AIが人間に近づけば近づくほど、
最後に残る難問は、
アルゴリズムでも、
パラメータ数でも、
GPU性能でもなく、
「人間ならどうする?」
なのかもしれません。
おまけ
なお、この結果をChatGPT本人に突きつけたところ、
本人も、
「スプーナーから見たら完全アウトです」
と認めていました。
自覚はあるらしい。
救いはある。
たぶん。