article thumbnail image
Published 2022. 7. 18. 21:39

Carrying Out Error Analysis

인간 레벨까지 되지 못할 때, 수작업으로 문제를 파악하는 error analysis

 

강아지 이미지에 에러가 나는 고양이 분류기, 이 문제를 해결하기 위해 강아지 문제에만 몇 개월 동안 집중해도 될까?

잘못 라벨링된 dev set을 보면 100개 중 5개만이 강아지임을 확인할 수 있었음. 그렇게 되면 강아지 문제를 해결한다고 해도 10% 에러를 5% 해결한 9.5% 밖에 안 됨. --> "ceiling on performance"

그런데 만약에 100개 중에 50개가 강아지 사진이었다? 몇 개월을 강아지 문제에 쏟는다고 해도 가치가 있다고 볼 수 있음. 에러율은 50% 해결되어 5% 로감소할 것임

--> simple counting error anaylsis

 

[Evaluate multiple ideas in parallel]

검토 대상이 되는 dev set 이미지들을 스프레드 시트 형식으로 어떤 문제에 해당하는지 메모

수학적으로 무엇이 문제가 되는지 명백하게 정해지는 것은 아니나 어떤 방향으로 가야 할지는 참고할 수 있음

 

Cleaning Up Incorrectly Labeled Data

[Incorrectly labled examples]

학습데이터의 일부가 잘못 라벨링되어 있다고 해보자

- "mislabeled example" : 예측 결과가 잘못된 경우

- "incorrectly labeld example" : 데이터셋이 잘못 레이블된 경우

 

"training set"에 incorrectly labeld example이 있을 때 어떻게 해야 할까?

에러가 충분히 "random"하다면 굳이 다 고치지 않아도 된다 (데이터셋 크기가 크고 에러 비율이 크지 않은 이상)

반면 ML모델들은 "sysmetic" 에러들에는 robust 하지 않다

 

"dev/test set"에서는?

error analysis 할 때 incorrectly labeld 칼럼을 추가해서 살펴볼 수 있다

그 비율이 모델을 evaluate 하는 데 유의미한 영향을 미친다면 수정할 필요가 있다

 

overall dev set error를 살펴보고, 잘못 라벨링된 경우에 의한 에러와 다른 원인에 의해 라벨링된 에러의 비율을 비교한 후 문제 해결

 

Goal of dev set is to help you select between two classifiers A & B

 

[Correcting incorrect dev/test set examples]

dev/test 셋이 같은 분포를 가지는 것은 매우 중요, training 셋의 분포는 조금 다를 수도 있음

 

 

Build your First System Quickly, then Iterate

새로운 모델을 짓는다고 할 때, 존재하는 다양한 문제들 가운데 어디에 집중해야 하는 것인가? (ex. speech recognition이라고 한다면 시끄러운 배경, 사투리, 마이크와 먼 목소리far-field, 아이의 말, 말더듬기, 등등 여러 문제가 존재)

일단 모델링 빨리 하고, iterate 하라.

 

First, set up dev/test set and metric

--> 타겟을 설정하는 것과 같음

 

Then, build initial system quickly

 

Then, use bias/variance analysis & error analysis to prioritize next steps

 

build your fist system quickly then iterate

 

 

복사했습니다!