[MLY 번역] 11. When to change dev/test sets and metrics

안현진
MLY_KOREA
Published in
4 min readAug 30, 2018

[MLY 번역]

Andrew ng의 Machine Learning Yearning을 번역한 글입니다. 중간중간 실험가능한 내용이 있을 경우 c++ 혹은 tensorflow를 이용한 실험과 함께 업로드할 예정입니다. 일주일에 2회, 회당 5개씩 업로드될 예정입니다.

번역: 안현진,정주안

새로운 프로젝트를 시작하려 할때, 저는 디벨롭셋과 테스트셋을 빠르게 선택하려고 노력합니다. 왜냐하면 이것이 팀원에게 잘 정의된 목표를 제공하기 때문입니다.

저는 일반적으로 제 팀에게 초기 디벨롭셋/테스트셋과 지수를 일주일 안에 만들 것을 요청합니다-가끔은 좀 더 걸립니다. 지나치게 생각만 하는것 보다는, 불완전한 것을 생각해내고 빠르게 나아가는게 더 낫습니다. 그러나 이런 한주 타임라인은 발달된 분야(mature applications)에 적용하기에 부적합합니다. 예를들어 안티-스팸(anti-spam)은 이미 많이 발달된 딥러닝 분야입니다. 저는 이미 성숙한 시스템에서 더 나은 디벨롭셋과 테스트셋을 얻기 위해 몇달을 작업하는 팀의 모습을 보아 왔습니다.

만약 초기 디벨롭셋과 테스트셋 또는 지수가 주요한 점를 놓친것을 나중에 알게된다면, 부디 신속하게 변경하시기 바랍니다. 예를 들어 만약, 디벨롭셋과 지수가 A분류기를 B분류기보다 높게 평가했더라도 여러분의 제품에 B분류기를 적용하는게 더 우수하다고 판단된다면 이건 아마도 여러분의 디벨롭셋/테스트셋 혹은 평가지수를 바꿔야 함을 알리는 것일 수도 있습니다.

분류기 A가 더 좋다고 잘못된 평가를 내리게 된 세가지 가능한 주된 요인은 아래와 같습니다.

  1. 실제 데이터셋의 분포가 디벨롭셋/테스트셋의 분포와 달랐을 경우 입니다.

여러분의 초기 디벨롭셋과 테스트셋이 주로 다 큰 고양이의 사진으로 구성되었다고 가정해봅시다. 여러분의 고양이앱이 배포되고, 유저들은 여러분의 기대와 달리 다 큰 고양이보다 새끼고양이의 사진을 올렸고 따라서, 여러분의 디벨롭셋과 테스트셋은 분포는 실제 데이터의 분포를 대표할 수 없게 됐습니다. 이런 경우 더 잘 대표할 수 있는 값으로 디벨롭셋과 테스트셋을 업데이트 해주어야 합니다.

2. 디벨롭셋에 대해 과적합이 일어났을 경우 입니다.

디벨롭셋에 대한 아이디어를 반복적으로 평가하는 과정은 여러분의 알고리즘이 디벨롭셋에 대해 점차 과적합 되도록 만듭니다. 개발이 완료되면 여러분은 테스트셋에 대한 평가를 할 것입니다. 만약 디벨롭셋에 대한 퍼포먼스가 테스트셋에 대한 것보다 훨씬 높게 나온다면, 디벨롭셋에 대해 과적합이 일어났다는 신호일 수 있습니다. 이 경우, 새로운 디벨롭셋을 얻어야 합니다.

만약 팀의 진행상황을 추적해야하는 경우, 테스트셋에 대한 실험을 일주일 혹은 한달에 한번 시행하여 시스템을 정기적으로 평가할 수도 있습니다. 그러나 테스트셋을 사용하여 이전 주의 시스템으로 돌리는것을 포함한 알고리즘과 관련된 어떤 결정도 하지 마십시오. 만일 그리한다면 시스템은 테스트셋에 대해 과적합될 것이며 시스템의 퍼포먼스에 대한 공정한 평가치를 제공하지 않을 것입니다.(공정한 평가치는 연구논문을 퍼블리싱하거나 업무에서의 중요한 의사결정을 할 때 필요할 것입니다.)

3. 지수가 프로젝트가 최적화하고자 하는 문제가 아닌 다른 것을 측정할 때입니다.

고양이 애플리케이션을 생각해봤을때, 여러분의 지수는 분류의 정확성(accuracy)입니다. 이 지수는 현재 분류기 A가 B보다 우수하다고 평가합니다. 그러나 두가지의 알고리즘을 다 실험해보고, 분류기A가 가끔 포르노 이미지를 통과시킬 수 있다고 생각해보십시오. 분류기 A의 정확성이 더 높다고 하더라도, 때때로 통과되는 포르노 이미지 때문에 나쁜인상을 남길 수 있다면, 그것의 퍼포먼스가 용납될 수 없음을 의미합니다. 이런 경우 당신은 어떻게 하시겠습니까?

여기서, 그 지수는 여러분의 제품에 대해 알고리즘 B가 실제로 알고리즘 A보다 더 뛰어나다는 사실을 식별하지 못합니다. 따라서 더 이상 최상의 알고리즘을 선정하기 위해 그 지수를 신뢰할 수 없습니다. 평가지수를 바꿔야할 때 입니다. 예를 들면 포르노 이미지에 대해 무거운 처벌을 주도록 지수를 변경할 수 있습니다. 저는 신뢰할 수 있는 지수 없이 너무 오랫동안 진행하고 수동으로 분류자를 선택하는 것으로 되돌아가는 것보다, 새로운 지수를 뽑고 이를 이용해 팀의 명확한 목표를 정의하는것을 강력 추천합니다.

프로젝트 진행 중 디벨롭셋/테스트셋이나 평가지수를 변경하는 것은 아주 흔한 일입니다. 초기에 설정한 디벨롭셋/테스트셋과 지수는 여러분의 반복과정을 빠르게 하는데 도움을 줍니다. 여러분이 디벨롭셋/테스트셋이나 지수가 더이상 옳지 않다고 판단되었을때, 이것은 큰 문제가 되지 않습니다. 단지 새로 설정하고 여러분의 팀이 새로운 방향을 확실하게 알도록 하면 됩니다.

--

--