arxivに投稿された論文を時々読んで面白いモノをメモっているのですが、LLMのハルシネーション抑制にどんな手法が有効かを調べた「 Investigating the Role of Prompting and External Tools in Hallucination Rates of Large Language Models」という論文が、とても良くまとまっていたので、簡単に知見を整理してみました。
多様性(Temperature)を上げて自己整合性(SC)を使うのが効果的という結論でしたが、いろいろなプロンプトエンジニアリング手法が登場して勉強になりました。これまで登場した手法をおさらいするのにとても良い教材でした。
なお、下記が論文から、ベンチマーク「GSM8K」における各手法の正解率をまとめたものです。
たぶん、この表だけ見ても、ぜんぜん意味が分からないと思います。表の中のCoTとかSCというのが、プロンプトエンジニアリングのテクニックの略称です。
そして、LLMにおける「Temperature(温度)」とは、モデルが生成するテキストの多様性やランダム性を調整するためのパラメータです。Temperatureの値を高くすると、出力はより多様で創造的になりますが、予測性が低くなります。逆に、Temperatureを低くすると、出力はより決定的で予測可能になり、一貫性のある応答が得られます。
論文の中に登場するプロンプトエンジニアリングのテクニックは次の通りです。簡単に手法を要約すると次のようになります!
💡CoT - Chain-of-Thought
CoTとは、言語モデルが問題を解決する際に、自身の思考プロセスを逐次的に展開する手法です。これにより、複雑な問題を一連の推論ステップに分解し、より正確な解答を導き出すことができます。
💡CoVe - Chain-of-Verification
CoVeとは、モデルが自らの解答を検証するプロセスを組み込む手法です。解答を生成した後、その解答の正確性や妥当性を確認します。
💡KGR - Knowledge Graph-based Retrofitting
KGRとは、知識グラフに基づいてモデルの単語埋め込み(ベクトル表現)を再調整する手法です。これにより、モデルは語彙間の意味的な関係をより正確に捉え、性能が向上します。なお、「KG (Knowledge Graph)」とは、エンティティ(実体)とそれらの関係を表現するデータ構造である「知識グラフ」のことです。
💡MAD - Multiagent Debate
MADとは、複数のエージェントが討論を通じて最適な解答を導き出す手法です。各エージェントが異なる視点や情報を提供し、議論を重ねることで、より信頼性の高い解答を生成します。
💡ReAct - Reasoning and Acting
ReActとは、モデルが「推論」と「行動」を組み合わせて問題解決を行う手法です。推論を通じて得られた知見を基に、環境との相互作用や情報検索などの行動を行い、解答を導き出します。
💡SC - Self-Consistency
SCとは、モデルが複数の思考パスを生成し、それらの中から最も一貫性のある解答を選択する手法です。これにより、偶発的な誤答を減らし、解答の信頼性を高めます。
💡ToT - Tree-of-Thoughts
ToTとは、思考プロセスを木構造として展開し、複数の推論パスを同時に探索する手法です。木構造により、多様な解答候補を効率的に評価し、最適な解を見つけ出します。
💡CP - Chat Protect
CPとは、LMの応答から矛盾する主張を検出し、削除する三段階のパイプラインです。
💡DDGA - DuckDuckGo Augmentation
DDGAとは、DuckDuckGoなどの外部検索エンジンを活用してモデルの知識を拡張する手法です。リアルタイムの情報を取得し、最新のデータに基づいた解答を提供することが可能になります。
まとめ:
それぞれの手法は、プロンプトエンジニアリングを極める上でとても役立つものです。それでも、先のGSM8Kの結果を見ると、Temperatureを上げて(生成結果の多様性を上げて)、自己整合性(SC)を利用すると、最も良い結果を得ることができるという結論でした✨
SCは、繰り返し質問してみて、回答の中から間違った答えを省くというシンプルな手法ですが、あまり凝ったことをするよりも、ChatGPTを使っている人なら、みんなやっている手法 - なんか答えが怪しいから何度か回答を生成し直したり、GeminiやClaudeでも試してみよう - というのが一番効果があるという結果が導き出されたのは興味深いです。
ちなみに、この論文に関連して・・・上記手法の主要なものは、私が先日執筆した以下の本で詳しく(具体的なプロンプト付きで)解説しています。良かったら見てみてください😋
元の論文の要約
元の論文でも詳しく手法を紹介しています。
下記の要約も興味があればどうぞ。以下は、ChatGPTで日本語訳してみたものです。
まず、元ネタの論文は次の通りです:
以下は抜粋を日本語訳したものです:
続く2.4も興味深いものでした:
そして、2.5では、エージェントについて要約しています。
以下はベンチマーク結果の要約です。
結論:
より詳しくは、論文に目を通して見ると良いでしょう。
Investigating the Role of Prompting and External Tools in Hallucination Rates of Large Language Models
下記は、先日執筆した以下の本で詳しく(具体的なプロンプト付きで)解説しています。良かったら見てみてください😋