11 When to change dev/test sets and metrics
새로운 프로젝트를 시작할 때, 최대한 빨리 개발/테스트 데이터셋을 선택 하려고 노력하곤 한다. 왜냐하면 이 데이터셋들에 대한 빠른 선택은 잘 정의된 목적(타겟)이나 방향성을 제시 해 주기 때문이다.
나는 보통 첫번째로 선택 될 개발/테스트 데이터셋과 측정지표(metric)을 1주 이내로 생각해달라고 팀에게 요청한다. 완전하지 않는 것을 생각해낸 후, 다음 수순으로 빠르게 움직이는 것이 필요 이상으로 과하게 생각하는 것 보다 더 낫기 때문이다. 하지만, 그 한주 동안의 시간을 보내는 것은 이미 성숙된 어플리케이션에 대한 개발에는 적용되지 않는다. 예를 들어서, 스팸 차단기는 이미 꽤나 성숙된 딥러닝 어플리케이션이다. 이와같은 성숙한 시스템에 대해서 일을 하는 팀들을 많이 봐 왔고, 나는 그들이 더 나은 개발/테스트 데이터셋을 구하기 위해서 수개월의 시간을 보내곤 하는 것을 목격한 바가 있다.
만약에 첫번째 로 선택한 개발/테스트 데이터셋과 평가 지표가 뭔가 잘못되었음 을 알게 된다면, 이는 단순히 그 데이터셋들과 평가지표를 빨리 바꿔야 함을 의미할 뿐이다. 예를 들어서, 만약 개발 데이터셋과 평가지표가 A 라는 분류 알고리즘이 B 라는 분류 알고리즘보다 더 좋다고 순위를 매겼지만, 팀은 분류 알고리즘 B가 사실상 개발 대상이 되는 상품에서는 더 나은 성능을 보여준다고 생각하는 경우가 있을 수 있다. 이러한 현상은 개발/테스트 데이터셋 또는 평가 지표를 변경해야 한다는 시그널이라고 판단할 수도 있겠다.
분류 알고리즘 A가 더 낫다는 잘못된 판단을 하는데에는, 개발 데이터셋과 평가지표에 관한 기본적인 세 가지 발생 가능한 원인 이 있을 수 있다.
1. 실제로 좋은 성능을 보여주길 원하는 데이터의 분포가 설정된 개발/테스트 데이터셋과 다르다.
- 처음으로 선택한 개발/테스트 데이터셋이 성인 고양이의 사진들로 주로 이루어져 있다고 가정해 보자. 그리고 이것이 적용된 어플리케이션을 배포하였는데, 많은 사용자들이 예상한 것 보다 새끼 고양이 사진을 훨씬 더 많이 업로드 한다고 가정해 보자. 그렇다면, 개발/테스트 데이터셋의 분포는 실제 개발된 어플이 잘 동작해야 하는 데이터의 분포와는 상이하게 된다. 이 경우, 선택된 개발/테스트 데이터셋을 더 실제 환경과 비슷한 것들로 교체할 필요가 있다.
2. 개발 데이터셋에 과적합 되는 경우가 있을 수 있다.
- 지속적으로 떠오르는 아이디어를 동일한 개발 데이터셋에 대하여 평가하는 과정이, 알고리즘으로 하여금 점차적으로 그 개발 데이터셋에 과적합 되도록 만들 수 있다. 개발을 끝내고 나서 개발된 시스템을 테스트 데이터셋을 통하여 평가하기 되는데, 이때 알고리즘의 개발 데이터셋에 대한 성능이 테스트 데이터셋에 대한 성능보다 월등히 뛰어나다면, 이는 개발 데이터셋에 과적합 되었다는 시그널로 볼 수 있다. 이 경우에는, 기존에 사용된 데이터 말고 새로운 데이터로 개발 데이터셋을 구성하면 된다.
- 팀의 개발 진척도를 추적 하고자 하는 경우, 개발중인 시스템을 테스트 데이터셋에 대해서 정기적(주단위나 월단위)으로 평가 할 수 있겠다. 그러나, 알고리즘에 대한 어떠한 결정 (지난 주의 시스템으로 롤백해야 하는지에 대한 결정도 포함)도 사용되어온 동일한 테스트 데이터셋을 통해서 하지는 말자. 만약에 어떤 결정을 내리게 된다면, 그 테스트 데이터셋에 대해서 과적합 될 것 이고, 개발중인 시스템의 성능을 완전히 공정하게 측정하는것이 어려워질 것이다.
3. 측정 지표가 프로젝트가 최적화 해야하는 것 이외의 것을 측정 하는 경우가 있을 수 있다.
- 고양이 분류 어플리케이션 에서 당신이 측정 지표로서 “분류의 정확도”를 설정 했다고 가정해 보자. 이 측정 지표는 현재 A라는 분류기가 B라는 분류기보다 더 낫다는 판단을 내리게 해주고 있다. 하지만 당신이 두 개의 알고리즘을 모두 시도해 봤을 때, A라는 분류기가 때때로 포르노 사진이 노출되는 것을 허용함을 발견하게 되었다고 생각해 보자. A의 정확도가 더 높았지만, 이러한 나쁜 결과는 A의 성능은 실제 받아들여지기 어렵다는 것을 의미 한다. 이때 뭘 해야 하는가?
- 평가 지표는 적용 대상이 되는 타겟에 대해서, 알고리즘 B가 사실상 알고리즘 A보다 더 낫다는 것을 보여주는데에는 실패 하였다. 그러면, 최고의 알고리즘을 선별하기 위해서 이 평가 지표를 더이상 믿을 수 없게 된다. 평가 지표를 바꿔야 하는 순간이 왔음을 의미한다. 예를 들어서, 포르노 사진을 필터링 하는데 촛점을 맞춘 평가 지표를 고를 수도 있다. 신뢰할 수 없는 평가지표 를 사용하여 분류 알고리즘을 선택하는 반복을 하면서 많은 시간을 낭비 하는 것보다는, 명쾌하게 새로운 목표를 정의할 수 있는 새로운 평가 지표를 고를 것 을 강력히 추천 하는 바이다.
개발/테스트 데이터셋 또는 평가 지표를 프로젝트 진행 도중에 변경하는 것을 꽤나 흔한 일이다. 최초에 고른 개발/테스트 데이터셋과 평가지표는 프로젝트 개발 사이클을 더 빠르게 돌 수 있도록 도와줄 것이다. 만약 개발/테스트 데이터셋 또는 평가 지표가 더이상 당신의 팀이 향해야 하는 방향을 가이드 하지 못한다는 것을 발견한다면, 그렇게 심각하게 고민할 필요 없다. 그냥 새로운 방향을 제시할 수 있는 데이터셋과 평가 지표로 바꿔서 당신의 팀원들에게 명쾌한 방향을 제시하면 된다.