見出し画像

AIは嘘をつく(こともある)─AIに設計を任せたら、AI自身の嘘に4回気づけた話─


1. 前回までのおさらい(読んでない人向け)

前回、コードが書けない40代事務員が、AIとの対話だけで特許出願レベルのシステム 「Prime Source」を作った話を書きました。その過程で生まれた手法を「CGP (Core Growth Prompting)」と名付けたところまでが前回です。

Prime Sourceは現在も出願準備中なので、中身の話は今回できません。 代わりに、今回は別の個人アプリ(3行日記+ヘルスケア連携アプリ)を CGPで設計している中で起きた話をします。

このアプリを作りながら、私は4回、AIが「嘘」をつくところに立ち会いました。 正確には、嘘というより「もっともらしいが検証されていないもの」を、 気づかないまま先に進めそうになった、という話です。しかも厄介なことに、 その4回のうち何回かは、AI自身も気づいていませんでした。

2. 「AIに設計を任せる」の正体

AIと壁打ちをしていると、驚くほど一貫性のある答えが返ってきます。 矛盾なく、筋道立っていて、読んでいて「なるほど」と思わせる説明が すらすら出てくる。

でも、この「一貫性がある」という感触と、「実際に正しい」ということは、 別物です。これを痛感させられた4つの出来事を、時系列で紹介します。

3. 嘘その1:自分で決めたルールを、自分で破っていた

このアプリには「カウンセラーAI」という、ユーザーと対話する唯一のAIがいます。 その裏側では複数の分析AIが働いていて、その一つが「ユーザーの気持ちの中で、 今日どれを話題にすべきか」を決めるロジックでした。

このロジックは、AIに判断させず、プログラムが機械的に決める設計にしていました。 理由は単純で、AIに「今日はこれを話題にしよう」と自由に選ばせると、 選定基準がブラックボックスになり、暴走のリスクがあるからです。

ところが、しばらく経ってから見返すと、カウンセラーAI自身への指示書に、 「複数の候補から、重要なものを一つ選んでください」という文言が そのまま残っていました。 つまり、時間をかけて設計した「プログラムが 機械的に選ぶ」というルールを、カウンセラーAI側の指示書がまるごと 無視できる状態になっていたのです。

しかもこれは、AIが嘘をついたというより、設計している私たち(人間とAI) 両方が、全体のつじつまを見落としていたという話です。個別のパーツは 正しくても、パーツ同士の受け渡しが正しいかは、また別に確認しないと 分からない。これが1回目の気づきでした。

4. 嘘その2:動詞ひとつで、検知がすり抜ける

このアプリには、「もう〜したくない」のような、かなり追い詰められた 表現を検出する仕組みがあります。文章でその仕組みを説明している分には、 何の問題もないように見えました。

ところが、実際にコードを書いて動かしてみたところ、「もう介護なんて やりたくない」という文章が、検知をすり抜けました。 原因を調べると、 検出の条件式が「したくない」という特定の言い回し(動詞が「する」の 場合)に固定されていて、「やりたくない」のように動詞が変わると 反応しない作りになっていたのです。

これは、文章で議論していた間は誰も気づきませんでした。実際にコードを 実行して、テストデータを流し込んで、初めて発覚したバグです。 もっともらしい 説明と、実際に動くロジックの間には、思っていた以上の距離がある。 これが2回目の気づきでした。

5. 嘘その3:何度読んでも気づけなかった抜け番号

これはAIというより、人間側(私)の話です。設計書の章立てを何度か 組み替えるうちに、「8章」という番号がまるごと抜け落ちて、7章の次が いきなり9章になっていました。

何度も読み返したはずなのに、私もAIも気づきませんでした。理由は単純で、 「読んで確認する」というやり方自体に限界があるからです。人間の目も、 AIの"目"も、文章を読むときは意味の流れを追うことに気を取られて、 機械的な整合性(番号が連番になっているか等)のチェックは、実は かなり疎かになりやすい。

これはgrepで章番号を検索する、という機械的な確認をして初めて 見つかりました。「読む」と「検索する」は、似ているようで全然違う 確認方法だったのです。

6. 嘘その4:私の「検証済み」判定が、実は自分自身を見ていただけだった

これが一番自分でも笑ってしまった話です。

このアプリの設計過程を振り返る「デザインヒストリー」という記録を、 別のAIサービスに作ってもらったことがありました。出てきた記録には、 「これは実際の会話のこの発言が根拠です」という引用が、いくつも 添えられていました。

念のため、その引用が本当に元の会話ログに存在するか、私は自分で 検証用のプログラムを書いて確認しました。結果は「全部、根拠あり」。 一瞬、安心しました。

でも、何かがおかしいと思い、確認方法を見直しました。すると、 その検証プログラムがログ全文を確認範囲にしていたせいで、 「AIが生成した記録そのもの(=引用文を含む文書)」も、 確認対象に紛れ込んでいたことが分かりました。つまり、 引用文が「元の発言に存在するか」ではなく、「引用文が自分自身の 中に存在するか」を確認していただけだったのです。

確認範囲を「記録が作られる前の、本当の会話部分だけ」に絞り直すと、 結果は一変しました。引用として提示されていた発言は、実際の会話の どこにも存在しませんでした。

AIの生成物を、AIで検証したつもりが、検証方法自体に見落としがあった。 これは、AIの嘘を暴いたつもりが、自分の検証プロセスの甘さを 暴かれた、という話でもあります。

7. 4つに共通していたこと

振り返ると、この4つの「嘘」に共通していたのは、こういうことでした。

  • 文章として読んだときの一貫性は、実際の正しさを保証しない

  • 「もっともらしい」に気づく唯一の方法は、実際に動かしてみることだった

  • しかもそれは、AIの出力だけでなく、人間が書いた確認手順そのものにも 当てはまる

AIが嘘をつく、という言い方をしましたが、正確には、AIも人間も、 検証していないものを「たぶん大丈夫」で通してしまう瞬間がある、 というだけの話だと思います。AIの方がそれを、もっともらしい文章力で 覆い隠すのが上手い、というだけで。

8. これからどうするか

この経験を踏まえて、以前作った「CGP」という手法に、いくつかプロセス のルールを追加しました。

  • 疑似コードは、書いた瞬間に実際に動かして確認する

  • 複数のファイルに同じ情報を手で書き写さない。一箇所にまとめる

  • テストケースは資産として蓄積し、変更のたびに全部流し直す

  • 「まだ検証されていない仮説」と「実際に確認できたこと」を、 文章の書きぶりだけに頼らず、はっきり分けて記録する

抽象的に見えるかもしれませんが、どれも上の4つの実例から、 直接生まれたルールです。詳しく知りたい方は、GitHubに置いてある CGPプライマーを覗いてみてください。

9. おわりに

技術や知識の壁が低くなったことで、私のような人間でもシステムを 作れる時代になりました。ただ、壁が低くなった分、「もっともらしいが 検証されていないもの」を、そのまま信じてしまう危険も、同じだけ 身近になったのだと思います。

AIと一緒に何かを作っている人には、この話が少しでも参考になれば 嬉しいです。

次回はまた、Prime Sourceの話に戻る予定です。出願の進捗が ありましたら、そちらでお伝えします。


いいなと思ったら応援しよう!