When to change dev/test sets and metrics

새 프로젝트를 시작할 때, 저는 디벨롭먼트 셋과 테스트 셋을 빠르게 선택하려고 노력합니다. 이를 통해 팀 전체가 추구해야 할 명확한 목표를 얻을 수 있기 때문입니다.

When to change dev/test sets and metrics

저는 가급적 1주일 이내에 첫번째 디벨롭먼트 셋, 테스트 셋 그리고 평가 지표를 확정할 것을 팀에게 요청합니다. 불완전하더라도 일단 무언가를 빠르게 시작해서 빠르게 나아가는 것이, 아무것도 하지 않고 생각만 늘어놓는 것보다 훨씬 낫습니다.

그럼에도 일주일이라는 제한시간은 성숙한 어플리케이션에 대해서는 적용하지 않습니다. 성숙한 어플리케이션이란, 예를 들어 스팸 차단처럼 오랫동안 연구된 어플리케이션을 말합니다. 이미 성숙한 시스템의 경우 현재보다 더 나은 디벨롭먼트 셋과 테스트 셋을 얻기 위해 수개월이 걸리기도 합니다.

시간이 지나 당신이 최초로 세팅한 디벨롭먼트 셋, 테스트 셋 또는 평가 지표가 잘못되었음을 깨달았다면, 무슨 수를 써서라도 빠르게 교체해야 합니다. 예를 들어, 당신의 디벨롭먼트 셋과 평가 지표가 분류기 A를 분류기 B보다 낫다고 평가했는데, 팀원들은 당신의 제품에 분류기 B가 더 적합하다고 생각한다면, 이는 디벨롭먼트 셋, 테스트 셋 또는 평가 지표를 변경해야 한다는 신호일 수도 있습니다.

디벨롭먼트 셋이나 평가 지표가 잘못되어 분류기 A를 잘못 평가하는 경우는 세 가지가 있습니다:

1 당신이 추정하고자 하는 실제 분포가 디벨롭먼트 셋 또는 테스트 셋과 다를 때

당신의 첫 디벨롭먼트/테스트 셋에는 주로 다 자란 고양이들의 사진들로 이루어져 있다고 가정해 봅시다. 당신은 고양이 분류 앱을 배포했고 사용자들이 기대 이상으로 아기 고양이들의 사진을 더 많이 업로드하고 있습니다. 따라서 디벨롭먼트/테스트 셋 분포는 당신이 추정하고 예측해야 할 실제 데이터의 분포를 대표하지 못합니다. 이 경우, 디벨롭먼트/테스트 셋이 대표성을 가질 수 있도록 새롭게 업데이트해야 합니다.

cat-kitten-138468381

2 디벨롭먼트 셋이 오버피팅 상태일 때

디벨롭먼트 셋을 기준으로 아이디어를 반복적으로 평가하는 프로세스는 당신의 알고리즘으로 하여금 점진적으로 디벨롭먼트 셋에 대하여 “오버피팅”하도록 만듭니다. 개발이 끝나면 당신은 머신러닝 시스템을 테스트 셋으로 평가할 것인데요. 디벨롭먼트 셋에 대한 성능이 테스트 셋 성능보다 훨씬 좋게 나타난다면, 머신러닝 시스템이 디벨롭먼트 셋에 대하여 오버피팅 되었다는 신호입니다. 이 경우, 새로운 디벨롭먼트 셋을 준비하세요.

만약 당신이 팀의 진행 상황을 추적할 필요가 있다면, 정기적으로 테스트 셋에 대한 머신러닝 시스템 성능을 평가해볼 수 있습니다. 예를 들면 1주일 또는 1개월에 한 번이 좋겠죠. 그러나 1주일 전 상태로 시스템을 롤백한다거나 하는, 알고리즘 관련 결정을 내리는 목적으로 테스트 셋을 사용해서는 안 됩니다.

만약 테스트 셋을 의사결정이 필요할 때마다 사용한다면, 테스트 셋은 곧 오버피팅 상태가 되므로, 시스템 성능에 대해서 편항되지 않은 추정값을 기대하기 어렵게 됩니다. 편향되지 않은 추정값이란 당신이 연구 논문을 공개한다거나 중요한 비즈니스 의사결정을 내리는 데 필요한 것이죠.

3 평가 지표가 프로젝트가 최적화해야 할 대상과 다른 것을 측정하고 있을 때

당신의 고양이 분류 앱에서 평가 지표는 분류 정확도(classification accuracy)라고 가정해 봅시다. 현재 분류기 A는 분류기 B보다 높은 분류 정확도를 나타내고 있습니다. 그러나 당신이 두 알고리즘을 사용해 본 결과, 분류기 A는 종종 포르노 이미지를 걸러내지 못한다는 사실을 알게 되었습니다.

분류기 A가 성능상으로는 더 우월하더라도, 포르노 이미지 출력으로 앱 사용자는 부정적인 경험을 겪을 것이므로, 분류기 A의 우월한 평가 지표 수치는 정당화될 수 없습니다. 어떻게 해야 할까요?

이러한 상황에서 평가 지표는 분류기 B가 실제로는 분류기 A보다 당신의 제품에 적합하다는 사실을 드러내지 못하고 있습니다. 따라서, 당신은 최선의 알고리즘을 선택하기 위한 평가 지표를 더는 신뢰할 수 없게 되었습니다. 평가 지표를 바꾸어야 할 때입니다.

예를 들어, 당신은 포르노 이미지를 허용하는 것에 대하여 크게 페널티를 부여하는 평가 지표를 선택할 수 있습니다. 믿을만한 지표가 없는 상태에서 분류기를 하나하나 돌려보며 선택하는 것보다는, 새로운 평가 지표를 선택해서 팀이 추구해야 할 새로운 목표를 정의할 것을 아주 강하게 추천합니다.

프로젝트 진행 도중 디벨롭먼트/테스트 셋 또는 평가 지표를 바꾸는 일은 꽤 흔하게 일어납니다. 최초 설정한 디벨롭먼트/테스트 셋과 평가 지표는 당신이 매우 빠르게 프로세스를 반복할 수 있도록 도와줍니다. 만약 현재의 디벨롭먼트/테스트 셋 또는 평가 지표가 더 이상 당신의 팀에게 올바른 방향을 제시하지 못한다면? 그럴 수 있습니다! 그냥 새로운 것으로 바꾸고, 팀원들에게 새로운 방향성을 알려주면 됩니다.


deeplearning.ai를 이끄는 Andrew Ng의 책, MACHINE LEARNING YEARNING은 머신러닝 프로젝트 수행에 있어 반드시 알아야 할 개념과 노하우를 담고 있습니다. 총 58편으로 이루어진 이 책을 1편씩 번역하여 게재합니다.

Machine Learning Yearning 전체 목록 보기