🎉

LLMのハルシネーションを低減するChain-of-Verification

2024/05/08に公開

https://arxiv.org/pdf/2309.11495

2023年9月27日、Meta AIを中心とする研究チームから、LLMのハルシネーション(誤った情報をあたかも事実のように自然と出力してしまう現象)を低減するChain-of-Verificationという手法が発表されました。2022年11月のChatGPTリリース以来、盛り上がりを見せるLLMにとって、ハルシネーションは未だに最大の課題であり続けています。今回は、そんなハルシネーションを手軽に低減するユニークな解決策「Chain-of-Verification」を紹介していきます。

「ハルシネーション」を深掘り

本論に入る前に、いま一度、ハルシネーションというものについて整理しておきたいと思います。以下の、PDF47ページにもわたる超大作「Survey of Hallucination in Natural Language Generation」を参考にいたしました。
https://arxiv.org/pdf/2202.03629.pdf

定義

まず、上記論文において、ハルシネーションの定義は、「提供されたソースコンテンツに忠実でない、あるいは無意味な出力を生成すること」とされています。

分類

- 内在的ハルシネーション(Intrinsic Hallucinations)

ソースコンテンツと矛盾した内容が生成されるパターンです。例えば「エボラの最初のワクチンはFDAによって2019年に承認された」というソースコンテンツから、「最初のエボラワクチンは2021年に承認された」と出力してしまうのは内在的ハルシネーションに該当します。
- 外在的ハルシネーション(Extrinsic Hallucinations)

簡単にいうと、ソースコンテンツが確認できない出力です。例えば、「中国はすでにCOVID-19ワクチンの臨床試験を開始している」という出力を目にした時、我々はそのソースコンテンツを見つけることができない場合、その情報が間違っているのか正しいのか、判断できません。外在的ハルシネーションは必ずしも間違っているとは限らず、単に文脈とは関係ない事実を「思い出してしまった」というだけの場合もあり、それはそれで厄介な存在と言われています。

発生原因

ハルシネーションが発生する理由として、次の可能性が指摘されています。

- 学習データにおけるソースと出力の間にズレが発生する
LLMの事前学習には大量の学習データセットが必要です。その中には例えば、ある論文に含まれる「表の部分=ソース」「文章の部分=出力」で学習データをつくる場合があります。この際、表に関係ない情報が文章に含まれてしまうことがあり、その場合、ソースと出力の間にはズレが発生し、そのズレがハルシネーションという形で現れることがあります。
- 学習データに含まれる重複が偏向的に出現する
学習データの中に重複が含まれる場合、重複学習時に覚えたフレーズが、半ばランダムに出現してしまうことがある、と言われています。これを防ぐために、学習時の重複削除作業は非常に重要です。
- モデル内部の挙動の問題
上記のようなデータ起因だけでなく、モデルがプロンプトやソースの理解を誤り、意図せぬ出力を生成してしまうことがあります。

評価

ハルシネーションのレベルを定量化する手法として「良い文章かどうか」をLLMに判定させる方法がありますが、指標としてあまり信頼できるものではなく、指標そのものを再検討する研究が活発に行われています。

  • 統計的な手法

    最もシンプルな手法で、出力された文章と正解ソースの文章を比較し、単語の重複度を計算して評価を行います。
  • LLMを活用した手法

    出力結果に、LLMを活用して何かしらの加工を施してから評価するという手法です。例えば、以下の手法があります。
情報抽出ベース:生成された文章から「事実」を抽出し、それが元の情報と一致しているかを確認する
    • QAベース: 生成された文章から逆に質問を生成し、その質問が元の情報と一致するかを確認します。
    • NLIベース: 生成された文章が元の情報と矛盾していないか、NLIという計算手法で評価します。

低減手法

ハルシネーションの低減には、大きく3つの方向性があります。データの精度を上げるか、モデルの精度を上げるか、思考プロセスの精度を上げるかです。前者2つは発生原因を取り除くアプローチで、3つ目が本日のテーマにもつながる手法です。
- データの精度を上げる
学習データにおける出力とソースのズレが生まれないよう、人間がアナログにデータを生成・チェックし、データの品質向上を行う、自動的にデータの欠損を検出する、データにメタデータを付与する等、さまざまなアプローチがあります。
- モデルの精度を上げる
近年のLLMのほとんどが依拠しているTransformerアーキテクチャを変えるべきかもしれない、という可能性も指摘されています。あるいは強化学習(一定の出力に対して報酬を与えるという手法)を行うというアプローチも考えられます。
- 思考プロセスの精度を上げる
ポストプロセッシングとも言われる、一度回答を生成した後にハルシネーションを修正する、というアプローチです。

新たなハルシネーション低減手法、Chain-of-Verification

「Chain-of-Verification」は上記の「ハルシネーション低減方法」というリストの中でいうと、ポストプロセッシング、という方法に分類されます。Chain-of-Verificationは、学習データやモデルそのものに改善に介入することはなく、生成後されたテキストに含まれるハルシネーションをいかに減らすか、という工夫をプロンプトレイヤーで施すアプローチです。

Chain-of-Verificationの仕組みはいたってシンプルです。前ページの「ニューヨーク生まれの政治家」に関するタスクを解説しながら、仕組みをご紹介します。

Query「ニューヨーク出身の政治家の名前をいくつか挙げて」

  1. “Query”に対する出力
    “Baseline Response” を得ます。この例では、「ヒラリー・クリントン」や「ドナルド・トランプ」等がニューヨーク出身の政治家として挙げられています。(この時点では嘘が含まれます)
  2. “Baseline Response”に対して、その真偽を問うような質問リスト “Plan Verifications” をLLMに作成させます 。この例では、「ヒラリー・クリントンの出身はどこですか?」「ドナルド・トランプの出身はどこですか?」という質問が生成されるようになっています。
  3. LLMが2で生成された質問リストに対して答えていきます “Execute Verifications”。(実はヒラリー・クリントンの出身はシカゴでありニューヨークではないということがわかりました)
  4. その回答を踏まえ、最初の “Baseline Response” の中で間違っている部分は削除し、合っているものはそのまま残しておき、最終的な回答内容 “Final Verified Response” を決定します。

次の例では「メキシコとアメリカの戦争が発生した主要因は何ですか?」という質問への回答がタスクとして課されています。LLMは “Baseline Response” にはそれっぽい回答を返しますが、それに対して年号に関する具体的な質問をいくつか質問をすると、間違った回答が含まれていることが発覚しました。その点を修正した結果 “Final Verified Response” では最初の出力から大きく改善されました。

💬 Comment
こういった改善策を見るたびに、やっぱりLLMは人間っぽい思考回路をしているように感じます。というのも、私たち人間も、ある質問に対してそれほど深く考えずにパッと初期的な回答を出し、その回答を自ら反芻したり、他者と問答したりする中で、細かい部分の情報信頼性を意識し、最終的な回答の質を高めているように思うからです。
この大きな仮説(LLMは人間と同じような思考プロセスをたどっている)が正しいとすると、これから先、ハルシネーションを減らすためには、人間が正しい回答をするために有効な施策が次々と考案されていくかもしれません。

Discussion