LLM-Eval:LLMの会話を評価するための合理的なアプローチ
この作品では、LLMの応答品質を評価するために使用されるLLM-Evalと呼ばれる方法についてお話します。
シリーズ全体を読む
- OpenAIのChatGPT
- GPT-4.0と大規模言語モデルの秘密を解き明かす
- 2024年のトップLLM:価値あるもののみ
- 大規模言語モデルと検索
- ファルコン180B大型言語モデル(LLM)の紹介
- OpenAIウィスパー高度なAIで音声をテキストに変換する
- OpenAI CLIPを探る:マルチモーダルAI学習の未来
- プライベートLLMとは?大規模言語モデルをプライベートで実行 - privateGPTとその先へ
- LLM-Eval:LLMの会話を評価するための合理的なアプローチ
- CohereのRerankerを使いこなし、AIのパフォーマンスを向上させる
- PagedAttentionを用いた大規模言語モデルサービングの効率的なメモリ管理
- LoRAの説明LLMを微調整するための低ランク適応
- 知識の蒸留:妥当性を犠牲にすることなく、大規模で計算量の多いLLMから小規模なLLMへ知識を移行する
- RouteLLM: LLM展開におけるコストと品質のトレードオフをナビゲートするオープンソースフレームワーク
- 検証者-検証者ゲームがLLM出力の可読性を向上させる
- 金魚のように、暗記をするな!ジェネレーティブLLMで暗記を軽減する
- LLMにおけるメニーショット・インコンテキスト学習のパワーを解き放つ
- 双眼鏡でLLMを発見:機械生成テキストのゼロショット検出
#はじめに
ここ数年、大規模言語モデル(LLMs)が急速に成長しているため、その生成品質を評価するためのロバストな方法が必要とされている。すでにご存知のように、LLMの中核は、前のトークンが与えられたときに次のトークンを予測するように事前に訓練されています。つまり、これらのLLMはユーザーのクエリに対する応答を生成する際に幻覚を見る可能性がある。
幻覚とは、LLMの応答は首尾一貫していて説得力があるように見えるが、その真実性はまったくずれているという現象である。この問題は、事前学習プロセスで得られたモデルの内部知識が、こちらの質問に答えられない場合に発生する可能性がある。例えば、私たちがLLMに、私たちのユースケースに特化しすぎた質問、例えば専有データに関する問い合わせをした場合、幻覚が起こるかもしれない。
問題は、私たちがLLMの回答のベースとなるドメインの専門家でない限り、幻覚を発見するのは難しいということだ。したがって、これらのLLMによって生成された回答の品質を評価する方法が必要であり、それがこの記事で説明することである。
今回は、LLMの応答品質を評価するために使用されるLLM-Evalと呼ばれる方法について説明します。
LLM-Eval とは?
LLM-Evalは、LLM会話の品質評価を単純化・自動化するために考案されたアプローチです。LLM-Evalは、会話の各側面(関連性や文法的な正しさなど)を個別に評価する代わりに、これらの評価を1つの合理的なプロセスにまとめます。LLM-Evalの主な特徴は、1つのプロンプトを使用して、生成された対話応答を複数の側面(適切性、内容、文法、関連性など)から評価できることです。
LLM-Eval 評価指標
ROUGEとBLEUは、より洗練された方法が登場する前に、LLMによって生成された応答の品質を評価するための最も一般的な2つのメトリクスです。簡単に言うと、この2つのメトリクスが何をするものなのかを説明します:
BLEUスコア**は、LLMによって生成されたテキストと参照テキストとの間の[n-gramsの]精度(https://zilliz.com/learn/introduction-to-natural-language-processing-tokens-ngrams-bag-of-words-models)を計算します。n-gramsの "n "は事前に選んだ任意の整数でよい。
ROUGEスコア**は、重複するn-gramと単語列を用いて、LLMが生成したテキストと参照テキストとの類似度を計算する。
これら2つのメトリクスの問題点は、テキストの意味的な意味を捉えることができないことである。ユーザーのクエリに対するLLMの応答のニュアンスや本質を捉える必要があるため、意味的な意味はLLMの性能を評価する上で極めて重要です。さらに、多くの高度な手法は、人間のアノテーションと複数のプロンプトに依存しており、時間がかかり、エラーが発生しやすい。
LLM-Evalの高レベルワークフロー](https://assets.zilliz.com/High_level_workflow_of_LLM_Eval_2508a00777.png)
図1:LLM-Evalの高レベルワークフロー_ ソース..
LLM-Evalは、これらの問題を解決し、LLM自体の助けを借りて、シンプルな評価プロセスを提供することを目的としています。LLM-Evalでは、LLMの応答品質を複数の異なるメトリクスで評価することができます。この論文でLLM-Evalが評価する主なメトリクスは、内容、文法、関連性、適切性です。
コンテンツ**:この評価基準は、提供された情報の正確さ、回答の完全性、示された知識の深さ、アイデアの一貫性と論理的な流れなどの品質を測定します。
文法文法**:文の構造、時制の正しい使用、主語と動詞の間のまとまり、句読点の適切な使用、スペルの一貫性などの質を測定します。
関連性この評価基準では、回答が与えられた文脈やクエリにどれだけ合致しているか、つまり、トピックに沿ったものであるか、クエリで提起された特定のポイントに対処しているか、要求された詳細レベルに合った回答を提供しているかどうかを測定します。
適切性**:この評価基準では、言葉のトーンや形式、文化的感受性、意識など、さまざまな側面から回答の適切さを測定します。
LLM-Evalは、上記の4つのコアメトリクスの他に、データセット固有のメトリクスの評価にも使用できます。例えば、ConvAI2データセットは、回答の関連性とエンゲージメントを評価します。この場合、LLM-Evalのプロンプトを調整して、ConvAI2データセットでこれら2つのメトリクスを評価することができます。次のセクションでは、メトリクスを評価するためのLLM-Evalのプロンプトの詳細を見ていきます。
さて、LLM-Evalを使って評価できるメトリクスがわかったところで、実際にどのように機能するのかを説明しましょう。
LLM-Eval の仕組み
前のセクションで簡単に述べたように、LLM-EvalはLLM自身を使って応答品質を評価します。つまり、LLMが応答品質の評価結果を得るために必要なすべてを含む、定義済みのプロンプトをLLMに提供します。
LLM-Evalは1つのプロンプトを使用して、調査したいメトリクスの最終スコアを求めます。プロンプトは、スキーマ、コンテキスト、人間による参照テキスト、LLMからの応答テキストなど、いくつかの要素から構成される。
スキーマは、タスクと評価基準を定義する自然言語命令です。ここでは、LLMに評価させたいメトリクスを指定できます。さらに、評価スコアの範囲を定義することもできます。LLM-Evalは2つの異なる評価スコアの範囲を使用します:1つは0から5まで、もう1つは0から100までです。以下は、LLM-Evalが4つのメトリクス(適切性、内容、文法、関連性)を評価するために使用するスキーマ・テンプレートです:
人間:出力は
に準拠したJSONインスタンスとしてフォーマットされるべきである。
スキーマに準拠したJSONインスタンスとしてフォーマットされなければならない。
例として、スキーマ {"properties":
{"foo":{"title":"foo"、"description":"a
文字列のリスト", "type": "array":「array", "items":
{"type":"string"}}, "required":["foo"]}}。
オブジェクト{"foo":["bar"、"baz"]}は
スキーマの整形されたインスタンスです。
オブジェクト{"properties":{"foo":[バー"、
"baz"]}}は整形式ではありません。
これが出力スキーマです:
{"properties":"コンテンツ": {"タイトル":"タイトル": {"タイトル":
"コンテンツ", "説明":「コンテンツスコア
0 から 5 の範囲", "type":
「integer"}、"grammar":{"title":"文法"、
"description":「範囲の文法スコア
0 から 5 の範囲", "type":「integer"}, "relevance":
{"title":「関連性", "説明":
「0 から 100 の範囲内の関連性スコア」、
"type":「integer"}, "appropriateness":
{タイトル":"適切さ", "説明":
"0から0までの範囲の適正スコア
5"、"type":「integer"}}, "required":
["内容"、"文法"、"関連性"、
「適切性"]}。
上記のスキーマができたら、他のプロンプトコンポーネント(コンテキスト、リファレンス、レスポンス)を構築することができる。
コンテキスト**:LLMが応答を生成するために使用できる、以前のチャットダイアログを含みます。
参照**:人間によって作成されたコンテキストに対する好ましい応答が含まれています。
レスポンス**:LLMがコンテキストに対して生成した応答を含む。
データセットが人間による参照を含んでいる場合、完全なプロンプトは次のようになる:
{評価スキーマ}
次のようなダイアログレスポンスを獲得する
の連続尺度で採点してください。
{score_min}から{score_max}まで。
コンテキスト{コンテキスト}
リファレンス{参照}。
対話応答:{レスポンス}。
一方、人間による参照がないデータセットの場合、以下のように、完全なプロンプトはコンテキストとLLMからの応答だけで構成される:
{評価スキーマ}
次のようなダイアログレスポンスを獲得する
の連続尺度で採点してください。
{score_min}から{score_max}まで。
コンテキスト{コンテキスト}
ダイアログの応答{レスポンス}。
上記の2つのプロンプトは、LLMの単一の応答のみを考慮します。LLMの応答品質をダイアログ全体で評価したい場合、LLM-Evalは以下のプロンプトを使用します:
{評価スキーマ}
以下のダイアログが生成される
を{score_min}から連続した尺度で評価する。
から{score_max}までの連続尺度で生成される。
ダイアログ{ダイアログ}
上のテンプレートと同じようなプロンプトを作成したら、あとはこのプロンプトを好みのLLM(Llama、GPT、Claude、Mistralなど)に送り込むだけである。するとLLMは、定義されたスキーマに基づいて各メトリックを採点します。
LLM-Evalのデモ
このセクションでは、LLM-Evalを実装して、ユーザクエリに対するLLMの応答品質を評価します。数多くのLLMがありますが、今回はオープンソースで無料で使えるMeta社のLlama 3.1を使用します。Llama 3.1には、8B、70B、405Bの3種類のパラメータがあるが、ここではローカル・マシンにロードできるように8Bのバージョンを使うことにする。
Llama 3.1 8Bをロードするには、ローカル・マシンでLLMを利用するためのツール、Ollamaを使います。インストール方法については Ollamaの最新インストールページを参照してください。
Ollamaをインストールしたら、コマンドひとつで好きなLLMを引っ張ってくることができます。Llama 3.1をプルするには、次のコマンドを使ってください:
ollama pull llama3.1
Llama 3.1 8Bモデルを使う前に、パラメーターを調整する必要がある。
LLM-Evalの実装で重要なのは貪欲なデコードである。これはLLMが常に最も高い確率で次のトークンを選ぶようにパラメータを設定することを意味する。この貪欲なデコード動作を模倣するには、以下のパラメータを調整する必要がある:
温度**:このパラメーターは0から1の間で値の範囲を持ち、LLMが応答を生成する際の創造性を制御する。値が高いほど、LLMはより創造的に応答を生成します。値を0に設定すると、LLMは決定論的な結果を出力するようになります。
Top p:このパラメータは、確率の合計が p より高くなるような、最も高い確率を持つトークンの集合からサンプリングします。ここではこのパラメータを0に設定します。
Top k:このパラメータは最良のk(個)のトークンからサンプリングします。値の範囲は 1 から LLM の語彙に含まれるトークンの総数までです。LLMに最も高い確率でトークンを選んでもらいたいので、このパラメータを1に設定します。
これらのパラメータを希望の値に設定するには、まず Modelfile
を作成しなければならない。以下は Modelfile
の中身である:
FROM llama3.1
# 温度を設定する
パラメータ temperature 0
# トップKを設定
パラメータ top_k 1
# セットトップ p
PARAMETER top_p 0
次に、このModelfile
を使って、Llama3.1のパラメーターを調整する:
ollama create <あなたの選択した名前> -f ./Modelfile
ollama run <お好みのファイル名> を実行する。
Modelfileについてのより詳しい説明は、 このドキュメント を参照してください。
これでプロンプトを作成し、このモデルをメトリクスの評価に使うことができます。前のセクションで提供されたテンプレートをスキーマとして使用し、TopicalChatデータセットの例をデモとして使用する。TopicalChatデータセットは、LLM-Evalの性能を他の評価方法と比較するために使用されるいくつかのベンチマークデータセットの1つです。TopicalChatデータセットはこのウェブサイトからダウンロードできます。
一般に、TopicalChat データセットの1つの例は、文脈、応答、参照、注釈で構成されています。注釈は、LLMの応答の適切さ、内容、文法、関連性について、人間が注釈したスコアを指す。
以下は、適切性、内容、文法、および関連性のスコアと応答を生成するために使用するプロンプトテンプレートです:
インポート ollama
prompt = """出力は以下のようにフォーマットする必要がある
JSONインスタンスとしてフォーマットされなければならない。
スキーマに準拠したJSONインスタンスとしてフォーマットされなければならない。
例として、スキーマ {"properties":
{"foo":{"title":"foo"、"description":"a
文字列のリスト", "type": "array":「array", "items":
{"type":"string"}}, "required":["foo"]}}。
オブジェクト{"foo":["bar"、"baz"]}は
スキーマの整形されたインスタンスです。
オブジェクト{"properties":{"foo":[バー"、
"baz"]}}は整形式ではありません。
これが出力スキーマです:
{"properties":"コンテンツ": {"タイトル":"タイトル": {"タイトル":
"コンテンツ", "説明":「コンテンツスコア
0 から 5 の範囲", "type":
「integer"}、"grammar":{"title":"文法"、
"description":「範囲の文法スコア
0 から 5 の範囲", "type":「integer"}, "relevance":
{"title":「関連性", "説明":
「0 から 5 の範囲内の関連性スコア」、
"type":「integer"}, "appropriateness":
{タイトル":"適切さ", "説明":
"0から0までの範囲の適正スコア
5"、"type":「integer"}}, "required":
["内容"、"文法"、"関連性"、
「適切性"]}。
次のような対話応答を採点する。
の連続尺度で採点する。
0点から5点
コンテキスト「こんにちは!サッカーは好きですか?もちろんです!好きなチームは?私のはニューイングランド・ペイトリオッツ、NFLのラニスターよ!"
参考までに:"私はブロンコスが好きです。ベン・ストラウスとジョー・ノセラの『Indentured』は読んだ?"
対話の応答「ニューイングランド・ペイトリオッツが好きです。彼らはNFLで最高のチームです!""""
stream = ollama.chat(
model='llama3.1'、
messages=[{'role': 'user', 'content': prompt}]、
stream=True、
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
"""
出力する:
"内容":2,
文法4,
「関連性1,
「妥当性3
得点の内訳は以下の通り:
* 内容:2 (トピックに関連した回答だが、あまり新しい情報や興味深い情報を提供していない)
* 文法: 4 (文法とスペルはほぼ正しく、クエスチョンマークの代わりにエクスクラメーションマークを使うなど、小さな問題があるのみ)
* 関連性:1(別のチームや本について話し始めており、トピックからやや外れている。)
* 適切さ:3 (回答の口調は熱心でフレンドリーだが、少し皮肉っぽい。すべての聴衆に完全に適しているわけではない)
"""
次のセクションで、ベンチマーク・データセットでの結果を見てみよう。
ご覧の通り、LLMはスキーマで指定された各メトリクスのスコアを出力します。しかし、上記のデモでは、4ビットに量子化された8Bモデルを使用していることに注意することが重要です。そのため、元のモデルと比べてパフォーマンスが低下し、上記の結果の信頼性が低くなっています。オリジナルのLLM-Evalの実装では、これらのスコアを生成するためにOpenAIのChatGPTやAnthropicのClaudeのようなプロプライエタリでより強力なLLMを使用していました。オリジナルのLLM-Evalのベンチマークデータセットでの結果は次のセクションで見ていきます。
LLM-Eval の結果とパフォーマンス
LLM-Evalの有効性を測定するために、この方法は評価され、以下のような他のいくつかのLLM評価方法と比較されました:
Deep-AM-FM**:BERT](https://zilliz.com/learn/Sentence-Transformers-for-Long-Form-Text)の埋め込みを利用し、Adequacy Metric(AM)とFluency Metric(FM)を計算することで、対話の質を測定する。AMは、生成されたテキストにおいて原文の意味がどの程度保たれているかを測定し、FMは、出力されたテキストがどの程度自然で、滑らかで、文法的に正しいかを測定する。
MME-CRS:MME-CRS:流暢さ、関連性、関与度、具体性、一貫性の5つの評価基準で回答の質を測定する。
BERTScore**:人間の参照と生成された応答における BERT トークン埋め込みをマッチングすることで、対話品質の F1 スコアを測定します。
GPTScore**:GPTモデルを使用して生成された応答を評価します。通常、人間の判断に合わせるために、人間が評価した例で訓練されます。
上記の 4 つの手法に加えて、LLM-Eval の性能は、DSTC10 Team 1、DEB、USR、USL-H、DynaEval、FlowScore、および BLEU や ROUGE スコアのような従来の評価基準とも比較されています。
LLM-Evalは、人間の参照テキストがある場合とない場合の両方で、いくつかのベンチマークデータセットにおいて、上記のメトリクスと比較して非常に競争力のある結果を示しました。以下は、TopicalChat や PersonaChat などのデータセットで、LLM-Eval が他の手法と比較して、適切性、内容、文法、関連性などのメトリクスを評価した結果を示す表です:
LLM-Evalと他の評価手法の4つの評価指標の性能比較](https://assets.zilliz.com/Comparison_of_LLM_Eval_s_performance_with_other_evaluation_methods_on_four_different_metrics_fa0712261c.png)
図2: 4つの異なる評価指標に関するLLM-Evalの性能と他の評価手法との比較_ 出典..
ご覧のように、LLM-Eval の結果は、他の評価手法と比較して、すべてのデータセットにおいて、人間が注釈を付けたスコアと最も高いピアソン相関を示しました。
LLM-Evalでは、これら4つのメトリクスの評価に加えて、データセット固有のメトリクスの評価も可能です。例えば、ConvAI2データセットは応答の関連性とエンゲージメントを評価し、DailyDialogは日常会話の文脈における応答の質を評価し、EmpatheticDialogueは応答の共感度を調査します。以下は、これらのデータセットにおけるLLM-Evalと他の手法との比較です:
いくつかのベンチマークデータセットにおけるLLM-Evalと他の評価手法の性能比較](https://assets.zilliz.com/Comparison_of_LLM_Eval_s_performance_with_other_evaluation_methods_on_several_benchmark_datasets_4a038a501f.png)
図 3: いくつかのベンチマークデータセットにおける LLM-Eval と他の評価手法との性能比較_ 出典..
この表からも、すべてのベンチマークデータセットにおいて、LLM-Eval の性能が他の評価手法よりもスピアマン相関やピアソン相関で優れていることがわかります。
スコアリングレンジを 0~5 に設定しても、0~100 に設定しても、また人間による参照 があるデータセットでもないデータセットでも、LLM-Eval はすべてのデータセットで一貫し て他の手法を上回っています。このことは、LLM-Evalがオープンドメイン対話の評価に高い汎用性を持つことを示している。
異なるLLMを用いたベンチマークデータセットにおけるLLM-Evalの性能](https://assets.zilliz.com/LLM_Eval_s_performance_on_benchmark_datasets_using_different_LL_Ms_b52d5579ed.png)
図 4: 異なる LLM を用いたベンチマークデータセットにおける LLM-Eval の性能_ ソース..
LLM-EvalはどんなLLMでも実装できます。しかし、上の表からわかるように、チャット用に最適化されたLLMを使用した場合、つまりChatGPTが基本GPTモデルよりも性能が良い場合、その性能はすべてのメトリクスで最高となります。さらに、表はClaudeが一般的にChatGPTをわずかに上回っていることも示しており、LLMの選択がLLM-Evalの全体的なパフォーマンスに影響を与えることを示しています。
結論
本稿では、LLMの応答品質を評価する汎用的な手法であるLLM-Evalについて説明した。LLM-Evalの実用性は、LLMの性能を評価する際に人間のアノテーションへの依存を減らす、シングルプロンプト評価手順にある。
LLM-Evalを実行するために任意のLLMを選択することができます。しかし、この記事で示したように、LLMの選択は全体の評価品質に直接影響します。したがって、さまざまなメトリクスにわたって高品質な評価を達成するためには、チャットに最適化された性能の高いLLMを使用するのが最善です。
その他のリソース
LLM-Eval論文:https://arxiv.org/pdf/2305.13711
LLM-Eval GitHub:https://github.com/MiuLab/LLM-Eval
ブログベクターデータベースとは
ブログラガによる評価RAG
ブログ[LLMシステム評価と観測可能性】(https://zilliz.com/blog/path-to-production-llm-system-evaluations-and-observability)
読み続けて

CohereのRerankerを使いこなし、AIのパフォーマンスを向上させる
Cohere の rerank エンドポイントは、検索および推薦システムを強化するためのシンプルかつ強力なソリューションを提供します。その方法をご覧ください!

LoRAの説明LLMを微調整するための低ランク適応
LoRA(Low-Rank Adaptation)は、低ランクの学習可能な重み行列を特定のモデル層に導入することで、LLMを効率的に微調整する手法である。

金魚のように、暗記をするな!ジェネレーティブLLMで暗記を軽減する
金魚の損失技術は、標準的なネクストトークン予測の学習目的を変更することで、LLMの出力に学習データがそのまま再現されるのを防ぐ。