다음을 통해 공유


대화형 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입니다. 엔터티는 contactNamemessage입니다.

모델은 다음과 같은 예측을 수행할 수 있습니다.

발화 예측된 의도 실제 의도 예측된 엔터티 실제 엔터티
"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 cynthiacontactName로, dinner last week was splendidmessage
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개 미만인 경우 모델이 해당 의도에 대해 적절하게 학습되지 않아 정확도가 낮아질 수 있습니다. 이 경우 레이블이 지정된 데이터를 학습 세트에 더 추가하는 것이 좋습니다. 엔터티에 학습된 구성 요소가 있는 경우에만 엔터티에 더 많은 레이블이 지정된 데이터를 추가하는 것을 고려해야 합니다. 엔터티가 목록, 미리 빌드된 정규식 구성 요소로만 정의된 경우 이 권장 사항을 적용할 수 없습니다.
  • 모든 의도 또는 엔터티가 테스트 집합에 있음: 테스트 데이터에 의도 또는 엔터티에 대한 레이블이 지정된 인스턴스가 없으면 테스트되지 않은 시나리오로 인해 모델 평가가 덜 포괄적입니다. 모든 것이 테스트되고 있는지 확인하기 위해 모델의 모든 의도 및 엔터티에 대한 테스트 데이터를 보유하는 것이 좋습니다.
  • 의도 또는 엔터티 간의 불명확한 구분: 서로 다른 의도 또는 엔터티에 대한 데이터가 유사한 경우 서로 자주 잘못 분류될 수 있으므로 정확도가 낮아질 수 있습니다. 다음 의도 및 엔터티를 검토하고 유사한 경우 병합을 고려합니다. 그렇지 않은 경우 서로 더 잘 구분할 수 있도록 더 많은 예를 추가합니다. 자세한 지침은 혼동 행렬 탭에서 확인할 수 있습니다. 두 항목이 동일한 목록, 미리 빌드 또는 정규식 구성 요소를 공유하기 때문에 동일한 범위에 대해 지속적으로 예측되는 두 항목이 표시되는 경우 각 항목에 대해 학습된 구성 요소를 추가하고 이를 필수로 지정해야 합니다. 엔터티 구성 요소에 대해 자세히 알아봅니다.