SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND
CRITIQUE THROUGH SELF-REFLECTION より(https://arxiv.org/pdf/2310.11511)
目次
- 1. SELF-RAGとは:自己反省型の情報検索強化生成
- 2. SELF-RAGフレームワークの全体像
- 3. SELF-RAGの技術実装
- 4. パフォーマンスと応用例
- 5. 今後の展望と影響
- 6. まとめ
1. SELF-RAGとは:自己反省型の情報検索強化生成
1.1 現状の大規模言語モデルの課題
大規模言語モデル(Large Language Models; LLMs)は、ChatGPTやLlama2などに代表されるように、テキスト生成能力において驚くべき進歩を遂げています。これらのモデルは膨大なテキストデータで事前学習されており、様々なタスクに対応できる汎用的な知識を持っています。
しかし、こうしたLLMsには大きな課題があります。特に重要な問題は「事実の正確性」です。LLMsは内部に保持している「パラメトリック知識」だけに依存しているため、以下のような問題が発生します:
- 幻覚(Hallucination): 実際には存在しない事実を自信を持って生成してしまう
- 古い情報: モデルの学習時点以降に変化した情報を更新できない
- 具体的な詳細の欠如: 特定の専門領域や稀な事実に関する詳細が不正確になりやすい
幻覚(Hallucination)とは?
言語モデルが、実際には存在しないまたは間違った情報を事実であるかのように生成する現象です。例えば、存在しない学術論文の引用や、架空の歴史的出来事の詳細を「事実」として提示するなどの現象が該当します。
1.2 従来のRAGの限界
これらの課題に対処するため、「検索拡張生成(Retrieval-Augmented Generation; RAG)」が開発されました。RAGは言語モデルの入力に関連文書を追加することで、モデルが外部知識にアクセスできるようにする手法です。
しかし、従来のRAGアプローチには以下のような限界があります:
- 常に検索を実行: 情報検索が不要な場合でも固定数の文書を検索してしまう
- 検索結果の関連性の低さ: 検索した情報が必ずしも質問に関連しているとは限らない
- 検索情報の無視: モデルが検索した情報を無視したり、不正確に利用したりすることがある
- 効率の低下: 不必要な検索による計算リソースの浪費
- 出典の不明確さ: どの情報がどの出典に基づいているのか明確でない
一方、新しく提案された「SELF-RAG(Self-Reflective Retrieval-Augmented Generation)」フレームワークは、こうした課題を解決するために設計されています。
2. SELF-RAGフレームワークの全体像
2.1 核となるコンセプトとアーキテクチャ
SELF-RAGの最も革新的な点は、言語モデルに「自己反省能力」を与えることです。モデルは単にテキストを生成するだけでなく、以下のことができるように訓練されます:
- 「情報検索が必要かどうか」を自分自身で判断する
- 検索した情報の関連性を評価する
- 自分の生成したテキストが検索情報によって裏付けられているかを批評する
- 生成テキストの全体的な有用性を評価する
このプロセスを図示すると以下のようになります:
2.2 反省トークン(Reflection Tokens)の役割
SELF-RAGの中核となるのが「反省トークン(Reflection Tokens)」です。これらは言語モデルの語彙に追加される特殊なトークンで、モデルの自己評価や検索の必要性を示します。
主な反省トークンには以下の4種類があります:
-
Retrieve(検索)トークン:
-
Yes
: 検索が必要 -
No
: 検索は不要 -
Continue
: 前回の検索結果を継続利用
-
-
ISREL(関連性)トークン:
-
Relevant
: 検索された文書は関連性がある -
Irrelevant
: 検索された文書は関連性がない
-
-
ISSUP(裏付け)トークン:
-
Fully Supported
: 生成内容は完全に検索情報で裏付けられている -
Partially Supported
: 生成内容は部分的に検索情報で裏付けられている -
No Support / Contradictory
: 生成内容は裏付けられていないか矛盾している
-
-
ISUSE(有用性)トークン:
-
1
~5
の5段階評価(5が最高)で生成内容の有用性を評価
-
これらのトークンにより、モデルは「いつ情報を検索すべきか」「検索結果はどの程度信頼できるか」「自分の出力はどの程度検索情報に基づいているか」を表現できるようになります。
2.3 トレーニングプロセス
SELF-RAGのトレーニングは次の2つの主要ステップから構成されます:
-
批評モデル(Critic Model)のトレーニング:
まず、反省トークンを予測するための批評モデルを作成します。具体的には:- GPT-4を使って反省トークンのトレーニングデータを生成
- このデータで批評モデルをファインチューニング
-
生成モデル(Generator Model)のトレーニング:
次に、テキストと反省トークンの両方を生成できるモデルをトレーニングします:- 訓練済みの批評モデルを使って、トレーニングデータに反省トークンを追加
- このデータでメインの生成モデルをトレーニング
トレーニングプロセスの流れは以下のようになります:
2.4 推論プロセス
トレーニングされたSELF-RAGモデルは、推論(実行)時に次のように動作します:
- 入力とこれまでの生成テキストに基づいて、
Retrieve
トークンを生成して検索の必要性を判断 - 検索が必要な場合:
- 複数の文書を検索して並列に処理
- 各文書の関連性を
ISREL
トークンで評価 - 各文書に基づく可能な生成テキストを作成
- テキストが文書で裏付けられているかを
ISSUP
トークンで評価 - 最も適切な文書と生成テキストを選択
- 検索が不要な場合:
- 内部知識のみに基づいてテキストを生成
- いずれの場合も、最終的な生成テキストの全体的な有用性を
ISUSE
トークンで評価
この推論プロセスの重要な特徴は「セグメントレベルのビームサーチ」です。各セグメント(通常は1文)ごとに複数の候補を生成し、反省トークンの評価に基づいて最良の候補を選択します。
3. SELF-RAGの技術実装
3.1 批評モデル(Critic Model)の構築
批評モデルは、入力と出力のペアに対して適切な反省トークンを予測するためのモデルです。その構築プロセスは以下の通りです:
-
訓練データの収集:
- GPT-4に反省トークンを生成させるプロンプトを設計
- 各反省トークンタイプ(Retrieve、ISREL、ISSUP、ISUSE)ごとに数千から数万件のデータを収集
- 人間による評価と高い一致率を確認(90%以上)
-
モデルの訓練:
- 事前学習済みの言語モデル(例:Llama2-7B)を初期モデルとして使用
- 標準的な言語モデリング目標で訓練:
ここで、C は批評モデル、x は入力、y は出力、r は反省トークンを表します
max_C E_{(x,y),r}~D_critic [log p_C(r|x,y)]
批評モデルは、トレーニング時のみ使用され、推論時には生成モデルに統合されるため、実行時のオーバーヘッドはありません。
3.2 生成モデル(Generator Model)のトレーニング
生成モデルは、テキストと反省トークンの両方を生成できるようにトレーニングされます:
-
訓練データの準備:
- 入力-出力ペアから始める
- 批評モデルを使用して、出力にどのように反省トークンを追加すべきかを判断
- 関連性のある文書を検索して、適切な場所に挿入
- 反省トークンで拡張された新しいトレーニングデータセットを作成
-
モデルのトレーニング:
- 事前学習済みの言語モデルを初期モデルとして使用
- 語彙を拡張して反省トークンを含める
- 標準的な次トークン予測目標で訓練:
ここで、M は生成モデル、x は入力、y は出力テキスト、r は反省トークンを表します
max_M E_{(x,y,r)}~D_gen [log p_M(y,r|x)]
トレーニングの詳細フローは以下のようになります:
3.3 カスタマイズ可能な推論アルゴリズム
SELF-RAGの大きな利点は、推論時に様々なパラメータを調整して、モデルの動作をカスタマイズできることです:
-
検索頻度の調整:
- しきい値パラメータδを設定して、
Retrieve=Yes
の確率がδを超えた場合のみ検索を実行 - δを大きくすると検索頻度が下がり、δを小さくすると頻度が上がる
- しきい値パラメータδを設定して、
-
反省トークンの重み付け:
- 各反省トークンタイプ(ISREL、ISSUP、ISUSE)に重みwを割り当て
- これらの重みの線形和でセグメントスコアを計算:
S(Critique) = w_ISREL * s_ISREL + w_ISSUP * s_ISSUP + w_ISUSE * s_ISUSE
-
ハードな制約とソフトな制約:
- ソフト制約:スコアに基づいてランキング
- ハード制約:特定の条件(例:
ISSUP=No Support
)を満たすセグメントを除外
これにより、タスクの要件や優先事項に応じてモデルの動作を調整できます。例えば:
- 事実の正確性を重視する場合、
ISSUP
の重みを高く設定 - 創造性を重視する場合、検索頻度を下げて
ISUSE
の重みを高く設定
4. パフォーマンスと応用例
4.1 実験結果
SELF-RAGは、事実検証、質問応答、伝記生成など、様々なタスクで評価されました。以下はその主な結果です:
-
事実に基づくタスクでの優位性:
- PubHealth(公衆衛生に関する事実検証): 従来のRAGより約20%以上の精度向上
- PopQA(一般的な質問応答): ベースラインモデルと比較して約30%の正解率向上
-
出典の精度:
- 長文生成タスクでは、ChatGPTなど商用モデルを上回る出典精度
- ASQA(引用付き質問応答): 出典の正確さ(precision)で70%以上を達成
-
モデルサイズとパフォーマンス:
- 7Bパラメータのモデルでも、より大きいモデル(13B)と同等またはより良い性能
- 時には、GPT-4やChatGPTなどの大規模商用モデルをも上回る性能
-
人間による評価:
- 出力の妥当性と裏付けに関する人間評価で高いスコア(90%以上)
- 反省トークンの信頼性も人間の判断と高い一致率(85-95%)
4.2 用途と応用例
SELF-RAGの応用可能性は広範囲に及びます:
-
事実に基づく質問応答システム:
- 医療情報や法律情報など、正確性が重要な分野での質問応答
- 学術研究支援ツール(論文の要約や関連研究の紹介)
-
情報検証システム:
- ニュース記事やソーシャルメディアの投稿の事実確認
- 学生のレポートや論文のファクトチェック
-
カスタマイズ可能なコンテンツ生成:
- 事実に基づいた創造的な文章(例:教育コンテンツ、記事執筆)
- ユーザーの好みに応じた情報の詳細度調整
-
透明性の高いAIシステム:
- AIの判断理由を説明できるシステム(Explainable AI)
- 引用と出典を明示する学術支援ツール
4.3 他のアプローチとの比較
SELF-RAGと他のアプローチを比較すると:
-
従来のRAGとの比較:
- 従来のRAG: 常に固定数の文書を検索、生成との統合が弱い
- SELF-RAG: 必要に応じて検索、生成との統合が強い、出典の精度が高い
-
大規模言語モデルとの比較:
- ChatGPT/GPT-4: 大規模なパラメータ、外部知識へのアクセスが限定的
- SELF-RAG: 小規模でも高い性能、外部知識の効果的な活用
-
並行研究との比較:
- LATS: LLMに検索行動を促すプロンプト設計
- CoVE: 反復的なプロンプトエンジニアリングで事実性を向上
- SELF-RAG: エンドツーエンドのトレーニングでより統合的なアプローチ
SELF-RAGの特に優れている点は、小さいモデルサイズでも高い性能を発揮し、カスタマイズ性が高く、出典の正確性が向上していることです。
5. 今後の展望と影響
5.1 限界と課題
SELF-RAGにはいくつかの限界と課題があります:
-
トレーニングの複雑さ:
- 批評モデルと生成モデルの2段階トレーニングが必要
- GPT-4からの知識蒸留に依存している
-
計算コスト:
- 推論時に複数の候補を並列処理するため、計算コストが高い
- ビームサーチによる処理速度の低下
-
出典の質への依存:
- 検索エンジンの質に依存している
- 検索された情報自体が不正確な場合の対処が課題
-
言語や領域の制約:
- 現在のモデルは主に英語で評価されている
- 専門領域での評価はまだ限定的
5.2 潜在的な改善点
SELF-RAGは以下の方向で改善できる可能性があります:
-
効率の向上:
- より効率的な推論アルゴリズムの開発
- 小規模モデルへのさらなる知識蒸留
-
マルチモーダル対応:
- テキスト以外の画像や音声などのモダリティへの拡張
- マルチモーダル情報の検索と評価
-
検索コンポーネントの改善:
- タスク固有の検索エンジンの開発
- リアルタイムのウェブ検索との統合
-
より強力な反省メカニズム:
- さらに詳細な反省トークンの設計
- マルチターンの自己修正メカニズム
5.3 AI技術全般への影響
SELF-RAGのようなアプローチは、AI技術全般に広範な影響を与える可能性があります:
-
信頼性の向上:
- AIシステムの出力における事実の正確性向上
- システムが「わからない」と認める能力の実装
-
透明性と説明可能性:
- AIの判断プロセスの可視化
- 出典と確信度の明示
-
AI開発のパラダイムシフト:
- 単純なスケーリングから知識の効果的な活用へのシフト
- 自己評価と自己改善能力を持つAIの開発
-
広い応用への道:
- 医療、法律、教育など、高い正確性が求められる分野でのAI活用
- 個人化されたAIアシスタントの実用性向上
6. まとめ
SELF-RAG(Self-Reflective Retrieval-Augmented Generation)は、大規模言語モデルの質と事実的正確性を向上させるための革新的なフレームワークです。このアプローチの核心は、モデルに自己反省能力を持たせることで、「いつ外部知識を検索すべきか」「検索した情報はどれだけ関連しているか」「生成した内容はどの程度信頼できるか」を自ら判断できるようにすることです。
SELF-RAGの主な利点は:
- 必要に応じた情報検索: 常に検索するのではなく、必要な時だけ外部知識にアクセス
- 自己評価能力: 生成内容の質と事実的正確性を自ら評価
- カスタマイズ可能な推論: タスクや要件に応じて動作を調整可能
- 高い出典精度: 情報の出典を明確に示し、内容が出典で裏付けられていることを確認
実験結果は、SELF-RAGが様々なタスクで従来のRAGアプローチや大規模言語モデルを上回る性能を示しています。特に注目すべきは、パラメータ数が少ないモデル(7Bや13B)でも、より大きなモデルと同等かそれ以上の性能を達成していることです。
今後の研究では、効率性の向上、マルチモーダル対応、検索コンポーネントの改善などが期待されます。SELF-RAGのようなアプローチは、AI技術の信頼性と透明性を高め、医療、法律、教育など高い正確性が求められる分野でのAI活用を促進する可能性があります。
クイズ
- SELF-RAGの主な革新点は何ですか?
- 従来のRAGと比較して、SELF-RAGはどのような利点がありますか?
- SELF-RAGで使用される4種類の反省トークンは何ですか?
- SELF-RAGのトレーニングプロセスには、どのような2つの主要なステップがありますか?