Share via


オーケストレーション ワークフロー モデルの評価メトリック

データセットは 2 つに分割されています (トレーニング用セットとテスト用セット)。 トレーニング セットはモデルのトレーニングに使用され、テスト セットはトレーニング後のモデルのテストとして使用され、モデルのパフォーマンスと評価が計算されます。 テスト セットは、トレーニング プロセスを通じてモデルに導入されることはなく、新しいデータでモデルがテストされることを確認します。

モデルの評価は、トレーニングが正常に完了した後に自動的にトリガーされます。 評価プロセスでは、トレーニング済みモデルを使って、テスト セット内の発話でユーザー定義の意図を予測することから始まり、指定されたタグ (真実のベースラインを確立するもの) との比較を行います。 その結果が返されるので、モデルのパフォーマンスを確認することができます。 評価のために、オーケストレーション ワークフローでは次のメトリックを使用します。

  • 精度: モデルの精密さと正確さを測定します。 これは、正しく識別された陽性 (真陽性) と識別されたすべての陽性との比率です。 精度メトリックによって、予測クラスのうち、正しくラベル付けされている数が明らかになります。

    Precision = #True_Positive / (#True_Positive + #False_Positive)

  • リコール: 実際の陽性クラスを予測するモデルの能力を測定します。 これは、予測された真陽性と実際にタグ付けされたものとの比率です。 リコール メトリックによって、予測クラスのうち、正しいものの数が明らかになります。

    Recall = #True_Positive / (#True_Positive + #False_Negatives)

  • F1 スコア: F1 スコアは、精度とリコールの関数です。 精度とリコールのバランスを取るときに必要です。

    F1 Score = 2 * Precision * Recall / (Precision + Recall)

精度、リコール、F1 スコアは、次のように計算されます。

  • 意図ごとに個別 (意図レベルの評価)
  • モデル全体 (モデル レベルの評価)。

精度、リコール、評価の定義は、意図レベルとモデルレベルのどちらの評価でも同じです。 ただし、"真陽性"、"擬陽性"、"擬陰性" の数は異なる場合があります。 たとえば、次のようなテキストがあるとします。

  • Make a response with thank you very much
  • Call my friend
  • こんにちは
  • おはようございます

使用される意図は、CLUEmailGreeting です。

このモデルでは、次のように予測されます。

発話 予測された意図 実際の意図
Make a response with thank you very much CLUEmail CLUEmail
Call my friend Greeting CLUEmail
こんにちは CLUEmail Greeting
Goodmorning Greeting Greeting

CLUEmail 意図についての意図レベルの評価

Key Count 説明
真陽性 1 発話 1 は、CLUEmail として正しく予測されました。
偽陽性 1 発話 3 は、CLUEmail として誤って予測されました。
偽陰性 1 発話 2 は、Greeting として誤って予測されました。

精度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

リコール = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Greeting 意図についての意図レベルの評価

Key Count 説明
真陽性 1 発話 4 は、Greeting として正しく予測されました。
偽陽性 1 発話 2 は、Greeting として誤って予測されました。
偽陰性 1 発話 3 は、CLUEmail として誤って予測されました。

精度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

リコール = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

集合モデルのモデル レベルの評価

Key Count 説明
真陽性 2 すべての意図の TP の合計
偽陽性 2 すべての意図の FP の合計
偽陰性 2 すべての意図の FN の合計

精度 = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 2) = 0.5

リコール = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 2) = 0.5

F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

混同行列

混同行列は、モデルのパフォーマンスの評価に使用される N x N 行列であり、N は意図の数です。 マトリックスを使用して、実際のタグとモデルによって予測されたタグを比較します。 これにより、モデルのパフォーマンスと、発生しているエラーの種類を、全体的に把握できます。

混同行列を使用すると、互いに近すぎて、誤りが発生しやすい (あいまいな) 意図を識別できます。 この場合は、これらの意図をまとめて結合することを検討します。 それができない場合は、モデルで両者を区別できるよう、両方の意図のタグ付けされた例を追加することを検討します。

混同行列からモデル レベルの評価メトリックを計算できます。

  • モデルの "真陽性" は、すべての意図の "真陽性" の合計です。
  • モデルの "擬陽性" は、すべての意図の "擬陽性" の合計です。
  • モデルの "擬陰性" は、すべての意図の "擬陰性" の合計です。

次のステップ

Language Studio でモデルをトレーニングする