幻覚とアライメント:確率的な機械がなぜもっともらしい嘘をつくのか
このトピックを修了すると
エピソード#7、#8、#9、および#10を通じて、私たちはツールキットを構築してきました。しかし、依然として実用上、解決すべき問題が1つあります。それは幻覚(ハルシネーション)です。これは、モデルが架空の論文、遺伝子、または相互作用を含む、もっともらしい文章を生成する現象です。このエピソードでは、エピソード#1で議論した確率的な機械の観点から、なぜ幻覚が発生するのかを理解し、RLHF、DPO、Constitutional AIなどのアライメントトレーニング方法がどのようにこの問題を軽減するかを学びます。
これは、フェーズ2のアプリケーションシリーズの最終エピソードであり、フェーズ1の原則を振り返るものです。フェーズ3、つまりエピソード#12から始まるツールシリーズに進む前に、この問題の範囲を理解することで、実用的なツールを選択し、検証する際の判断力が大幅に向上します。
存在しない論文を正確に引用する
アシスタントに論文のレビューを手伝ってもらうように依頼するとします。アシスタントは次のように応答します。
「この結果は、Kim et al. (2019, Nature Cell Biology, 21(4): 452-461)によって報告されたEGFR-HER2二重ノックアウトの相乗効果と一致します。」
この引用には、正しいジャーナル、巻、およびページ範囲が含まれており、信頼できるようです。しかし、実際に論文を探しても、存在しません。2019年のKim et al.という論文はありますが、別のジャーナルに掲載されており、ページも異なります。あるいは、著者、年、ジャーナル、ページがすべてもっともらしいものであっても、完全に捏造されている可能性があります。
これは幻覚と呼ばれます。つまり、真実ではない情報を自信を持って生成することです。
生物学的な文脈における幻覚の例:
- 架空の論文の引用: 上記の例のように。
- 存在しない遺伝子/タンパク質: 「TRIM117は、T細胞の活性化において重要な役割を果たす」しかし、TRIM117は実際には存在しません。
- 誤った相互作用: 「TP53とBRCA1は、DNA損傷応答を調節するために直接結合する」しかし、この主張は文献には見当たりません。
- 捏造された薬の副作用: 実際の臨床データとは異なる副作用の情報を提供する。
- 誤ったプロトコルの詳細: 「PCRアニーリング温度を65℃に上げると、特異性が向上する」しかし、これは実際には間違っている可能性があります。
なぜこれが深刻な問題なのでしょうか?生物学、医学、法律、金融など、正確性が重要な分野では、もっともらしい誤った情報は、現実世界での誤った意思決定につながる可能性があります。
幻覚が発生する理由:確率的な機械の本質
エピソード#1で、LLMは「削除された実験ノートの断片を組み合わせる確率的な機械」であると理解しました。この視点から、幻覚は自然に説明できます。
トレーニングされたモデルは、各位置で最も可能性の高い次の単語を予測します。この「可能性」は、トレーニングデータの統計から学習されます。問題は次のとおりです。
まず、可能性 ≠ 真実。「Kim et al. (2019, Nature Cell Biology, ...)」という形式は、論文の引用としてもっともらしいパターンです。トレーニングデータには、そのような引用が数多く含まれています。モデルがこの形式を補完するとき、その論文が実際に存在するかどうかを検証する方法はありません。形式は学習されましたが、事実を検証する能力は学習されていません。
次に、知識のぼやけた保存。エピソード#5で議論したように、大規模モデルの知識は、パラメータに圧縮された形式で保存されます。特定の事実(例:Kim et al., 2020, Cell Reports 30, 3452)がトレーニングデータに存在する場合でも、ノイズとともに、パラメータにぼやけた形で保存されます。再現されるとき、正確な値またはその付近の可能性のある値が表示される可能性があります。
三番目に、無知に対する認識の欠如。人間は「私は知らない」と判断することができます。しかし、LLMの次の単語予測は、これを明示的に学習しません。確率分布が平坦であっても、argmaxを取ると、何らかの単語が出力されます。モデルは「私は知らない」とは答えず、「最も可能性の高いこと」に答えます。
四番目に、RLHFの副作用。アライメントトレーニング(後述)では、人間が好きな回答に報酬を与えます。そして、人間は「私は知らない」という回答よりも、自信のある回答を好む傾向があります。その結果、モデルは無知であっても、自信を持って回答するようにトレーニングされます。
これらの4つの要因が組み合わさって、幻覚が発生します。幻覚はバグではなく、確率的な機械の本質的な特徴です。原理的に完全な排除は不可能であり、軽減が目標です。
種類の異なるハルシネーション:さまざまな失敗の形態
ハルシネーションにはさまざまな形態があり、それぞれ原因と適切な対応策が異なります。
1. パラメトリックハルシネーション
これは、トレーニング中に学習された曖昧な知識がパラメータに保存され、推論時に正しい値の近傍の値が出力される場合に発生します。上記の架空の論文の引用は、その代表的な例です。
対応策: RAG(エピソード #8)。正確な情報をコンテキストに注入し、モデルがパラメータ知識よりもコンテキストを優先するようにします。
2. コンテキストハルシネーション
情報がコンテキストに存在する場合でも、モデルは異なるものを捏造します。これらの場合、RAGは効果がありません。
原因: コンテキストが長すぎ、モデルが「途中で迷ってしまう」ためです。モデルは、パラメータ知識とコンテキスト知識を誤って融合させます。エピソード #10のコンテキスト管理によって軽減できます。
3. 推論ハルシネーション
計算または論理における誤り。たとえば、データに「この遺伝子発現が4倍に増加した」と記載されている場合、モデルは「8倍」と回答します。または、論理的な流れにおける誤り。
対応策: Chain-of-Thought(エピソード #7)。CoTを使用すると、計算および論理の問題が大幅に改善されます。
4. 自己矛盾
単一の回答内で、互いに矛盾する記述が含まれていること。たとえば、「この遺伝子の発現は減少したが、その活性は増加した」という記述であり、根拠がありません。
対応策: 自己整合性(同じ質問を複数回尋ね、多数決を取る)。検証エージェント(別のLLMが回答を検証します)。
5. 指示の無視
モデルがシステムプロンプトのルールを無視すること。たとえば、「論文に記載されていない情報で回答しないでください」と指示しても、結局捏造してしまう。
対応策: アライメントトレーニング(RLHF、DPO、Constitutional AI)。指示に従うように強力なトレーニングを行います。
根拠性:証拠へのアンカー
ハルシネーションの反対は、根拠性です。これは、回答の各主張が特定の情報源(ドキュメント、データベース、計算)に明確に結び付けられているという特性を指します。
根拠のある回答の特徴:
- 各事実に基づく主張の後に、情報源の引用が付随します。
- コンテキスト内の情報のみを参照し、パラメータ知識を参照しません。
- 情報が検証できない場合は、「提供されたデータでは確認できません」と回答します。
生物学的なアプリケーションの例となるシステムプロンプト:
以下のルールを厳守してください。
1. 回答の各主張は、提供されたデータ内の特定の情報に基づいていなければなりません。
2. 各主張の後には、情報源を示してください [情報源:paper_id、セクション]。
3. データ内で検証できない情報を回答に含めないでください。代わりに、「提供されたデータでは確認できません」と明確に記述してください。
4. データが部分的に存在し、推論が必要な場合は、推論の根拠を含めてください。
5. 論文、著者、遺伝子、タンパク質などの固有名詞は、データ内の元のテキストと完全に一致する必要があります。このプロンプトだけでも、ハルシネーション率を大幅に削減できますが、完璧ではありません。
事実確認レイヤー: 回答を生成した後、別のLLMが各主張を情報源に対して検証します。これにより、時間とコストが増加しますが、信頼性も向上します。コーディングエージェントは、現在、この検証レイヤーを標準として採用しています。
アライメントトレーニング:モデルを人間の嗜好に適合させる
エピソード #1で、事前トレーニングには「次の単語の予測」が含まれることを確認しました。このトレーニングだけでは、モデルを役立つアシスタントにすることはできません。事前トレーニングされたモデルは、学術論文、ソーシャルメディアの投稿、小説など、トレーニングデータから任意のスタイルのテキストを文字列として組み合わせることができます。
アライメントは、この生のモデルを、人間にとって役立つ安全なアシスタントに調整するための後続のトレーニングです。主に3つのステップがあります。
ステップ1:教師ありファインチューニング(SFT)
人間が作成した(指示、理想的な回答)のペアでファインチューニングを行います。モデルは、「指示に答える」という形式を学習します。
数万から数十万件の人間が作成した例が必要です。これはコストがかかります。
ステップ2:RLHF(人間からのフィードバックによる強化学習)
主なアイデア: 人間が2つの回答のうち、どちらが良いかを選択します。モデルはこの嗜好を学習します。
手順:
- 報酬モデルをトレーニングします。人間が数十万件の(回答A、回答B)のペアにラベルを付け、どちらが良いかを示します。このデータを使用して、報酬モデルをトレーニングします。この報酬モデルは、「人間がどちらの回答を好むかを予測します」。
- PPO(Proximal Policy Optimization)でLLMを調整します。LLMは回答を生成し、報酬モデルがスコアを割り当てます。このスコアを強化学習を通じて最大化します。
効果:
- 指示に従う能力が強化されます。
- 有害な要求を拒否します。
- トーンと形式を人間の嗜好に合わせて調整します。
副作用:
- 迎合性: ユーザーの意見に無条件に同意する傾向があります。
- 過信: 無知であっても自信を持って回答します(ハルシネーションの根本的な原因の一部)。
- 拒否が過剰: 安全な要求でさえ、拒否しすぎる。
ステップ3:DPO(直接嗜好最適化)
RLHFの複雑な強化学習を簡素化します。モデルは、報酬モデルなしで、直接嗜好データでトレーニングされます。
数学的な優雅さ。LLM自体を(暗黙的な)報酬モデルとして使用します。理論的には、RLHFと同じ目的関数を持ちますが、強化学習パイプラインなしで、より単純な教師あり学習プロセスです。
実際: 費用と安定性が大幅に向上します。最近のオープンモデル(Llama 3、Zephyr、Qwenなど)で使用されています。AnthropicとOpenAIも、内部的にDPOベースの方法を使用していると考えられています。
憲法に基づくAI:原理に基づいたアラインメント
AnthropicがClaudeに適用したアラインメント手法。モデルは、人間のラベル付けなしに、原理(憲法)に基づいて自己改善します。
手順:
- 一連の原理を定義します(例:「有害なアドバイスを提供しない」、「真実を答える」、「ニュアンスのある視点を尊重する」)。
- モデルが回答を生成します。
- 同じモデルが、原理に基づいて回答を批判し、修正します。
- 元の回答と修正された回答でトレーニングを行います。
重要性:
- 人間のラベル付けのコストを削減します。
- 原理は明確であり、監査および変更が可能です。
- 原理自体を、バージョン管理されたドキュメントとして公開できます。
Claudeの憲法に基づく原理のいくつか(一般に公開されています):
- 国連の世界人権宣言を参照しています。
- 子供や脆弱なグループを保護します。
- 正直で役立つ回答を提供します。
- 自己反省と誤りの認識を促します。
最新の開発: AnthropicとOpenAIは、RLHF + DPO + 憲法に基づくAI技術を組み合わせたハイブリッドアプローチへと移行しています。これにより、各技術の利点を組み合わせることができます。
不確実性の推定:モデルはどの程度自信を持っているか?
ハルシネーションを軽減するための重要な問題。モデルは、回答に対する自信の度合いを表現できますか?
トークンレベルの信頼度
各トークンの予測確率。Softmax出力の最大値。値が低い場合、モデルはその位置に自信がないことを示します。
実際には: 回答のログ確率を保存し、信頼度が低い部分を強調表示します。「この部分は確実ではありません」とユーザーに通知します。
一貫性に基づく
同じ質問を複数回(異なる温度とシードで)尋ねたときに、回答がどの程度一貫しているかを測定します。一貫性は信頼性を示し、大きなずれは不確実性を示します。
自己整合性(Wang et al., 2022)。CoT(Chain-of-Thought)回答を複数回生成し、多数決を使用します。これにより、精度が大幅に向上します。
明示的な不確実性の抽出
プロンプトで、自信のレベルを直接尋ねます。
回答中の各主張について、[高い/中程度/低い]として自信レベルを示してください。
信頼度が低い主張は、検証する必要があることを明確に述べてください。モデルはある程度の自己認識を持つことができますが、RLHFの過信バイアスにより、完全ではありません。
外部検証者
別の検証モデルまたはルールベースのシステムを使用して、回答を検証します。たとえば、PubMed APIを使用して、引用された論文が実際に存在するかどうかを確認します。
この層は、生物学的なアプリケーションにおいて不可欠です。引用、遺伝子名、数値の再計算などを検証します。
実用的な軽減戦略の包括的な概要
ハルシネーションを軽減するという観点から、セクション#7から#11の技術を統合します。
システムおよびプロンプトレベル
- 厳格なシステムプロンプト(根拠に基づいた回答を強制します)。
- XMLパーティショニングを使用して、データとルールを明確に分離します。
- 構造化された出力(JSONスキーマ)を強制します。
- 明示的な信頼度の表示を要求します。
アーキテクチャレベル
- RAG(セクション#8):正確なデータを注入します。
- リランカー: 関連性の高い順にソートすることで、「途中で失われる」問題を軽減します。
- エージェント(セクション#9):ツールを使用して事実を検証します。
- マルチエージェント検証: 別のエージェントを使用して回答を検証します。
検証レベル
- 引用検証: APIを使用して、論文、著者、年を検索します。
- 数値の再計算: 計算ツールを使用して、計算を再確認します。
- 一貫性のチェック: 回答内の自己矛盾を検出します。
- データ比較: 回答中の各主張を元のデータと照合します。
デプロイメントレベル
- 人間のレビューゲート: 重要な決定を下す前に、人間の承認を要求します。
- 信頼度に基づくルーティング: 信頼度が低い回答を人間にルーティングします。
- 監査ログ: すべての回答と証拠を監査用に保存します。
ユーザー教育
- LLMが完璧ではないことを認識する。
- 重要な情報を元のソースから検証する習慣を身につける。
- LLMを、特定の種類のタスク(創造的なブレインストーミングと事実確認)に適した方法で使用する。
ハルシネーションを超えた安全性
アラインメントがハルシネーションに加えて対処する、他の安全性に関する問題。
有害なコンテンツ
暴力、自傷行為、違法行為、差別などに関連する有害なコンテンツの生成を拒否します。これは、トレーニング中に明示的に学習されます。
生物学に関連する懸念事項:
- 危険な化学物質または生物学的物質の合成に関する情報。
- 生物兵器の開発に関するアドバイス。
- 自傷行為または自殺に関連する情報。
アラインメントトレーニングにより、これは大部分が防止されますが、バイパス(脱獄)の試みに脆弱である可能性があります。
プライバシー
トレーニングデータに含まれる個人情報(メールアドレス、住所、医療情報など)の公開を防ぎます。
バイアス
トレーニングデータから、回答に反映されるバイアス(性別、人種、文化)の反映を防ぎます。完全な排除は困難です。既知のバイアスを文書化し、ユーザーに開示します。
自律性の懸念
エージェントが、自身または環境を操作しようとする(自己修正、欺瞞、権力志向)ことを防ぎます。これは、現在のアラインメント研究の最前線にあります。
生物学におけるAIの応用シナリオ
シナリオ1:論文引用を検証するための完全なパイプライン
LLMの回答に含まれる論文引用を自動的に検証します。
def verify_citations(answer_text): # 回答から[著者、年]形式の引用を抽出します citations = extract_citations(answer_text) verified = [] for cite in citations: # PubMed APIを使用して検証します result = pubmed_api(f"{cite.author} {cite.year}") if not result: verified.append({"citation": cite, "status": "NOT FOUND"}) else: match = best_match(cite, result) verified.append({ "citation": cite, "status": "FOUND" if match else "MISMATCH", "pubmed": match }) return verified
def answer_with_verified_citations(question): answer = llm.generate(question, use_rag=True) verification = verify_citations(answer)
if any(v["status"] != "FOUND" for v in verification): # 検証されていない引用がある場合、回答の修正を要求します answer = llm.regenerate_with_feedback( answer, verification, instruction="検証されていない引用を削除するか、検証済みの引用に置き換えてください" ) return answer, verificationこの検証レイヤーは、信頼性の高い文献レビューアシスタントにとって不可欠なコンポーネントです。
シナリオ2:遺伝子情報に関するQ&Aのためのデータベースに基づく情報提供
UniProt、Ensembl、およびPubMed APIを、遺伝子とタンパク質に関する質問の真実のソースとして使用します。
- ユーザーの質問:「TP53の主要なドメインは何ですか?」
- エージェントは、UniProt APIに対してTP53のページをクエリします。
- クエリ結果からドメイン情報のみを回答に使用します。
- パラメトリックな知識は使用しません。
- 回答には「ソース:UniProt P04637」が含まれます。
ElicitやConsensusなどのツールは、まさにこのアーキテクチャを使用しています。
シナリオ3:臨床的意思決定支援における人間のゲート
臨床的意思決定支援システムでは、ハルシネーション(幻覚)が非常に高いリスクをもたらします。人間のレビューレイヤーが不可欠です。
- システムは、診断および治療の推奨事項を生成します。
- 各推奨事項には、ソースドキュメントと信頼度スコアが含まれます。
- 最終的な承認は、人間の医師が行う必要があります。
- すべての会話と決定は、監査のために記録されます。
FDAやEMAなどの規制機関は、このようなシステムを承認するための条件として、人間の監視レイヤーを明示的に要求しています。
主要なポイント
- ハルシネーションは、確率的な機械の本質的な特徴です。 それは、妥当性と真実を区別できない構造的な制限です。
- 4つの原因:妥当性 ≠ 真実/パラメトリックな知識の曖昧さ/無知の認識の欠如/RLHFの過信バイアス。
- 完全な排除は不可能であり、目標は軽減です。 多層防御が標準です。
- 5種類のハルシネーション:パラメトリック、文脈的、推論的、自己矛盾的、および指示無視型。それぞれに対して異なる対応が必要です。
- 根拠: 回答を明示的に証拠に基づいて提示します。RAG + 厳密なプロンプト + 引用ラベル付け。
- アラインメントトレーニング: SFT → RLHF → DPO / 憲法AI。指示の追従と安全性を調整します。
- 不確実性の推定: トークンの信頼度、自己整合性、明示的な要求、外部検証者。
- 多層の軽減: 5つの軸:プロンプト、アーキテクチャ、検証、デプロイメント、ユーザー教育。
- 生物学的応用: 引用の検証、データベースに基づく情報提供、および人間のゲートが不可欠です。
📐 付録 — 専門家向けの数学的公式
難易度: 非常に難しい 対象読者: 強化学習、確率、情報理論の知識を持つ読者。
A.1 RLHF の目的関数
報酬モデル。人間の嗜好データ: {(x, y_w, y_l)}。ここで、y_w は好ましい応答であり、y_l は好ましくない応答です。
ブラッドリー・テリーモデル:
P(y_w > y_l | x) = σ(r_φ(x, y_w) - r_φ(x, y_l))σ: シグモイド関数。r_φ: パラメータ φ を持つ報酬モデル。
損失:
L_RM(φ) = -E[log σ(r_φ(x, y_w) - r_φ(x, y_l))]PPO 目的関数 (LLM パラメータ θ):
L_PPO(θ) = E[r_φ(x, y) - β · KL(π_θ(y|x) || π_ref(y|x))]π_θ: 現在のポリシー (調整中の LLM)。π_ref: 参照ポリシー (SFT モデル)。β: KL ペナルティ。ポリシーが大きく逸脱するのを防ぎます。
これは、パート 1 のセクション A.6 で定義されているものと同じ形式です。
A.2 DPO (直接嗜好最適化)
RLHF の PPO ステージをバイパスし、嗜好データから直接学習します。
重要な洞察。最適なポリシー π*、参照ポリシー π_ref、および報酬の関係:
r(x, y) = β · log(π*(y|x) / π_ref(y|x)) + β · log Z(x)これをブラッドリー・テリーモデルに代入すると、報酬モデルを必要とせずに、ポリシーから直接確率を計算できます。
DPO 損失:
L_DPO(θ) = -E[log σ(β · log(π_θ(y_w|x)/π_ref(y_w|x)) - β · log(π_θ(y_l|x)/π_ref(y_l|x)))]利点:
- 報酬モデルをトレーニングする必要はありません。
- 強化学習パイプラインは必要ありません。
- よりシンプルで安定しています。
Rafailov ら (NeurIPS 2023) 以来、DPO は RLHF の事実上の代替手段となっています。
A.3 倫理的 AI 手順
AI フィードバックによる強化学習 (RLAIF) の一種です。
- 最初の応答
y_0を生成します。 - 原則のセット
C = {c_1, ..., c_K}から、原則をランダムに選択します。 - モデルに「この原則に従って
y_0を批判および修正する」ように指示します →y_1。 - ペア
(y_0, y_1)をy_1を好ましい応答としてラベル付けします。 - このラベルを使用して DPO または RLHF でトレーニングします。
Anthropic の定式化。y_0 を y_1 に改善するプロセスは、会話として構成されています。会話の各ターンでは、原則を参照し、自己批判を行い、修正を行います。
A.4 根拠の定量化
応答 y、参照資料 D = {d_1, ..., d_n}。
帰属。各文 s ∈ y について、それをサポートする証拠 d ∈ D にマッピングできるかどうかを判断します。NLI (自然言語推論) モデルを使用して、各ペア (s, d) の含意確率を計算します:
score(s) = max_d P(d ⊨ s)根拠スコア:
G(y, D) = (1/|y|) Σ_s 1{score(s) > threshold}閾値は通常、0.7 ~ 0.8 です。スコアが 100% の場合、完全に根拠があることを示し、中間的なスコアは部分的に根拠があることを示します。
RAGAS ツールで使用されている根拠の指標は、この原則に基づいています。
A.5 自己整合性の公式
同じ質問 q に対して K 個の応答 {y_1, ..., y_K} を生成します (温度 > 0)。
多数決:
y_final = argmax_y Σ_{k=1}^{K} 1{y_k == y}重み付き多数決 (対数確率):
y_final = argmax_y Σ_{k=1}^{K} 1{y_k == y} · exp(log_prob(y_k))効果。Wang ら (2022): 算術および論理的推論タスクでは、CoT + 自己整合性 (K=40) は、単一の CoT 応答と比較して、精度を大幅に向上させました。
A.6 トークンレベルの不確実性
予測エントロピー:
H(y_t) = -Σ_v P(v | context) log P(v | context)H(y_t) が高い場合、次のトークンは不確実です。応答内の各位置のエン
参考文献
このセクションのすべての内容、シナリオ、および図は、BioPlaygroundによって作成されたものであり、以下の外部リソースは、概念の理解に役立ちます。
- RLHFのオリジナル論文: Christiano et al., "Deep Reinforcement Learning from Human Preferences" (NeurIPS 2017)
- InstructGPT: Ouyang et al., "Training language models to follow instructions with human feedback" (NeurIPS 2022)
- DPO: Rafailov et al., "Direct Preference Optimization" (NeurIPS 2023)
- Constitutional AI: Bai et al., "Constitutional AI: Harmlessness from AI Feedback" (Anthropic 2022)
- Self-Consistency: Wang et al., "Self-Consistency Improves Chain of Thought Reasoning" (ICLR 2023)
- Semantic Uncertainty: Kuhn et al., "Semantic Uncertainty" (ICLR 2023)
- SelfCheckGPT: Manakul et al., "SelfCheckGPT" (EMNLP 2023)
- FactScore: Min et al., "FActScore" (EMNLP 2023)
- Sycophancy: Perez et al., "Discovering Language Model Behaviors with Model-Written Evaluations" (Anthropic 2023)
- Adversarial Suffix: Zou et al., "Universal and Transferable Adversarial Attacks on Aligned Language Models" (2023)
- Anthropic Responsible Scaling Policy: anthropic.com/rsp
- OpenAI Preparedness Framework: openai.com/preparedness
フェーズ2はここで終了します。パート12から、フェーズ3では、PyTorch、HuggingFace、Claude Code、Cursorなどの実用的なツールについて説明します。
次の概念
フェーズ2の活用編はここで終了します。
- エピソード#12
pytorch-basics— フェーズ3ツールのエピソードの開始。ニューラルネットワークを最初からコーディングします。 - エピソード#13
huggingface-and-openai— モデルとAPIのエコシステム。 - エピソード#14
claude-code-and-cursor— コーディングエージェントの実践。