14. 에러 분석: 아이디어 평가를 위해, 개발 데이터셋을 살펴보라.
고양이 앱을 사용하는 과정에서, 고양이 앱이 강아지를 고양이로 잘못 분류하는 오류를 발견했습니다. 앱이 고양이로 인식한 강아지 이미지를 살펴보니 정말 고양이처럼 생겼네요.
개발팀에서는 써드파티 소프트웨어를 이용하여, 시스템이 개 이미지를 더 잘 분류하도록 개선하자는 의견이 나왔습니다. 이러한 시스템 변경 작업은 약 1달 정도 걸릴 것으로 예상됩니다. 이것을 제안한 팀원은 매우 열정적입니다. 여러분은 그 팀원에게 그 작업을 진행하라고 하겠습니까?
이 작업에 한 달이라는 시간을 투자하기 전에, 이런 개선 작업을 통해서 실제로 시스템 정확성이 얼마나 향상될지를 먼저 예측해 봐야 합니다. 그리고 이 작업에 1개월을 투자할 가치가 있는지 아니면 다른 작업에 이 시간을 투자하는 것이 더 효율적인지를 합리적으로 결정해야 합니다.
이런 상황에서는 다음과 같은 일을 해야 합니다.
- 시스템이 잘못 분류한 100개 데이터1를 수집하고 이 데이터를 개발 데이터셋으로 만듭니다. 여기서 수집한 데이터는 고양이로 잘못 분류한 개 이미지만을 수집하는 것이 아니라 시스템 잘못 분류한 모든 데이터입니다.
- 이 데이터를 수작업으로 살펴보고, 이 중에서 개 이미지가 얼마나 포함되어 있는지 비율을 확인해 봅니다.
잘못 분류된 사례를 살펴보는 과정을 “오류 분석(Error Analysis)“이라고 합니다. 개 이미지를 잘못 분류하는 상황에서 잘못 분류된 이미지 중에서 5%만이 “개” 이미지라면, 개 이미지에 대한 알고리즘 성능을 최대한 향상하더라도, 전체 오류의 5% 이상을 줄일 수 없습니다. 다시 말해, 전체 오류 중 5% 감소는 제안된 프로젝트의 개선 “최대한도”를 의미합니다. 현재 시스템이 90% 정확도를 갖는다면, 즉 10%의 오류를 가질 경우에, 개 이미지 오류를 완전히 제거하면, 이 프로젝트의 최대 정확도는 90.5%가 됩니다. 다시 말해 9.5% 오류, 원래 10% 오류보다 5% 작은 오류를 보일 가능성이 큽니다.
이와는 달리, 잘못된 분류 사례 중에 50%가 개라면, 이 프로젝트에서 개와 관련된 오류를 줄인다면, 현재 시스템의 정확도를 크게 끌어 올릴 수 있다는 확신을 가질 수 있습니다. 개와 관련된 오류 50%를 제거하면, 프로젝트의 정확도는 90%에서 95%까지 올라갑니다. (전체 오류가 50% 감소하면, 오류율은 10%에서 5%로 줄어듦).
지금까지 설명한 오류 분석의 간단한 계산 절차를 이해했다면, 개 이미지에 대한 써드파티 소프트웨어 통합으로 끌어올릴 수 있는 성능 향상의 한계를 바로 예측해 볼 수 있습니다. 이와 같은 성능 개선에 대한 예측은 앞에서 프로젝트에 대한 투자가 합당한지를 결정하는 정량적인 기준으로 활용될 수 있습니다.
오류 분석을 통해서 여러 프로젝트에 대한 시도가 어떤 결과를 만들지 이해할 수 있습니다. 많은 엔지니어가 오류 분석을 꺼리는 경우를 보아왔습니다. 제안된 여러 아이디어가 시간을 투자의 가치가 있는지 확인하기 보다는, 오히려 바로 이 아이디어를 적용을 시작하고 구현하는 것을 더 좋아하는 것처럼 느껴집니다. 이것은 자주 발생하는 실수입니다. 써드파티 통합에 한 달을 투자했지만, 실제 성능 개선은 거의 이뤄지지 않는 상황도 발생할 수 있습니다.
수작업으로 100개 이미지를 검사하는 데 오랜 시간이 걸리지 않습니다. 이미지 당 1분이 걸린다고 가정해도, 2시간 이내에 완료됩니다. 두 시간을 투자해서 한 달 동안 낭비되는 노력을 예방하거나, 그 한 달의 노력에 대한 확신을 제공할 수도 있습니다.
“오류 분석“이란 알고리즘이 잘못 분류하는 개발 데이터셋의 데이터(여기서는 이미지)를 검사하는 프로세스라고 정의할 수 있습니다. 이 프로세스를 통해서 오류의 근본 원인을 이해할 수 있습니다. 오류 분석을 통해서 앞에서 해야 할 일에 대한 프로젝트의 우선순위를 정할 수 있습니다. 또한 오류 분석을 통해서 새로운 방향성을 발견할 수 있습니다. 이와 관련해서는 다음 장에서 다루겠습니다. 다음 몇 장에서는 오류 분석을 수행하는 모범 사례에 대하여 설명하겠습니다.
이 문서는 Andrew NG 교수님께서 집필 중인 Machine Learning Yearning의 14장 번역입니다. 원제는 “14. Error analysis: Look at dev set examples to evaluate ideas” 입니다. 원문 Ebook은 http://www.mlyearning.org [↗NW] 에서 내려받을 수 있습니다.
- <<옮긴이> 원문은 example입니다. 보통 사례라고 표현하지만, 문맥을 고려하여 사례 보다는 “데이터“로 번역하였습니다. 보통 지도학습에서 학습/개발/검증 데이터셋은 과거에 만들어지고 레이블이 존재하는 데이터입니다. 이 데이터 한 건은 하나의 상황을 의미합니다. 이런 의미에서 머신러닝에서는 데이터 1건을 Example, Sample, Instance 및 Data Point라고 표현합니다. 이와 관련해서 다음 링크 < 머신러닝 용어: Example, Sample & Data Point[↗NW] > 를 참고하시기 바랍니다. [return]