대화형 Language Understanding 모델에 대한 평가 메트릭
데이터 세트는 학습용 세트와 테스트용 세트의 두 부분으로 나뉩니다. 학습 집합은 모델을 학습시키는 데 사용되고 테스트 집합은 모델 성능 및 평가를 계산하기 위해 학습 후 모델을 테스트하는 데 사용됩니다. 테스트 집합은 학습 프로세스를 통해 모델에 도입되지 않으므로 모델이 새 데이터에 대해 테스트되었는지 확인해야 합니다.
학습이 성공적으로 완료되면 모델 평가가 자동으로 트리거됩니다. 평가 프로세스는 학습된 모델을 사용하여 테스트 집합의 발화에 대한 사용자 정의 의도 및 엔터티를 예측하는 것으로 시작합니다. 그런 다음 프로세스는 제공된 태그와 비교하여 신뢰할 수 있는 기준을 설정합니다. 모델 성능을 검토할 수 있도록 결과가 반환됩니다. 평가를 위해 대화형 Language Understanding은 다음 메트릭을 사용합니다.
정밀도: 모델이 얼마나 정밀하고 정확한지를 측정합니다. 올바르게 식별된 긍정(진양성)과 식별된 모든 긍정 간의 비율입니다. 정밀도 메트릭은 예측된 클래스 중 얼마나 많은 레이블이 올바르게 지정되었는지 보여 줍니다.
Precision = #True_Positive / (#True_Positive + #False_Positive)
재현율: 실제 양성 클래스를 예측하는 모델의 능력을 측정합니다. 예측된 진양성과 태그된 것 간의 비율입니다. 재현율 메트릭은 예측된 클래스 중 얼마나 많은 것이 올바른지 보여 줍니다.
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 점수: F1 점수는 정밀도와 재현율의 함수입니다. 정밀도와 재현율 사이의 균형을 추구할 때 필요합니다.
F1 Score = 2 * Precision * Recall / (Precision + Recall)
정밀도, 재현율 및 F1 점수는 다음과 같이 계산됩니다.
- 각 엔터티를 개별적으로(엔터티 수준 평가).
- 각 의도를 개별적으로(의도 수준 평가).
- 전체 모델에 대해(모델 수준 평가)
정밀도, 재현율 및 평가의 정의는 엔터티 수준, 의도 수준 및 모델 수준 평가에 대해 동일합니다. 그러나 진양성, 가양성 및 가음성의 개수는 다를 수 있습니다. 예를 들어 다음 텍스트를 고려합니다.
예시
- "thank you very much"로 응답합니다.
- "yes"로 응답합니다.
- 내 메일을 확인하세요.
- 지난 주 저녁 식사가 매우 훌륭했다는 메일을 cynthia에게 보냅니다.
- Mike에게 전자 메일을 보냅니다.
사용되는 의도는 Reply
, sendEmail
, readEmail
입니다. 엔터티는 contactName
및 message
입니다.
모델은 다음과 같은 예측을 수행할 수 있습니다.
발화 | 예측된 의도 | 실제 의도 | 예측된 엔터티 | 실제 엔터티 |
---|---|---|---|---|
"thank you very much"로 응답합니다. | 회신 | 회신 | thank you very much as message |
thank you very much as message |
"yes"로 응답합니다. | sendEmail | 회신 | -- | yes as message |
내 메일을 확인하세요. | readEmail | readEmail | -- | -- |
지난 주 저녁 식사가 매우 훌륭했다는 메일을 cynthia에게 보냅니다. | 회신 | sendEmail | dinner last week was splendid as message |
cynthia 를 contactName 로, dinner last week was splendid 를 message 로 |
Mike에게 전자 메일 보내기 | sendEmail | sendEmail | mike as message |
mike as contactName |
Reply 의도에 대해 의도 수준 평가
키 | Count | 설명 |
---|---|---|
진양성 | 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 의도에 대한 의도 수준 평가
키 | Count | 설명 |
---|---|---|
진양성 | 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 의도에 대한 의도 수준 평가
키 | 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 | cynthia 는 발화 4에서 contactName 으로 올바르게 예측되었습니다. |
거짓 긍정 | 0 | -- |
가음성 | 1 | mike 는 발화 5에서 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
message 엔터티에 대한 엔터티 수준 평가
키 | Count | 설명 |
---|---|---|
진양성 | 2 | thank you very much 는 발화 1에서 message 로 올바르게 예측되었으며 dinner last week was splendid 는 발화 4에서 message 로 올바르게 예측되었습니다. |
거짓 긍정 | 1 | mike 는 발화 5에서 message 로 잘못 예측되었습니다. |
가음성 | 1 | yes 는 발화 2에서 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 | 모든 의도 및 엔터티에 대한 진양성의 합계입니다. |
거짓 긍정 | 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개 미만인 경우 모델이 해당 의도에 대해 적절하게 학습되지 않아 정확도가 낮아질 수 있습니다. 이 경우 레이블이 지정된 데이터를 학습 세트에 더 추가하는 것이 좋습니다. 엔터티에 학습된 구성 요소가 있는 경우에만 엔터티에 더 많은 레이블이 지정된 데이터를 추가하는 것을 고려해야 합니다. 엔터티가 목록, 미리 빌드된 정규식 구성 요소로만 정의된 경우 이 권장 사항을 적용할 수 없습니다.
- 모든 의도 또는 엔터티가 테스트 집합에 있음: 테스트 데이터에 의도 또는 엔터티에 대한 레이블이 지정된 인스턴스가 없으면 테스트되지 않은 시나리오로 인해 모델 평가가 덜 포괄적입니다. 모든 것이 테스트되고 있는지 확인하기 위해 모델의 모든 의도 및 엔터티에 대한 테스트 데이터를 보유하는 것이 좋습니다.
- 의도 또는 엔터티 간의 불명확한 구분: 서로 다른 의도 또는 엔터티에 대한 데이터가 유사한 경우 서로 자주 잘못 분류될 수 있으므로 정확도가 낮아질 수 있습니다. 다음 의도 및 엔터티를 검토하고 유사한 경우 병합을 고려합니다. 그렇지 않은 경우 서로 더 잘 구분할 수 있도록 더 많은 예를 추가합니다. 자세한 지침은 혼동 행렬 탭에서 확인할 수 있습니다. 두 항목이 동일한 목록, 미리 빌드 또는 정규식 구성 요소를 공유하기 때문에 동일한 범위에 대해 지속적으로 예측되는 두 항목이 표시되는 경우 각 항목에 대해 학습된 구성 요소를 추가하고 이를 필수로 지정해야 합니다. 엔터티 구성 요소에 대해 자세히 알아봅니다.