Error analysis & Performace auditing
Error analysis Example
새로운 Model 을 개발할 때, 처음부터 Learning algorithm이 완벽하게 동작할거라는 기대는 하지않으며 실제로도 그렇지 않을것이다.
그렇기에 Machine Learning 개발 과정의 핵심은 Error anaylsis라고 해도 과언이 아니다.
Model의 Prediction 결과에 따른 Error analysis 방법 중 한가지는 잘못 labeled 된 결과에 대해서 tag를 달아주는 것이다. (해당내용)
Model을 deploy 하는것이 반복적 작업인것처럼 Error anaylsis도 반복해서 수행하면 어떤 부분을 얼마나 발전시켜야 할지 Insight를 얻을 수 있다.
Prioritizing what to work on
Error anaylsis를 하며 가장 개선이 필요한 tags를 고를때는 다음과 같은 아이디어를 참고할 수 있다.
- 얼마나 많은 개선여부가 남아있는지
- 얼마나 해당 카테고리가 등장하는지
- 얼마나 해당 카테고리의 정확도 향상이 쉬운지
- 얼마나 그 카테고리의 정확도 향상이 중요한지
Human level performance 와의 Gap을 본다면 Car Noise를 개선할 여지가 더많이 남아있고 성능 향상 가능성이 높다.
하지만 해당 Type의 data가 전체에서 차지하는 분량까지 고려해봤을 때, 4%의 개선은 결과적으로 0.16%의 개선이 되므로 People Noise를 2%개선하여 0.6%의 개선을 기대하는 것이 더 효과적이라고 생각할 수 있다.
특정 카테고리에 대한 성능을 개선하는 방법은 다음과 같이 생각할 수 있다.
- 더 많은 데이터 모으기
- Data augmentation 시도해보기.
- Label accuracy / Data quality 올리기
Deep learning의 특성 상 더 많은 Data가 있을수록 더 높은 정확성을 기대할 수 있다. 하지만 Data collection은 매우 시간적 비용이 많이 드는 일이다.
따라서 이런 Error analysis를 반복적으로 수행함으로서 어떤 Data가 필요한지 정확히 알고, 그 type에 집중하여 Data를 모을 수 있을것이다.
Skewed datasets
Skewed dataset는 postivie와 negative의 구성이 50-50에 가깝지 않은 데이터를 말한다.
생산시스템에서 99.7%가 정상품이고 결함품의 비율을 0.3%인경우, 의료정보에서 99%의 환자는 특정 질병이 없고 1%만있을경우 등을 예로들 수 있다.
이런 경우에서 평소에 쓰던 accuracy는 의미있는 metric이 아닐 수 있다. 위와 같은 예에서 그냥 0을 프린트하는 함수도 높은 정확도를 얻을 수 있기 때문이다. 대신 우리는 Confusion Matrix를 활용할수있다.
True negative/positive는 실제label과 예측이 같은경우, False negative/positive는 실제와 예측이 반대인 경우다.
Confusion Matrix를 이용하면 Precision과 Recall이라는 수치를 구할 수 있다.
Precision = TP/(TP+FP) 의 값을 가진다. 위의 예에서는 68/77 = 0.883 -> 88.3%이다.
Recall = TP/(TP+FN) 의 값을 가진다. 위의 예에서는 79.1%이다.
Precision과 Recall의 수치를 활용할 경우 Skewed Dataset에서 print(0)이 높은 정확도를 얻는것을 방지할 수 있다.
print(0)인 경우에 Confusion Matrix를 작성할 경우 TN=914, FN=86, FP와TP는 0일것이다. 따라서 Precision과 Recall 모두 0이된다.
그럼 Precision과 Recall값이 다른 두 모델은 어떻게 비교할 수 있을까?
두가지 수치를 모두 고려하는 F1 score 라는것을 이용해 비교할 수 있다. F1 score는 precision과 recall의 Harmonic mean을 이용한 수치이다.
Harmonic mean을 사용한 F1 score는 두 수치 모두를 고려하여 평균을 내지만 둘 중 더 낮은 수치에 더 강한 영향을 받는다.
위의 두 모델에 대해서 F1 score를 계산해 보면 Model1은 83.4%가나오고 Model2는 매우 낮은 Recall 값을 가지고 있기 때문에 13.6%라는 결과가 나오게 된다.
F1 score를 사용하면, 중요한 요소를 많이 놓치고 있지만 그 비중이 적어 무시되고 있는 data type을 알아내어 올바른 방향으로 모델의 개선을 진행할 수 있을것이다.
Performance auditing
개발한 Model이 정확도, F1 score, 적절한 metric들에 대해서 잘 작동한다면 Production 전에 확인할 수 있는 한가지 요소가 있다.
모델을 튜닝하고, 학습시키고, 에러분석을 하는 반복적인 과정을 마친 뒤, Deploy 하기 전에 마지막 한번으로 Audit performance을 하는것은 많은 도움이 된다.
Audit Framework의 과정은 다음과 같다.
-
System이 잘못된 가능성을 Brainstorming 해보기
- Performance of subsets of data (ethnicity, gender)
- How common are certain errors(FP, FN)
- Performance on rare classes
- 위에서 생각한 Issue들에 대해 평가할 수 있는 적절한 Metric들을 설립하기(on slices of data)
-
Get business/product owner buy-in.
- Service의 구매자/사용자 를 기준으로 요구사항 등을 잘 고려해야한다.
이와 같은 Audit Performance 과정을 거치면, 추후에 발생할 수 있는 여러가지 문제들을 Deploy 전에 미리 발견함으로서 시간과 비용을 아낄 수 있을 것이다.
연관글
Brundage, M., Avin, S., Wang, J., Belfield, H., Krueger, G., Hadfield, G., … Anderljung, M. (n.d.). Toward trustworthy AI development: Mechanisms for supporting verifiable claims∗. Retrieved May 7, 2021 http://arxiv.org/abs/2004.07213v2
Nakkiran, P., Kaplun, G., Bansal, Y., Yang, T., Barak, B., & Sutskever, I. (2019). Deep double descent: Where bigger models and more data hurt. Retrieved from http://arxiv.org/abs/1912.02292