評価指標を定義する

生成モデルやアプリケーションを評価する最初のステップは、評価目標を特定し、評価指標を定義することです。このページでは、ユースケースの評価指標の定義に関連したコンセプトの概要について説明します。

概要

生成 AI モデルを使用すると、ニュース記事の要約、顧客からの問い合わせへの回答、コード記述のサポートなど、幅広いタスク向けのアプリケーションを作成できます。Vertex AI で Gen AI Evaluation Service を使用すると、説明可能な指標を使用して任意のモデルを評価できます。

たとえば、記事を要約するアプリケーションを開発しているとします。特定のタスクでのアプリケーションのパフォーマンスを評価する際には、測定する基準とスコア付けに使用する指標を検討しましょう。

  • 基準: 評価に使用する単一または複数の項目(concisenessrelevancecorrectnessappropriate choice of words など)。

  • 指標: 基準と照らし合わせてモデル出力を測定する単一のスコア。

Gen AI Evaluation Service では、主に 2 種類の指標が提供されます。

  • モデルベースの指標: モデルベースの指標では、Google 所有のモデルを判定の基準として使用しています。モデルベースの指標は、ペアワイズまたはポイントワイズで測定できます。

    • ポイントワイズ指標: 判定モデルを使用し、評価基準に基づいて候補モデルの出力を評価します。たとえば、スコアを 0~5 とする場合、0 は回答が基準に適合していないことを意味し、5 は十分に適合していることを意味します。

    • ペアワイズ指標: 判定モデルを使用し、2 つのモデルの回答を比較して、優れているほうを選択します。このタイプの指標は、候補モデルをベースライン モデルと比較する場合に使用されることが多いです。

  • 計算ベースの指標: このタイプの指標は、モデルの出力をグラウンド トゥルースまたは基準と対比する数式を使用して算出されます。よく使用される計算ベースの指標としては、ROUGE や BLEU があります。

計算ベースの指標は、単独で使用することも、モデルベースの指標と組み合わせて使用することもできます。モデルベースの指標と計算ベースの指標のどちらを使用すべきか判断するには、次の表を参照してください。

評価のアプローチ データ 費用と処理速度
モデルベースの指標 判定モデルを使用し、記述的な評価基準に基づいてパフォーマンスを評価 グラウンド トゥルースはなくてもかまわない 費用がやや高く低速
計算ベースの指標 数式を使用してパフォーマンスを評価 通常、グラウンド トゥルースが必要 費用が低く高速

開始するには、データセットを準備する評価を実行するをご覧ください。

モデルベースの指標を定義する

モデルベースの評価では、大規模言語モデル(LLM)を判定モデルとして使用し、候補モデルの出力を評価します。判定モデルは、品質を保証するために人間の評価者によって調整されています。これらはマネージド ツールであり、追加設定なしですぐに使用できます。モデルベースの評価プロセスは、指定する評価指標によって異なります。

モデルベースの評価は、次のプロセスに沿って行われます。

  1. データの準備: 評価データは入力プロンプトの形式で指定します。候補モデルはプロンプトを受け取り、対応する回答を生成します。

  2. 評価: 評価指標と生成された回答が判定モデルに送信されます。判定モデルは、各回答を個別に評価し、行ベースの評価を提示します。

  3. 集計と説明: Gen AI Evaluation Service では、これらの個々の評価を集計して総合スコアを算出します。出力には、各判定に対する Chain-of-Thought の説明も含まれ、選択の根拠が概説されています。

Gen AI Evaluation Service には、Vertex AI SDK を使用してモデルベースの指標を設定するために次のオプションが用意されています。

オプション 説明 最適な用途
既存の例を使用する 事前構築済みの指標プロンプト テンプレートを使用して、すぐに使用を開始できます。 一般的なユースケース、時間の節約
テンプレート インターフェースで指標を定義する 指標の定義をガイド付きでサポートします。テンプレート インターフェースには、構造と提案が表示されます。 サポート付きのカスタマイズ
指標をゼロから定義する 指標の定義を完全に制御できます。 非常に専門性の高いユースケースに最適。より多くの技術的専門知識と時間の投資が必要。

たとえば、流暢で楽しい回答を返す生成 AI アプリケーションを開発したいとします。このアプリケーションでは、テンプレート インターフェースを使用して、評価用の 2 つの基準を定義できます。

  • 流暢さ: 文がスムーズに流れ、ぎこちない表現や無終止文がないようにする。アイデアと文が論理的につながっており、必要に応じて効果的につなぎが使われている。

  • 楽しさ: 迅速で即興的なコミュニケーションや娯楽を提供するために、絵文字、感嘆符、質問を取り入れた短くて面白いテキスト。

これらの 2 つの基準を指標に変換するには、-1~1 の範囲の総合スコア custom_text_quality が必要です。指標は次のように定義できます。

# Define a pointwise metric with two criteria: Fluency and Entertaining.
custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
            "fluency": (
                "Sentences flow smoothly and are easy to read, avoiding awkward"
                " phrasing or run-on sentences. Ideas and sentences connect"
                " logically, using transitions effectively where needed."
            ),
            "entertaining": (
                "Short, amusing text that incorporates emojis, exclamations and"
                " questions to convey quick and spontaneous communication and"
                " diversion."
            ),
        },
        rating_rubric={
            "1": "The response performs well on both criteria.",
            "0": "The response is somewhat aligned with both criteria",
            "-1": "The response falls short on both criteria",
        },
    ),
)

指標プロンプト テンプレートの一覧については、評価の指標プロンプト テンプレートをご覧ください。

ポイントワイズ評価とペアワイズ評価のどちらかを選択する

ポイントワイズ評価とペアワイズ評価のどちらを使用すべきかを判断するには、次の表を参照してください。

定義 使用する状況 サンプル ユースケース
ポイントワイズ評価 1 つのモデルを評価し、基準に基づいてスコアを生成する
  • 評価対象の各モデルについてスコアが必要な場合。
  • 各スコアのルーブリックを定義することが特に難しくない場合。
  • 本番環境でのモデルの動作を把握します。
  • 1 つのモデルの長所と短所を調べます。
  • チューニング時に重視する動作を特定します。
  • モデルのベースライン パフォーマンスを確認します。
ペアワイズ評価 2 つのモデルを対比し、基準に基づいて優れているほうを選択する
  • 2 つのモデルを比較する必要があり、スコアは不要な場合。
  • ポイントワイズでスコアのルーブリックを定義することが難しい場合。たとえば、テキストの品質についてポイントワイズで 1~5 のルーブリックを定義することは難しくても、2 つのモデルを比較して優れているほうを直接出力することはそれほど難しくない場合があります。
  • 本番環境にデプロイするモデルを決定します。
  • モデルタイプを選択します。たとえば、Gemini-Pro と Claude 3 です。
  • さまざまなプロンプトから選択できます。
  • チューニングでベースライン モデルが改善されたかどうかを判断します。

計算ベースの指標

計算ベースの指標は、LLM で生成された結果が、入力と出力のペアのグラウンド トゥルース データセットと一致しているかどうかを比較します。よく使用される指標は、次の各グループに分類できます。

  • 用語集ベースの指標: 数式を使用して、LLM で生成された結果とグラウンド トゥルース(Exact MatchROUGE など)の文字列の類似性を計算します。
  • カウントベースの指標: 特定のグラウンド トゥルース ラベル(F1-scoreAccuracyTool Name Match など)と一致する行または一致しない行の数を集計します。
  • エンベディング ベースの指標: エンベディング空間における LLM で生成された結果とグラウンド トゥルースの距離を計算し、類似性のレベルを反映します。

一般的なテキスト生成

次の指標は、ユーザーにとって回答が有用、安全、効果的であることを保証するモデルの能力を評価する際に役立ちます。

完全一致

exact_match 指標は、モデルの回答が基準と完全に一致するかどうかを計算します。

  • トークンの上限: なし

評価基準

該当なし

指標の入力パラメータ

入力パラメータ 説明
response LLM の回答。
reference 基準用の LLM のゴールデン回答。

出力スコア

説明
0 不一致
1 一致

BLEU

bleu(BiLingual Evaluation Understudy)指標には、ある自然言語から別の自然言語に翻訳された回答の品質を評価するためのアルゴリズムの結果が保持されます。回答の品質は、response パラメータとその reference パラメータの対応関係と見なされます。

  • トークンの上限: なし

評価基準

該当なし

指標の入力パラメータ

入力パラメータ 説明
response LLM の回答。
reference 基準用の LLM のゴールデン回答。

出力スコア

説明
[0,1] の範囲内の浮動小数点数 スコアが高いほど、翻訳の品質が高いことを示します。スコア 1 は、reference との完全一致を表します。

ROUGE

ROUGE 指標は、指定した response パラメータを reference パラメータと比較するために使用します。すべての rouge 指標は F1 スコアを返します。rouge-l-sum はデフォルトで計算されますが、使用する rouge バリアントを指定することができます。

  • トークンの上限: なし

評価基準

該当なし

指標の入力パラメータ

入力パラメータ 説明
response LLM の回答。
reference 基準用の LLM のゴールデン回答。

出力スコア

説明
[0,1] の範囲内の浮動小数点数 スコアが 0 に近いほど、responsereference の類似性が低くなります。スコアが 1 に近いほど、responsereference の類似性が高くなります。

ツールの使用と関数呼び出し

次の指標は、有効なツール(関数)呼び出しを予測するモデルの能力を評価する際に役立ちます。

呼び出しが有効

tool_call_valid 指標は、有効なツール呼び出しを予測するモデルの能力を表します。最初のツール呼び出しのみが検査されます。

  • トークンの上限: なし

評価基準

評価基準 説明
有効性 モデルの出力に有効なツール呼び出しが含まれています。
書式設定 JSON 辞書に name フィールドと arguments フィールドが含まれています。

指標の入力パラメータ

入力パラメータ 説明
prediction 候補モデルの出力。これは、content キーと tool_calls キーを含むシリアル化された JSON 形式の文字列です。content の値は、モデルからのテキスト出力です。tool_calls の値は、ツール呼び出しのリストのシリアル化された JSON 形式の文字列です。以下に例を示します。

{"content": "", "tool_calls": [{"name": "book_tickets", "arguments": {"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date": "2024-03-30","num_tix": "2"}}]}
reference グラウンド トゥルースを基準にした予測。形式は prediction と同じです。

出力スコア

説明
0 無効なツール呼び出し
1 有効なツール呼び出し

名前の一致

tool_name_match 指標は、正しいツール名でツール呼び出しを予測するモデルの能力を表します。最初のツール呼び出しのみが検査されます。

  • トークンの上限: なし

評価基準

評価基準 説明
名前の一致 モデルが予測したツール呼び出しが、基準のツール呼び出しの名前と一致しています。

指標の入力パラメータ

入力パラメータ 説明
prediction 候補モデルの出力。これは、content キーと tool_calls キーを含むシリアル化された JSON 形式の文字列です。content の値は、モデルからのテキスト出力です。tool_call の値は、ツール呼び出しのリストのシリアル化された JSON 形式の文字列です。ここで例を示します。

{"content": "","tool_calls": [{"name": "book_tickets", "arguments": {"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date": "2024-03-30","num_tix": "2"}}]}
reference グラウンド トゥルースを基準にした予測。形式は prediction と同じです。

出力スコア

説明
0 ツール呼び出しの名前が基準と一致していません。
1 ツールの呼び出しの名前が基準と一致しています。

パラメータキーの一致

tool_parameter_key_match 指標は、正しいパラメータ名でツール呼び出しを予測するモデルの能力を表します。

  • トークンの上限: なし

評価基準

評価基準 説明
パラメータの一致率 基準とするツール呼び出しのパラメータ名と一致する予測パラメータの数と、パラメータの合計数との比率。

指標の入力パラメータ

入力パラメータ 説明
prediction 候補モデルの出力。これは、content キーと tool_calls キーを含むシリアル化された JSON 形式の文字列です。content の値は、モデルからのテキスト出力です。tool_call の値は、ツール呼び出しのリストのシリアル化された JSON 形式の文字列です。以下に例を示します。

{"content": "", "tool_calls": [{"name": "book_tickets", "arguments": {"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date": "2024-03-30","num_tix": "2"}}]}
reference グラウンド トゥルースを基準にしたモデルの予測。形式は prediction と同じです。

出力スコア

説明
[0,1] の範囲内の浮動小数点数 1 のスコアが高いほど、reference パラメータの名前と一致するパラメータが多くなります。

パラメータの KV の一致

tool_parameter_kv_match 指標は、正しいパラメータ名とキー値でツール呼び出しを予測するモデルの能力を表します。

  • トークンの上限: なし

評価基準

評価基準 説明
パラメータの一致率 基準とするツール呼び出しのパラメータ名および値の両方に一致する予測パラメータの数と、パラメータの合計数の比率。

指標の入力パラメータ

入力パラメータ 説明
prediction 候補モデルの出力。これは、content キーと tool_calls キーを含むシリアル化された JSON 形式の文字列です。content の値は、モデルからのテキスト出力です。tool_call の値は、ツール呼び出しのリストのシリアル化された JSON 形式の文字列です。ここで例を示します。

{"content": "", "tool_calls": [{"name": "book_tickets", "arguments": {"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date": "2024-03-30","num_tix": "2"}}]}
reference グラウンド トゥルースを基準にした予測。形式は prediction と同じです。

出力スコア

説明
[0,1] の範囲内の浮動小数点数 1 のスコアが高いほど、reference パラメータの名前と値に一致するパラメータが多くなります。

生成 AI の評価サービスでは、Vertex AI SDK for Python を通じて計算ベースの指標を使用することができます。

生成タスクのベースライン評価の品質

生成 AI モデルの出力を評価する場合、その評価プロセスは本質的に主観的であり、評価の品質は特定のタスクと評価基準によって異なる可能性があることに注意してください。この主観性は人間の評価者にも当てはまります。生成 AI モデルの一貫した評価を実現する際の課題の詳細については、Judging LLM-as-a-Judge with MT-Bench and Chatbot ArenaLearning to summarize from human feedback をご覧ください。

次のステップ