시스템의 성능을 위한 한 가지 합리적인 목표

사용자가 특정 “웨이크워드”를 말하는 것을 마이크를 사용하여 듣는 하드웨어 장치를 만들고 있다고 가정하면 시스템이 웨이크업 상태가 됩니다. 예를 들어 Amazon Echo가 “Alexa”를 듣고, Apple Siri가 “Hey Siri”를 듣고, Android가 “Okay Google”을 듣고, Baidu 앱이 “Hello Baidu”를 듣고 있습니다. 잘못된 양의 비율(웨이크워드를 말하지 않은 경우에도 시스템이 웨이크업되는 빈도)과 잘못된 음의 비율(웨이크워드를 말할 때 웨이크업되지 않는 빈도)을 모두 고려해야 합니다.

이 시스템의 성능을 위한 한 가지 합리적인 목표는 잘못된 음수 비율(측정지표 최적화)을 최소화하는 것입니다. 단, 작동 24시간마다 잘못된 양수(측정지표 만족)가 하나만 있는 것을 조건으로 합니다. 팀이 최적화할 평가 지표에 맞춰 조정되면 더 빠르게 진행할 수 있습니다. 새로운 문제에 어떤 접근 방식이 가장 적합한지 미리 아는 것은 매우 어렵습니다. 경험이 풍부한 기계 학습 연구원들도 만족스러운 것을 발견하기 전에 대개 수십 가지 아이디어를 시도합니다. 기계 학습 시스템을 구축할 때, 저는 종종 반복적인 과정입니다. 이 루프를 더 빨리 돌수록 더 빨리 진행됩니다. 따라서 개발/테스트 세트 및 메트릭이 중요합니다.

아이디어를 시도할 때마다 개발 세트에서 아이디어의 성능을 측정하면 올바른 방향으로 가고 있는지 신속하게 결정할 수 있습니다. 반면 특정 개발 집합 및 메트릭이 없다고 가정합니다. 따라서 팀이 새 고양이 분류기를 개발할 때마다 앱에 통합하고 몇 시간 동안 앱을 사용하여 새 분류기가 개선되었는지 파악해야 합니다. 엄청 느릴 거예요! 또한 팀에서 분류기의 정확도를 95.0%에서 95.1%로 향상시킨 경우 앱을 사용하여 재생했을 때 0.1% 향상되었음을 감지하지 못할 수 있습니다.

그러나 이러한 0.1% 개선 사항 중 수십 가지를 점진적으로 누적함으로써 시스템의 많은 발전이 이루어질 것입니다. 개발 세트 및 메트릭을 사용하면 작은(또는 큰) 개선 효과를 성공적으로 제공하는 아이디어를 매우 빠르게 탐지할 수 있으므로, 지속적으로 개선할 아이디어와 폐기할 아이디어를 신속하게 결정할 수 있습니다. 새로운 프로젝트를 시작할 때 개발/테스트 세트를 빠르게 선택하려고 노력합니다. 왜냐하면 개발/테스트 세트를 선택하면 팀이 목표로 삼을 수 있는 명확한 목표를 얻을 수 있기 때문입니다. 저는 일반적으로 팀에게 1주일 이내에 초기 개발/테스트 세트와 초기 측정 기준을 제시하도록 요청합니다(거의 더 길지 않은 경우).

이것을 너무 많이 생각하기보다는 뭔가 부족한 것을 생각해 내고 빨리 진행하는 것이 좋습니다. 그러나 이 1주일 일정은 성숙한 애플리케이션에는 적용되지 않습니다. 예를 들어 안티스팸은 성숙한 딥 러닝 응용 프로그램입니다. 저는 이미 성숙된 시스템에서 더 나은 개발/테스트 세트를 얻기 위해 수개월을 소비하는 팀을 보았습니다. 나중에 초기 개발/테스트 세트 또는 메트릭이 표시를 벗어났다는 것을 알게 되면 반드시 신속하게 변경하십시오. 예를 들어, 개발 세트 + 메트릭이 분류자 A를 분류자 B 위에 순위가 매겨지지만 팀에서 분류자 B가 실제로 제품에 더 우수하다고 생각하는 경우 이는 개발/테스트 세트 또는 평가 메트릭을 변경해야 한다는 신호일 수 있습니다.

초기 개발/테스트 세트에 주로 성인 고양이의 사진이 있다고 가정합니다. 고양이 앱을 발송해 보니 예상보다 훨씬 더 많은 아기 고양이 이미지를 업로드하고 있습니다. 따라서 개발/검정 집합 분포는 사용자가 잘 수행해야 하는 실제 분포를 나타내지 않습니다. 이 경우 개발/테스트 세트를 보다 대표적으로 업데이트하십시오. 개발 집합에 대한 아이디어를 반복적으로 평가하는 프로세스는 알고리즘이 개발 집합에 점진적으로 “과잉”되도록 합니다. 개발이 완료되면 테스트 세트에서 시스템을 평가합니다. 개발 세트 성능이 검정 세트 성능보다 훨씬 낫다는 것은 개발 세트에 과적합했다는 의미입니다.

이 경우 새 개발 세트를 가져옵니다. 팀의 진행 상황을 추적해야 하는 경우 테스트 세트에서 시스템을 일주일에 한 번 또는 한 달에 한 번 정기적으로 평가할 수도 있습니다. 그러나 테스트 세트를 사용하여 지난 주의 시스템으로 롤백할지 여부를 비롯한 알고리즘에 대한 결정을 내리지 마십시오. 이렇게 하면 테스트 세트에 지나치게 적합하게 되어 더 이상 시스템 성능을 완전히 공평하게 추정할 수 없습니다(연구 논문을 발표하거나 중요한 비즈니스 결정을 내릴 때 이 메트릭을 사용해야 합니다).