交談語言理解模型的評估計量
資料集分成兩個部分:一組用於訓練,而一組用於測試。 定型集是用來定型模型,而測試集則用來在定型之後作為模型的測試,以計算模型效能和評估。 系統不會透過訓練程序將測試集導入模型,以確保已針對新資料上測試模型。
成功完成定型之後,就會自動觸發模型評估。 評估流程會使用已訓練的模型,來針對測試集中的表達預測使用者定義的意圖和實體。 然後,流程會將其與已提供的標記比較以建立事實的基準。 系統會傳回結果,讓您可以檢閱模型的效能。 若要進行評估,交談語言理解會使用下列計量:
精確度:測量模型的精確或正確程度。 這是正確識別到的肯定 (確判為真) 與所有識別到的肯定之間的比率。 精確度計量會顯示已正確標示的預測類別數目。
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。
所使用的意圖為 Reply
、sendEmail
和 readEmail
。 實體是 contactName
和 message
。
該模型可能會進行下列預測:
表達 | 預測的意圖 | 實際意圖 | 預測的實體 | 實際實體 |
---|---|---|---|---|
以「十分感謝您」做出回應 | 回覆 | 回覆 | 以 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 |
回覆意圖的意圖層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 1 | 表達 1 已正確預測為 Reply 。 |
誤判為真 | 1 | 表達 4 錯誤地預測為 Reply 。 |
誤判為假 | 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 意圖的意圖層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 1 | 表達 5 已正確預測為 sendEmail 。 |
誤判為真 | 1 | 表達 2 錯誤地預測為 sendEmail 。 |
誤判為假 | 1 | 表達 4 錯誤地預測為 Reply 。 |
有效位數 = #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 意圖的意圖層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 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 實體的實體層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 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
訊息實體的實體層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 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
集體模型的模型層級評估
機碼 | 計數 | 說明 |
---|---|---|
確判為真 | 6 | 所有意圖和實體的確判為真加總。 |
誤判為真 | 3 | 所有意圖和實體的誤判為真加總。 |
誤判為假 | 4 | 所有意圖和實體的誤判為假加總。 |
有效位數 = #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 個時,可能會導致正確性降低,因為未針對該意圖對模型進行適當的訓練。 在此情況下,請考慮在定型集中新增更多已標記的資料。 如果實體具有已學習的元件,您就應該考慮將更多已標記的資料新增至實體。 如果實體只由清單、預建和規則運算式元件定義,則此建議不適用。
- 所有意圖和實體都存在於測試集中:當測試資料缺少意圖或實體的標記執行個體時,模型的評估可能會因為未測試的情節而較不全面。 請考慮針對模型中的每個意圖和實體提供測試資料,以確保所有項目都經過測試。
- 意圖或實體之間不清楚的差異:當不同意圖或實體的資料相似時,可能會導致較低的正確性,因為人們可能經常誤判兩者。 檢閱下列意圖和實體,並考慮若其相似時加以合併。 否則,請新增更多範例,進一步加以區分。 您可以查看 [混淆矩陣] 索引標籤以取得更多指引。 如果您發現兩個實體因共用相同的清單、預建或 規則運算式元件,而持續被預測為相同的範圍,請務必為每個實體新增已學習元件,並將其設為必要項目。 深入了解實體元件。