본문 바로가기

DeepLearning Specialization(Andrew Ng)/Structuring Machine Learning Projects

[코세라] [Week 2] 1. Error Analysis

728x90
Error Analysis
1. Carrying out error analysis
2. Cleaning up incorrectly labeled data
3. Build up your first system and then iterate

1. Carrying out error analysis

 

 - 오류분석은 수동으로 dev set에서 모델이 잘못예측한 example 들을 뽑아(about 100개) case 별로 나누는 것이다. 예를 들어 어떤 모델의 dev set에서의 accuracy가 90%(error가 10%)일 때, 강아지를 고양이로 잘못 예측한 경우가 100개 중 5개에 지나지 않는다면 강아지를 고양이로 잘못 예측한 경우를 시정하더라도 error를 9.5%로 밖에 낮추지 못한다.

 

- 위와 같이 cat detection이라는 알고리즘을 향상시키기 위한 case는 여러개가 있을 수 있다. 앞서 언급한 강이지를 고양이로 잘못 예측한 경우는 한가지 예시일 뿐.

 

- 오류분석은 위와 같이 표를 만들고, 어떤 요인이 error 에 큰 영향을 끼쳤는지 파악하여 우선순위를 알아내는 것이 목표이다. 

 

 


2. Cleaning up incorrectly labeled data

 

1) Mislabeld data & Incorrectly labeled data

 

Mislabeled data 는 y_hat이 y 값과 다르게 산출되는 경우이고

Incorrectly labeled data 는 애초에 라벨링(y)이 잘못된 경우이다.

 

 딥러닝은 랜덤한 Incorrectly labeled data에 대해서 꽤 잘 대처하는 편이다. 즉, 라벨링을 하는 사람이 단순 실수로 잘못 라벨링하는 등 랜덤하게 되었다면 그 비율이 크지 않은 선에서 모델의 성능이 크게 저하되지는 않는다. 물론 수정해서 나쁠 건 없다. 하지만, 랜덤하지 않은 systemic error에는 약하다. 예를 들어 흰 강아지를 고양이로 쭉 잘못 라벨링한 것은 모델의 성능에 크게 영향을 줄 수 있다.

 

2) Error analysis in dev set

 

마찬가지로 dev set에서 잘못 예측된거 100개 뽑아서 비율을 측정해본다. 비율이 높다면 수정하는 것이 바람직.

 

 

 주의 사항은 위와 같다.

 

- dev와 test가 같은 분포에서 올 수 있도록 incorrect data를 수정할거면 dev/test 모두에게 적용이 되어야 한다.

- 알고리즘이 틀리게 예측한 example 뿐만아니라, 맞게 예측한 example 중에서도 incorrect data가 있을 수 있다. 즉, 강아지가 고양이로 label되어있는데 모델이 고양이로 예측한 경우. 따라서 틀리게 예측한 부분과 맞게 예측한 부분 모두에서 수정이 이루어져야 평가가 골고루 이루어질 수 있음.

- Train은 dev/test에 비해 data 수가 압도적으로 많으므로 train set을 수정하지 않을 수도 있다. 이럴 경우 train과 dev/test 가 약간 다른 분포에서 올 가능성이 있는데 이는 상대적으로 큰 문제는 아님.

 


3. Build your first system quickly, then iterate

완벽한 모델을 처음부터 만들려하지 말고, 일단 모델은 만들고 수정해가라

 

 

비판과 질문은 언제나 환영입니다. 많이 꾸짖어주세요.

728x90