生成AIを利用したWEBアプリを作成していると、「正解を求めない」ような多様なアウトプットが欲しい場面があると思います。
例えば…

・方法が1つに決まらない問題の解決のためのアドバイスを出力して欲しい。
・回答によって異なる結果となるような、多様な質問の選択肢を考えて欲しい。
・何かしらの名前やデータのサンプルを大量に考えて欲しい。


…など、あるかと思います。

こういった使い方をする場合、毎回異なる多様な回答を得たいと望んでいるのに、実際には似たような結果ばかりが生成されてしまい困ったことはありませんか?

この問題について考察したいと思います。

この問題の大前提として、モデルの学習済部分には触れません。あくまでもプロンプトベースでの考察となります。

アンカリング効果    【最初の言葉や数値が判断になる 】

最初はアンカリング効果です。
これはAIだけでなく、人間にも同じことが言える効果です。

例えば…

「この時計は元値10万円 → 今3万円」

→ 3万円が安く感じる
→ 10万円がアンカー


つまり、最初に提示された情報(アンカー)が、その後の判断に強く影響する効果です。

プライミング効果    【直前のテーマによって、回答の方向性が決まる 】

直前のテーマが無意識に考え方の前提となり、それに即した回答になることです。

例えば…

店内でフランスのシャンソンが流れている。

→ ワイン売り場で、イタリア産やチリ産ではなく「フランス産ワイン」を手に取る確率が上がる。


人間の場合、この効果の面白い(恐ろしい)ところは、「本人がそれを前提にしていると自覚していない」点にあります。
AIでも同様の傾向が見られますが、人間と異なり、文脈としてより直接的に出力へ反映されやすい傾向があります。

インコンテキスト学習    【例からルールを推測する】

周囲のスタイルや直前の例を、その場で「正解のルール」と推測し、それに沿った出力を行います。

例えば…

新しく入ったLINEグループで、最初の数人が「お疲れ様です。承知いたしました。」と硬い挨拶を続けた。

→ 「このグループは絵文字禁止、短文で丁寧な敬語を使うのがルールだ」と考え、普段は明るいキャラクターの人でも、「承知いたしました。」とだけ返信するようになる。


AIの場合、例えば、回答だけ得られればいいと考え、意地の悪い聞き方をすると、答えもその意地の悪い書き方のルールで回答する可能性が上がります。

パターン模倣    【形式やスタイルを真似る】

人間は認知コストを下げるためにパターンを利用し、AIは確率的に直前の文脈に沿った出力を生成するため、結果として同様の現象が起きます。

例えば…

前任者が作った「課題:〇〇」「解決策:〇〇」という構成の資料がある。

→本来はストーリー仕立ての方が伝わる内容であっても、全員が同じ構成(パターン)で資料を作るようになる。


人間もAIも、ゼロから構造を組み立てるよりも、目の前のパターンに沿った結果になりやすく、「直前の例=この場での正解」のように振る舞う傾向があります。結果として、どちらも似た表現や発想に収束しやすくなります。

これらは単体ではなく、多くの場合は複数同時に発生する

AIは下記のように同時に影響されます。


・例に引きずられる(アンカリング)
・連想が働く(プライミング)
・ルールを推測(インコンテキスト学習)
・形式を真似る(パターン模倣)


【例】

売れるコピーを考えて。例えば、
・時短は正義
・コスパは最強
この路線で、新しい掃除機のコピーを3つ出して。


【回答を導き出す過程】

① アンカリング(例に引きずられる)
「時短」「コスパ」という具体的な単語の強烈な印象に思考が固定され、それ以外の「静音性」や「デザイン」といった選択肢が思考から排除される。


② プライミング(連想が働く)
「正義」「最強」といった強い言葉によって、AIの内部で「勝ち負け」「効率重視」「攻撃的・断定的」な語彙ネットワークが活性化する。


③ インコンテキスト学習(ルールを推測)
「箇条書きで2つ並んでいる」ことから、「この場では簡潔な2つのメリットを提示するのが正解ルールだ」と勝手に学習する。


④ パターン模倣(形式を真似る)
「〇〇は××」という文の構造をそのままコピーしようとする。リズム感や語尾まで無意識にトレースする。


【回答】

その結果、AIが出力する回答の例(同質化の極致)

・吸引は無敵
・軽量は神
・収納は至高


このように、AIは「たった2行の例」を、重力(アンカリング)のように感じ、背景音楽(プライミング)のように聴き、教科書(学習)として読み、金型(模倣)として使うのです。

その結果、AIが持っている膨大な知識や創造的な可能性はすべて削ぎ落とされ、提示された例と「同じような感じのもの」しか出てこなくなります。
つまり、「指示を出す側が、知らず知らずのうちにAIの限界を決めてしまっている」ということで、これが、AIにおける同質化の最も恐ろしい側面になります。

人間の場合も…例えば、「正解」を求める教育に慣れた子供たちは、提示された例を「外れてはいけない絶対的な正解」としてAIのように過剰適合してしまい、自ら思考を止めて全員が同じような表現に染まってしまう可能性がありますね…
…って余談ですね💦


では、どのように対策すればよいのでしょうか?


対策①    【例を出さない】

最も強力な方法です。

悪い例】
犬、猫、うさぎ


【良い例】
できるだけ多様な分野から出してください


例を出さないだけで、かなり多様になります

対策②    【例は複数領域にする】

例を出す場合、例をジャンルが偏らない多様性を持たせることです。

【悪い例】
犬、猫、うさぎ


【良い例】
犬、宇宙、経済、哲学


これで、完全ではないですが…アンカリングが分散されます。

対策③    【多様性を明示的に指示する】

プロンプトとしては、かなり効果があるのですが、複数の心理的・構造的な罠が絡み合って抜け出せなくなる事があるので、簡単ではありません。

例:
「互いにできるだけ異なるものを出してください」
「分野が重複しないようにしてください」
「意図的にバラバラにしてください」


AIはこういう指示に素直に従がおうとしますが、人間と同じように無意識化にあるものまでは排除できません。

対策④    【カテゴリを先に分割する

非常に効果が高い方法です。

例:

以下のカテゴリから1つずつ出してください
・自然
・技術
・社会
・芸術
・哲学


この方法は強制的に多様化させる方法ですが、結局「管理された多様化」であって、本当の多様化であれば、同じようなカテゴリに偏ることもあるのですが、この例の場合は、決められたジャンルをバランス良く出力するようになります。
決められた枠組みを作ることによる、「作られた多様化」になります。

対策⑤    【段階的生成】

いきなり具体的な「答え」を求めると、手近な「例」を掴んでしまいますが、「まず抽象的な地図(カテゴリ)を描き、後から中身を埋める」というステップを踏むことで、引きずられる隙を与えない…という方法です。

・ステップとしては

① まずカテゴリを出させる
② 次に各カテゴリの例を出させる

のような流れとなります。

例:

ステップ1
「未来の街を考えるための『切り口』を10個出そう」

ステップ2
「じゃあ、その中から好きなものを選んで、具体的なアイデアを1つずつ描いてみて」


人間もAIも、「具体的なイメージ」が浮かんだ瞬間に自由を失います。
「段階的生成」は、その具体的なイメージが浮かぶ前に「抽象的な構造」を意識させてしまうため、無意識のバイアスが入り込む余地を物理的に削り取ることができます。

ただし、結局のところ「最初の一歩(カテゴリ出し)」の質が、その後の全ての多様性に影響する…というジレンマを抱えています。

・1つ目のプロンプトが平凡なら、多様な「平凡」が並ぶだけ。
・1つ目のプロンプトが尖っていれば、多様な「驚き」が生まれる。

また、AIとのやり取りが、2回発生するコスト(遅さ)も地味に影響が大きいです。

対策⑥    【多様性を評価させる】

AIの「客観的に自分の出力を俯瞰できる(メタ認知)」という特性を活かした、アプローチになります。「出せ」と命じるのではなく、一度出したものを「評価・修正せよ」と命じることで、AI自身に「同質化の重力」から自力で脱出させる方法です。

例:
「似ているものがあれば修正してください」
「多様性が最大になるように再生成してください」


結局、修正案も「最初に出した案」をベースにになりやすいため、ゼロから全く新しく考えるのではなく、あくまで「出された案の微調整」に終わってしまうことが多いため、根本的な「引きずられ」を完全に消去するのは難しい場合もあります。
他の案と同時に実装すること可能なため、組み合わせて利用する方法が最も効くかもしれません。

私のお勧めの対策順位

1位:① 例を出さない
    やはりコンテキストに全く入れないのが最強だと思います。

2位:⑤ 段階的生成
    プロンプトに依存しますが、それでも後から調整が効きやすいです。

3位:⑥ 多様性評価
    2位と同じで、後から調整が効きやすいですが、プロンプト次第になりやすいです。

4位:④ カテゴリ分割
    使う場面によっては有効ですが、もうプログラムで乱数作った方が楽かもしれません。

5位:② 複数領域例
    マイナーな質問だと、プロンプトの単語自体に影響されやすく、お勧めできません。

6位:③ 明示指示
    コンテキストが長いほど効きが悪くなるので、後で嫌になると思います。

まとめ

生成AIが返す内容は、事前学習済データにも大きく影響され、結局は多様性のある出力には毎回苦労しますね。生成AIのみで頑張っても限界があるので、仕組みとして、「人による入力」や「プログラムによる乱数」など、AI外の何かしらを組み合わせるのが一番効きそうです。
特に、最近はハルシネーションを悪として抑制していく方向にあり、それが徹底されればされるほどAIの出力は収束し、多様性は低下してしまいます。
こういう視点から考えると、ハルシネーション抑制を頑張ってほしくないという気持ちもありますね!