16. 잘못 레이블된 개발/테스트 데이터셋 처리
오류 분석 과정에서 개발 데이터셋의 일부 데이터가 잘못된 레이블을 갖고 있음을 파악했습니다. 여기서 레이블이 잘못되었다고 것은 알고리즘이 데이터를 사용하기 전에 발생한 문제입니다. 즉 사람이 레이블을 설정할 때 레이블을 잘못 설정한 것을 의미합니다. 예를 들어서, 한 데이터(Example)가 (x, y)로 표현됩니다. 이 데이터의 레이블 y가 잘못된 값을 갖고 있다고 가정해 보겠습니다. 이 상황에서 고양이를 포함하지 않는 일부 사진이 고양이를 포함하는 사진으로 레이블될 수 있습니다. 또한 반대의 경우가 될 수도 있습니다. 틀린 레이블을 갖은 이미지가 많은 것으로 예상되면, 레이블이 잘못된 사례 데이터의 비율을 추적하는 오류 범주를 추가합니다.
이미지 | 개 | 큰 고양이 | 흐린 사진 | 잘못된 레이블 | 주석 |
---|---|---|---|---|---|
… | … | … | … | … | … |
98 | v | 배경의 고양이를 놓친 사진 | |||
99 | v | ||||
100 | v | 고양이 그림, 실제 고양이가 아님 | |||
전체 중 비율 | 8% | 43% | 61% | 6% |
당신 dev에 레이블 집합을 수정해야 합니까? 개발자 세트의 목표는 알고리즘 A 또는 B가 더 나은지 여부를 알 수 있도록 알고리즘을 신속하게 평가할 수 있도록하는 것입니다. dev 세트의 일부가 잘못 표시되면 이러한 판단을 내리는 데 방해가 됩니다. 잘못 표시된 dev 세트 레이블을 수정하는 데는 시간을 할애할 가치가 있습니다.
이렇게 잘못된 개발 데이터셋의 레이블을 수정해야 할까요? 기억할 것은 개발 데이터셋의 목적은 알고리즘 A 또는 B 중에서 어떤 것이 더 좋은지를 알 수 있도록 알고리즘을 신속하게 평가하는 것 이라는 겁니다. 개발 데이터셋의 일부 이미지 레이블이 잘못 설정되어 있다면, 알고리즘을 평가하는 데 문제가 될 수 있습니다. 따라서 개발 데이터셋의 잘못된 레이블을 바르게 수정해야 합니다.
분류기 성능이 다음과 같다고 가정합니다.
- 개발 데이터셋에서 전체 정확도………………. 90% (10% 전체 오류)
- 잘못 레이블 된 사례로 발생한 오류…………….. 0.6% (개발 데이터셋 오류의 6%)
- 다른 원인의 오류……………………….. 9.4% (개발 데이터셋 오류의 94%)
위 상황에서 잘못 레이블 된 데이터 때문에 발생한 부정확는 0.6%이고 그외 이유로 발생한 오류 9.4% 입니다. 두 수치를 비교해 볼 때, 잘못된 레이블로 발생한 오류는 그렇게 중요하다고 볼 수 있습니다. 개발 데이터셋의 잘못 레이블 된 이미지를 수작업으로 정정하는 것이 문제가 되지는 않을 것입니다. 그러나 그렇게 중요한 일도 아닐 것입니다. 시스템 전체 오류 10%와 9.4%는 사실 큰 차이가 없는 것으로 느껴질 것입니다. 1
고양이 분류기가 성능이 개선되었고 다음과 같은 결과를 보인다고 가정해 보겠습니다.
- 개발 데이터셋에서 전체 정확도……………….. 98.0% (2.0% 전체 오류)
- 잘못 레이블된 사례로 발생한 오류……. 0.6%. (개발 데이터셋 오류의 30%)
- 다른 원인의 오류………………… 1.4% (개발 데이터셋 오류의 70%)
개발 데이터셋 이미지 중에서 잘못된 레이블 때문에 발생한 오류가 전체 오류의 30%입니다. 이 정도 오류는 전체 정확도에 영향을 미치는 중요한 오류라고 볼 수 있습니다. 이 정도면 개발 데이터셋에 레이블 품질을 개선하는 것이 좋습니다. 잘못 레이블된 데이터를 추적하는 것은 현재 분류기의 에러가 1.4%와 2.0% 중에서 어느 쪽에 더 가까운지를 알아낼 때 필요합니다. 전체 오류율 1.4%와 2.0%에서 0.6%가 차지하는 비율은 상당히 큰 의미있는 수치입니다.2
프로젝트를 초기에 일부 잘못 레이블된 개발/테스트 데이터셋을 묵인하는 것이 일반적입니다. 하지만 시스템 성능이 개선됨에 따라 잘못 레이블된 데이터 때문에 발생하는 에러율의 비율이 전체 에러에서 차지하는 비율이 점차 커지게 됩니다. 이런 상황이 계속됨에 따라서 잘못된 레이블 관련 오류를 개선해야 합니다.
15장에서 알고리즘 성능 향상을 통해서 강아지, 큰 고양이와 흐린 사진과 같은 에러 범주를 개선하는 방법에 대하여 설명하였습니다. 16장에서는 잘못 레이블된 데이터의 레이블을 개선하는 작업에 대하여 알아보았습니다.
개발 데이터셋 레이블을 고치기 위해서 적용한 모든 프로젝스는 개발 데이터셋에도 동일하게 적용해야 합니다3. 그래야 동일한 데이터 분포를 갖는 개발 데이터셋과 테스트 데이터셋의 상태가 계속 유지됩니다. 6장에서는 개발 데이터셋의 성능 최적화를 수행한 후에 다른 테스트 데이터셋에서 다른 기준으로 평가했다는 사실을 나중에 인지하는 문제를 다뤘습니다. 개발 데이터셋과 테스트 데이터셋을 함께 수정함으로써 6장에서 다룬 문제 즉, 개발 데이터셋과 테스트 데이터셋이 다른 분포를 가질 때 발생하는 문제를 피할 수 있습니다.
레이블 품질을 향상시키기로 결정했다면, 시스템이 잘못 분류한 예제 레이블과 올바르게 분류한 예제 레이블을 모두를 확인해야 합니다. 사례(Example)의 원래의 레이블과 학습 알고리즘이 분류한 레이블이 모두 잘못되었을 수도 있습니다. 시스템이 잘못 분류한 사례 레이블 만 수정하면 평가에 편향을 유발할 수 있습니다. 1,000개의 개발 데이터셋있고 분류 정확도가 98.0%라고 가정해보겠습니다. 이 경우에 잘못 분류한 20개 사례(Example)를 검토하는 것이 올바르게 분류한 980개의 사례(Example)를 검토하기보다 쉽습니다. 이미지 분류기가 잘못 분류한 예제의 레이블만 검토하면, 개발 데이터셋에 Bias(편차)4 유입될 수 됩니다. 이런 편향은 제품 또는 응용 프로그램을 개발하는 상황이라면 문제가 되지 않습니다. 그러나 이런 방식은 학술 연구 논문에서 결과로 사용해야 한거나 테스트 데이터셋 정확도의 완전히 편향이 없는 측정이 필요한 경우에는 문제가 될 수 있습니다.
이 문서는 Andrew NG 교수님께서 집필 중인 Machine Learning Yearning의 16장 번역입니다. 원제는 “16. Cleaning up mislabeled dev and test set examples” 입니다. 원문 Ebook은 http://www.mlyearning.org [↗NW] 에서 내려받을 수 있습니다.
- <옮긴이> Andrew NG 교수는 머신러닝 알고리즘을 개발하는 과정에서, 그 시점에 가장 필요하고 효과적인 작업이 무엇인지 판단하고 선택하는 체계적인 절차를 중요시 여기는 것 같습니다. 잘못된 레이블을 고치는 것이 중요하지 않다는 것을 의미하는 것이 아니라, 이 상황에서 우선순위는 레이블을 고치는 것보다 다른 오류 원인을 찾아내는 것이 더 중요하다는 것을 의미합니다. [return]
- <옮긴이> 이 상황은 머신러닝 알고리즘 개발의 후반부 상황입니다. 이제는 전체 오류가 크게 줄었고, 상대적으로 잘못된 레이블 무제가 전체 오류에 미치는 영향이 커졌습니다. 따라서 레이블 수정에 집중할 시점이 되었다는 것을 말하고 있습니다. [return]
- <옮긴이> 인스타그램 필터 효과 복구 등 데이터에 적용되는 모든 데이터 전처리 작업을 의미합니다. [return]
- <옮긴이> 개발 데이터셋의 데이터의 데이터 분포가 변화하는 것으로, 전체적으로 데이터가 특정한 방향으로 쏠림이 생기는 것을 의미합니다. [return]