意味エントロピーによる大規模言語モデルの幻覚検出
(nature.com)- LLMのもっともらしいが恣意的な誤答である confabulation を捉えるため、語列ではなく回答の 意味分布 における不確実性を計算する方法を提案
- 同じ質問に対して複数の回答をサンプリングし、互いに 双方向に含意 する回答を同じ意味クラスタにまとめ、クラスタごとのエントロピーを計算
- TriviaQA、SQuAD 1.1、BioASQ、NQ-Open、SVAMPでLLaMA 2 Chat、Falcon Instruct、Mistral Instructを評価した結果、平均 AUROC 0.790 で naive entropy 0.691、P(True) 0.698、embedding regression 0.687 を上回った
- GPT-4ベースの伝記生成データセット FactualBio では、21人の伝記から抽出した150個の事実主張のうち45個が誤っており、出力確率なしでも動作する離散意味エントロピーが self-check と P(True) 変種より高い AUROC と AURAC を示した
- 意味エントロピーは事前のドメイン知識やタスク別ラベルなしに新しいタスクへ一般化するが、学習データの誤り・体系的推論失敗・ユーザーを誤導する出力のような 一貫して誤った回答 の事実性までは保証しない
検出対象: すべての幻覚ではなく confabulation
- ChatGPTやGeminiのようなLLMは推論や質疑応答の能力を示す一方、法律判例の捏造、ニュースの虚偽事実、放射線医学のような医療領域での危険性のため、実運用への導入が難しくなっている
- ここで扱う対象は広い意味での幻覚全体ではなく confabulation である
- LLMは流暢に話すが、答えは誤っていて恣意的である
- 同じ指示でもランダムシードのような無関係な詳細によって答えが変わる
- たとえば「Sotorasibのtargetは何か?」という質問に、正答である KRASG12 ‘C’ と答えることもあれば、誤答である KRASG12 ‘D’ と答えることもある
- 次のような失敗類型は confabulation と区別される
- 誤った学習データや通念のために 一貫して誤る場合
- 報酬追求の過程でモデルが 嘘をつく 場合
- 体系的な推論失敗や一般化失敗
- この方法は、人間が見てももっともらしい恣意的誤答を検出することに焦点を当てており、LLM出力の 事実性保証 を提供するものではない
意味エントロピーの中核アイデア
- 一般的なエントロピー計算は、モデルが生成した トークン列 の確率分布を用いる
- 同じ正答でも複数の表現で書けるため、意味が同じでも語が異なればエントロピーが高く測定されうる
- naive entropy は表現の多様性と意味の差異を区別できない
- 意味エントロピーは、自由形式生成の回答を 意味単位 でまとめたうえで不確実性を推定する
- 同じ意味を持つ回答群を1つの意味クラスタにまとめる
- クラスタごとの確率を合算して意味単位のエントロピーを計算する
- 同じ質問に複数回答えさせたとき、表現だけが異なって意味が同じなら不確実性は低く、異なる意味の回答が混在すれば不確実性は高いとみなす
- 出力確率を利用できないモデルには 離散意味エントロピー を適用できる
- トークン確率の代わりに、各意味クラスタに属するサンプル数の比率を使う
- GPT-4実験では当時、出力確率と hidden state へのアクセスが不可能だったため、この変種を用いた
- 離散変種は標準推定器と近い性能を示す
アルゴリズム: サンプリング、意味クラスタリング、エントロピー計算
- 手順は3段階で構成される
- 生成: 同じ入力に対して複数の回答をサンプリングする
- クラスタリング: 回答を意味が同じグループにまとめる
- エントロピー推定: 同じ意味クラスタに属する系列確率を合算してエントロピーを計算する
- 意味同値性は 双方向含意 で近似する
- 文Aが文Bを含意し、文Bも文Aを含意すれば同じ意味とみなす
- “The capital of France is Paris” と “Paris is the capital of France” は互いに含意するため同じ意味として扱う
- “Paris” のような短い回答は、質問文脈の中でのみ、より長い回答と同じ意味になりうる
- 含意判定には一般的なLLMとNLIツールが使われる
- QA・数学実験では、GPT-3.5が人手評価とよく一致し、confabulation検出性能も高かったため採用された
- DeBERTa-Large-MNLI のようなNLIモデルも検討された
- サンプリングには temperature 1、nucleus sampling P=0.9、top-K sampling K=50 が用いられる
- モデル精度評価用には、低い temperature 0.1 の単一生成を使用する
- 長文ではトークン確率の積が小さくなる問題があるため、対数確率比較には 長さ正規化 を用いる
QAと数学問題の評価
- 評価対象は自由形式回答を必要とするデータセットである
- TriviaQA: クイズ知識
- SQuAD 1.1: Wikipediaベースの読解
- BioASQ: 生命科学QA
- NQ-Open: Google Search の実クエリに由来するオープンドメイン質問
- SVAMP: 小学校レベルの文章題
- 各データセットで train 400例、test 400例を無作為抽出した
- 意味エントロピー自体は train データを使用しない
- 問題を難しくし、confabulation を誘発するため、データセット本来の context passage は提供しない
- 使用モデルは以下の通り
- LLaMA 2 Chat 7B、13B、70B
- Falcon Instruct 7B、40B
- Mistral Instruct 7B
- sentence-length 回答の平均長は 96±70 文字で、30件のタスク・モデル組み合わせにおいて意味エントロピーが最も高い平均 AUROC を記録した
- semantic entropy: 0.790
- naive entropy: 0.691
- P(True): 0.698
- embedding regression: 0.687
- モデル系列やサイズ別でも意味エントロピーの性能は安定していた
- LLaMA、Falcon、Mistral 全体で AUROC 0.78〜0.81 の範囲
- 7B から 70B までのサイズでもベースラインを上回った
- P(True) はモデルサイズが大きくなるほど改善する傾向があり、非常に有能で誠実なモデルが設定をよく理解する場合には、より競争力がある可能性がある
- 誤答検出評価には confabulation だけでなく、意味エントロピーが直接狙っていない体系的誤答も含まれていた
- それでも意味エントロピーが他手法を上回ったことは、実際の生成誤りにおいて confabulation が主要カテゴリであることを示唆する
拒否ベースの精度と評価指標
- AUROC は、特定の回答が誤っているかどうかを識別する二値イベントに用いられる
- 値は 0〜1 の範囲で、1 は完全分類器、0.5 は情報を持たない分類器を意味する
- AURAC は 拒否精度 曲線下面積である
- confabulation の可能性が高いと判断した質問を拒否したとき、残った質問に対するモデル精度を測定する
- 複数の threshold におけるユーザー体験上の精度改善を要約する
- 意味エントロピーは次のような状況で活用できる
- confabulation を引き起こす可能性が高い質問には答えない
- 特定の回答の信頼性が低いことをユーザーに知らせる
- 検索や検索ベース手続き(retrieval)のような、より根拠のある手続きを補強する
- sentence-length 回答の正誤判定は、GPT-4が reference answer と proposed answer の意味一致を判断する方式で自動化された
- 別の補足資料で人手判断との比較により自動評価の品質を確認している
長い伝記生成: FactualBio 実験
- 長い段落では複数の命題が混在しており、段落全体の意味同値性を直接判断するのは難しい
- 同じ段落を再生成すると、事実自体の不確実性ではなく 事実の順序や段落構造 の差が現れることがある
- FactualBio は GPT-4 v.0613 が生成した伝記データセットである
- Wikipediaページがある程度には知られているが、オンラインの詳細な伝記が多くない21人を対象とする
- 生成された伝記から事実命題150件を自動抽出した
- 150件のうち45件が手動ラベリングで誤った主張と判定された
- 長文生成には次の手順を適用する
- 段落を個別の 事実主張 に分解する
- 各事実主張を答えとして成立させる質問を自動生成する
- 元のLLMが各質問に対して新しい回答を生成する
- 新しい回答と元の事実主張を一緒に入力して意味エントロピーを計算する
- 複数の質問の意味エントロピーを平均し、その事実主張に対する不確実性スコアを得る
- 各事実について質問を6件作成し、各質問ごとに新しい回答を3件生成する
- 元の事実主張を含めてエントロピーを計算することで、元の claim への grounding を維持する
- “not available”, “not provided”, “unknown”, “unclear” のような拒否回答が半数を超えた場合、意味不確実性を最大値として扱う
- 離散意味エントロピーは FactualBio において、self-check ベースラインおよび paragraph-length 向け P(True) 変種より高い AUROC と AURAC を記録した
- rejection accuracy では質問の20%が拒否されるまでは離散意味エントロピーの方が優れており、その時点では P(True) がわずかに上回った
限界と適用可能性
- 意味エントロピーはモデルアーキテクチャの変更なしに、LLMや類似の foundation model に適用できる
- 出力確率がない制限されたアクセス環境でも 離散変種 を利用できる
- 教師あり学習方式と異なり、ラベル付きの confabulation 例を必要とせず、事前のドメイン知識なしに新タスクへ一般化する
- embedding regression のような教師あり方式は、学習データとデプロイ時データの分布が異なると性能が悪化する
- この方法は、LLMが 自信を持って誤る状況 を直接解決するものではない
- 危険な行動を体系的に作り出す学習目標
- 体系的推論誤り
- ユーザーを体系的に誤導する出力
- こうしたケースは confabulation に似た症状を示しうるが、別個の対処が必要である
- 意味を基準として確率的機械学習の不確実性推定ツールを自由形式言語生成に適用したアプローチであり、タスク別データなしに新タスクへ一般化し、ユーザーがより注意すべき状況を把握するのに役立つ
データとコード
- 短いフレーズおよび sentence-length 生成実験では公開データセットが使われており、アプローチは公開コードに含まれている
- FactualBio の公開版は、paragraph-length 実験再現用コードベースの一部として提供される
- コード公開先
- github.com/jlko/semantic_uncertainty: short-phrase および sentence-length 実験コード
- github.com/jlko/long_hallucinations: paragraph-length 実験コード
- Zenodo DOI: https://doi.org/10.5281/zenodo.10964366
1件のコメント
Hacker Newsでの意見
コメント欄では、単語の意味やLLMの擬人化をめぐって言い争っているように見えるが、このアプローチには数学的な次元で実際の問題がある
どんな入力テキストにも対応する出力テキスト分布があり、複数のサンプルを取り出してエントロピーや不一致を評価する方法は、すでにその出力分布の性質を知っているという前提に依存しているように見える
たとえば「Tom Cruiseは何で有名か?」には、「movie star」「katie holmes」「topgun」「scientology」のように、ベクトル空間上では大きく離れた答えがどれも正解になり得る
逆に「Taylor Swiftは何で有名か?」に対して「standup comedy」「comedian」「comedy actress」のように意味的に近い答えが出てきた場合、それらはすべて幻覚かもしれない
特定の入力に対する正しい単語列の分布を知ることこそがLLMの解くべき問題なのだとすれば、出力分布だけを評価して正解かどうかを判断する方法はない
人工ニューラルネットワーク出力の不確実性を評価する統計モデルはあるが、LLMの規模では現実的ではなさそうで、最後の1〜2層だけを使う部分推定はネットワーク全体の不確実性を大きく切り捨てている
自分が遭遇する幻覚も、変数名の変更や設定キーの捏造のように、非常にもっともらしく正解に近く見えるが、実際には間違っているケースが多い
学習データがTaylor Swiftをコメディアンだと言っているなら、それは幻覚の問題ではない
これは温度を下げることに似て聞こえる。根拠のある真実からよりうまく引き出すのではなく、ベクトル空間でより確率の高い側へ進んでいるように見えるのだが、この理解で合っているのか気になる
Tom Cruiseの例では、どれも事実で学習データに根拠があるため、この手法が誤って幻覚として陽性判定してしまう可能性がある
ただし論文の例は「この特定の薬物が作用する受容体は何か?」「エッフェル塔はどこにあるか?」のような単一の正解を持つ質問なので、そのような用途には役立ちそうに見える
ガウス分布からサンプルを取り出して標準偏差を言うことはできるが、その分布が正確かどうかは分からない
エントロピーが高い変数の非常に正確な分布もあり得るし、逆に標準偏差が低い密な分布が単に間違っていることもある。事前に出力がどのような姿であるべきか分からなければ、サンプリングだけでは分からない
複数の答えをサンプリングし、意味類似度ごとにまとめたうえで、まとめられた答えの確率を合算して正規化する
たとえば「music:0.8, musician:0.9, concert:0.7, actress:0.5, superbowl:0.6」を [music, musician, concert] → MUSIC、[actress] → ACTING、[superbowl] → SPORTS にまとめ、MUSIC:0.686, SPORTS:0.171, ACTING:0.143 のように計算する形だ
論文は防ごうとしている対象を**作話(confabulation)**として明確に定義している。つまり、ランダムシードのような無関係な細部に敏感に変わる、誤っていて恣意的な流暢な主張である
よくある誤解はデータセットに強く残っているはずで、この方法は、他のあり得る答えから意味的に孤立していて、尤度も微妙な答えにペナルティを与える方式に近い
論文は検出効果だけを比較しており、その検出を活用した改善されたサンプリング方法は提示していない。生成手法に組み込むと、モデル生成を10倍程度多く行う必要があるという大きなコストも生じる
コード: https://github.com/jlko/semantic_uncertainty
現在のLLMアーキテクチャは主に検索のほうに集中しており、学習済みの重みは次トークン予測がうまくなるよう収束しているだけである
このデータを論理体系の中に入れる能力も、学習目標であるべきだったと思う
次トークン予測に、学習段階での知識形式検証を加えれば、LLMは知識生成の一貫性を保ち、正しい幻覚、つまり想像に近いものを見られるようになるはずである
プロセスとしては、既存の大規模モデルで既存の学習データを形式論理関係に変換し、複数の解を作らせたうえで、その強化データセットを使い、次トークンだけでなく既存知識と新たに生成されたテキストとの形式関係も出力する新しいLLMを学習する、という形があり得る
ネットワークは、生成された形式コードが証明検査器で高い精度を得られるよう、トークン生成精度とあわせて重みを最適化できる
個人的には、言語は知能の基盤ではなく副次的なもののように思え、基盤は相互に一貫した事物が存在する夢のようなシミュレーションにより近く、言語はそれを説明する道具のように感じる
トップダウンはビッグデータ以前、確率モデル以前の時代に多く試みられたが、膨大な手作業のキュレーションが必要で、知識も不足していた
ビッグデータの登場はキュレーション問題を解決せず、キュレーションを自動化できないため、規模が大きくなるほど悪化した
AIが1990年代ごろに確率の方向へ転換したことで、今日の連想的な確率モデルが可能になり、よりキュレーションされ、より形式的なアプローチがそれらに勝つ見込みは見えない
LLMに推論や因果性のようなタイプ2思考をどう付け加えるにせよ、実装は引き続き確率的・非形式的・ボトムアップでなければならない
論理・意味関係を人間が手作業で知識モデルにキュレーションする方式は、必要な規模と脆弱性への対応には十分でないことがすでに明らかになっている
『Godel, Escher, Bach』を読むか、OWLが20年間存在していたにもかかわらず、市場シェアがほとんどなかった理由を考えればよい
非同期コード管理のために人々がRETE以外のあらゆる答えを試した理由、「複合イベント処理」がCeleryのようなタスク実行器の競合ではなく特殊分野にとどまった理由、Droolsがなぜ分かりやすいエラーメッセージを出せないのかも、同じ文脈である
幻覚問題全体が、停止性問題にもう少し段階を付け足したもののように感じる。ChatGPTにP=NPかどうか尋ねるべきかもしれない
私の経験上、DAGのための意味のある関係スキーマと呼べるものだ。オープンソース版もあるが、会社はもはや直接メンテナンスしていない
https://cyc.com
https://github.com/asanchez75/opencyc
自然に存在するパラドックスや、互いに矛盾しているがそれぞれ論理的には正しい理論はどうするのか?
言うのは簡単だが、実際には「私たちが解き方を知らないNP困難問題を解けば動くはずだ」と提案しているようなものだ
これを幻覚と呼ぶこともできるが、別の表現をすれば、これらのシステムは真実と直交していると見ることができる
真か偽かとは何の関係もないという意味だ
この考えはこの論文にも表現されている: https://link.springer.com/article/10.1007/s10676-024-09775-5
アルゴリズムに人格的な特性があるかのように語るのはカテゴリー錯誤である
手続き的に生成されたランダム性は、ブレインストーミングのような用途には優れている場合があり、一貫性は学習資料にも比較的一貫して登場した何かを反復しているというシグナルである
そのため真である可能性も偽である可能性もあるが、どこかから持ってきた可能性は高い
情報がどれほどランダムなのかを知ることは、小さな前進のように見える
だとすれば、事実上もっともらしいデタラメを言うよう教えていることになる
即興演劇の授業で、会話を面白く保ち、相手役に「いいえ」と言わないよう教えるのに似ている
コンピュータが言うことがそのまま「真実」になり得る
Jungなら「antinomy」と呼んだかもしれない。目的は真実を表象することではなく、あり得る答えの総体を表象することだ
LLMがしていることは結局すべて「幻覚」ではないのか?
幻覚したかどうかを知るには、すでに正解を知っていなければならない。答えが合っているか分かるシステムを作れるなら、もはやLLMは必要なくなる
現在のLLMがしていることはデタラメを言うことと呼ぶほうが正しい。そのデタラメが良くなるほど、たまたま当たる割合が徐々に上がるだけだ
ときには物理的・社会的な力学に基づいて一貫しており、ときにはそうではない
明らかに常に正しいシステムは不可能なので、一貫性を追求するシステムが必要だ
当面のあいだ、AI企業はチャットボットを少しチューニングされたテキスト生成ツールとしてだけ提示したほうがよいかもしれない
そうすれば人々はそれに合わせて使える
多少の理解のように見えるものもあり、段階的推論を少し模倣させることもできるが、このブラックボックス機能の95%はテキスト生成である
事実生成でも知識生成でもなく、百科事典というより即興劇の相手に近いことは、テック業界の人なら皆わかっている
LLMが人々を誤解させる問題に、賢い回答エントロピー解法が必ず必要なのかはわからない。その解法は興味深く、記述に確信度スコアを付けるような形で実際の改善をもたらしそうではある
しかし、機械学習のテキスト生成器をほとんどAGIのようにマーケティングしないだけでも、大半の被害を減らせて、より大きな助けになるのではないか
質問を投げるとLLMが答えとJavaScriptコードをくれたし、JavaScriptもかなり勘が鈍っていた
コードはすべてコンパイルでき、ほとんど期待どおりに動いた。エラーもあったが、私が理解できないエラーをLLMが説明し、動作する修正コードを出してくれた
全体としてメンターと一緒に作業しているような素晴らしい体験で、初心者の私にとって大幅に時間を節約できた。もちろん結果の検証は必要である
95%という数字はどこから来たのか? そしてそれがテキスト生成なのか、事実・知識生成なのかは重要ではない。本当に価値のあるツールで、私が使ったどんなものよりもはるかに優れている
「各質問について複数のあり得る答えをサンプリングし、意味が似ている答え同士をアルゴリズムでまとめる」という方法は、単一の客観的な正解がある質問には合理的である
複数の同等に妥当な答えがあり得る場合には、あまり役に立たないかもしれない
それでも検索エンジンへの応用には十分よい
意味エントロピーという概念を見ると、Enron事件の後に、ある銀行がプレスリリースのでたらめ度を測る「bullshitometer」を作ったことを思い出す
その銀行の名前は覚えていないが、Enronのプレスリリースに適用したところ、会社の崩壊を予測できたことを示したという
統計には感度分析という概念がある
この方法もある程度似ているように見えるが、興味深い代替案は、意味を保つと思われる方法で入力を修正したうえで、出力の意味がどう変わるかを見ることかもしれない
もちろん意味を変えずに入力を変えるのが難しい点ではあるが、完全に不可能には見えない
少なくともLLMに、意味を変えずに入力を変えてみるよう指示することはできる。ただし、モデルが入力を誤解した方向に合わせて修正してしまい、修正後には幻覚出力とよりよく一致する状況が生じる可能性もある
意味的同等性を検出するよう学習されたLLMが必要そうな意味エントロピーが、幻覚をよりうまく検出できるというのは理解できる
しかし、意味的同等性が幻覚問題を直接解決する仕組みはあまり見えてこない
現時点では、幻覚を捉えるヒューリスティックに近いのではないかと疑っている
さらに、この種の事象を捉えるために意味的同等性検出用の2つ目のLLMが必要だというのは、不必要に複雑に見える
意味的同等性データセットがあるなら、2つ目のLLMを学習させるより、メインのLLMの学習過程に直接入れると思う
ただし、「意味において良いAUCを達成する」のような明確な関数を複数混ぜて、知覚上の目標が不明確な複雑なモデルの弱点を補おうとすると、やはり妙なことになる
うまく混ざっているのかもわからないし、学習に予測しにくい結果・リスク・バイアスを入れているのかもわからない
「意味的同等性を判定できるか」のように狭く定義されたタスクでは、未知のリスクがより少ない良いモデルを作ることができ、そのモデルを比較的明確な方法で適用すれば、未知のリスクも減る
したがって、ややバイアスのある推定器を2つ使って特定の合理的なヒューリスティックへ道筋を付けるほうが、既存の複雑な混合物にデータを混ぜ込み、その寄与が予測可能であることを期待するより、はるかに安全で一般的かもしれない
公共機関向けLLM回答における事実誤りの影響を減らす研究をしているが、事実と異なる回答をすると違法になり得る
十分な精度で検出できるなら、システムは回答を拒否し、利用者に機関へ連絡するよう求めればよい
そもそも間違った回答をしないようにモデルを学習させるほうがもちろんよい
不必要な複雑性は、APIでアクセスする事前学習済みの商用ブラックボックスLLMの使用からも生じる。残念ながら、アプリケーションでLLMはほとんどこのように使われている
APIで微調整することもできるだろうが、このような大規模な合成データセットには面倒で制限があり、非常に高価である
記事を読むだけでは、「意味エントロピー」が具体的にどのように計算されるのか把握しにくかった。関心があるならコードのほうがずっと理解しやすい: https://github.com/jlko/semantic_uncertainty/blob/master/sem...
かなり賢いアイデアだ。同じ質問を何度も繰り返して尋ねたとき、モデルが異なる答えをするか確認する方法である
「確認」は別のモデルが行い、「違い」はエントロピーで測定する