オーケストレーション ワークフロー モデルの評価メトリック
データセットは 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
- こんにちは
- おはようございます
使用される意図は、CLUEmail と Greeting です。
このモデルでは、次のように予測されます。
発話 | 予測された意図 | 実際の意図 |
---|---|---|
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 は意図の数です。 マトリックスを使用して、実際のタグとモデルによって予測されたタグを比較します。 これにより、モデルのパフォーマンスと、発生しているエラーの種類を、全体的に把握できます。
混同行列を使用すると、互いに近すぎて、誤りが発生しやすい (あいまいな) 意図を識別できます。 この場合は、これらの意図をまとめて結合することを検討します。 それができない場合は、モデルで両者を区別できるよう、両方の意図のタグ付けされた例を追加することを検討します。
混同行列からモデル レベルの評価メトリックを計算できます。
- モデルの "真陽性" は、すべての意図の "真陽性" の合計です。
- モデルの "擬陽性" は、すべての意図の "擬陽性" の合計です。
- モデルの "擬陰性" は、すべての意図の "擬陰性" の合計です。