交談語言理解模型的評估計量
資料集分成兩個部分:一組用於定型,而一組用於測試。 定型集是用來定型模型,而測試集則用來在定型之後作為模型的測試,以計算模型效能和評估。 系統不會透過定型程序將測試集導入模型,以確保已針對新資料上測試模型。
成功完成定型之後,就會自動觸發模型評估。 評估流程會使用已定型的模型,來針對測試集中的表達預測使用者定義的意圖和實體,並將其與已提供的標記比較 (這會建立事實的基準)。 結果會傳回,讓您可以檢閱模型的效能。 若要進行評估,交談語言理解會使用下列計量:
精確度:測量模型的精確/正確程度。 這是正確識別的肯定 (確判為真) 和所有識別的肯定之間的比率。 精確度計量會顯示已正確標記的預測類別數目。
Precision = #True_Positive / (#True_Positive + #False_Positive)
召回率:測量模型預測實際肯定類別的能力。 這是預測的確判為真與實際標記項目之間的比率。 召回率計量會顯示有多少預測類別是正確的。
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 分數:F1 分數是精確度和召回率的函式。 當您在精確度和召回率之間尋求平衡時,需要用到此值。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
精確度、重新叫用及 F1 分數的計算方式如下:
- 個別針對每個實體 (實體層級評估)
- 個別針對每個意圖 (意圖層級評估)
- 集體針對模型 (模型層級評估)。
對於實體層級、意圖層級和模型層級的評估而言,精確度、重新叫用和評估的定義都相同。 不過,確判為真、誤判為真和誤判為假的計數,可能都不同。 例如,請考慮下列文字。
範例
- 以「十分感謝您」做出回應。
- 並回覆「是」。
- 請檢查我的電子郵件。
- 傳送電子郵件告訴 Cynthia 上週的晚餐超讚。
- 請傳送電子郵件給 Mike
以下是已使用的意圖:回覆、sendEmail 和 readEmail。 以下是實體:contactName 和訊息。
該模型可能會進行下列預測:
表達 | 預測的意圖 | 實際意圖 | 預測的實體 | 實際實體 |
---|---|---|---|---|
以「十分感謝您」做出回應 | 回覆 | 回覆 | 以 thank you very much 作為 message |
以 thank you very much 作為 message |
並回覆「是」 | sendEmail | 回覆 | -- | 以 yes 作為 message |
請檢查我的電子郵件 | readEmail | readEmail | -- | -- |
傳送電子郵件告訴 Cynthia 上週的晚餐超讚 | 回覆 | sendEmail | 以 dinner last week was splendid 作為 message |
以 cynthia 作為 contactName ,以 dinner last week was splendid 作為 message |
請傳送電子郵件給 Mike | sendEmail | sendEmail | 以 mike 作為 message |
以 mike 作為 contactName |
回覆意圖的意圖層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 1 | 表達 1 已正確預測為回覆。 |
誤判 | 1 | 表達 4 錯誤地預測為回覆。 |
誤否定 | 1 | 表達 2 錯誤地預測為 sendEmail。 |
精確度 = #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
sendEmail 意圖的意圖層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 1 | 表達 5 已正確預測為 sendEmail |
誤判 | 1 | 表達 2 錯誤地預測為 sendEmail。 |
誤否定 | 1 | 表達 4 錯誤地預測為回覆。 |
精確度 = #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
readEmail 意圖的意圖層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 1 | 表達 3 已正確預測為 readEmail。 |
誤判 | 0 | -- |
誤否定 | 0 | -- |
精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1
contactName 實體的實體層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 1 | 在表達 4 中,cynthia 正確預測為 contactName |
誤判 | 0 | -- |
誤否定 | 1 | 在表達 5 中,mike 錯誤地預測為 message |
精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67
訊息實體的實體層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 2 | 在表達 1 中,thank you very much 正確預測為 message ,且在表達 4 中,dinner last week was splendid 正確預測為 message |
誤判 | 1 | 在表達 5 中,mike 錯誤地預測為 message |
誤否定 | 1 | 在表達 2 中, yes 未預測為 message |
精確度 = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67
召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
集體模型的模型層級評估
答案 | Count | 說明 |
---|---|---|
真肯定 | 6 | 所有意圖和實體的 TP 總和 |
誤判 | 3 | 所有意圖和實體的 FP 總和 |
誤否定 | 4 | 所有意圖和實體的 FN 總和 |
精確度 = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67
召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63
混淆矩陣
混淆矩陣是用於模型效能評估的 N x N 矩陣,其中 N 是實體或意圖的數目。 矩陣會比較預期的標籤與模型所預測的標籤。 這可讓您全面了解模型的表現,以及所犯的錯誤種類。
您可以使用混淆矩陣來識別彼此太接近,且通常會弄錯 (模稜兩可) 的意圖或實體。 在此情況下,請考慮將這些意圖或實體合併在一起。 如果無法這麼做,請考慮針對兩個意圖或實體,新增更多有標記的範例,以協助模型區分兩者。
下圖中反白顯示的對角線是正確預測的實體,其中預測的標記與實際標記相同。
您可以從混淆矩陣計算意圖層級或實體層級,以及模型層級的評估計量:
- 對角線中的值是每個意圖或實體的「確判為真」值。
- 意圖或實體資料列中,值的加總 (不包括對角線) 是模型的「誤判為真」。
- 意圖或實體資料行中,值的加總 (不包括對角線) 是模型的「誤判為假」。
類似地,
- 模型的「確判為真」是所有意圖或實體的「確判為真」加總。
- 模型的「誤判為真」是所有意圖或實體的「誤判為真」加總。
- 模型的「誤判為假」是所有意圖或實體的「誤判為假」加總。
指引
定型模型之後,您會看到有關如何改善模型的一些指引和建議。 建議您建立涵蓋指引一節中每個點的模型。
定型集有足夠的資料:當意圖或實體在定型資料中具有少於 15 個標記的實例時,可能會導致精確度降低,因為模型未充分定型該意圖。 在此情況下,請考慮在定型集中新增更多已標記的資料。 如果您的實體具有已學習的元件,您就應該考慮將更多標籤的資料新增至實體。 如果您的實體只由 list、prebuilt 和 RegEx 元件定義,則此建議不適用。
所有意圖或實體都存在於測試集中:當測試資料缺少意圖或實體的標記實例時,模型評估會因為未測試的案例而較不全面。 請考慮針對模型中的每個意圖和實體設定測試資料,以確保所有專案都會經過測試。
意圖或實體之間不清楚的差異:當不同意圖或實體的資料類似時,可能會導致較低的精確度,因為它們可能經常被誤分類為彼此。 檢閱下列意圖和實體,並考慮將它們合併。 否則,請新增更多範例,進一步加以區分。 您可以查看 [混淆矩陣] 索引標籤以取得更多指引。 如果您看到兩個實體持續預測相同的範圍,因為它們共用相同的清單、預建或 Regex 元件,則請務必為每個實體新增 學習 的元件,並使其 成為必要專案。 深入瞭解 實體元件。
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應