3 분 소요

image



Structuring Machine Learning Projects

Error Analysis

Cleaning Up Incorrectly Labeled Data

만약 완전히 새로운 학습 응용 프로그램을 작업하고 계신다면 제가 보통 드리는 조언은 첫번째 시스템을 먼저 빨리 만들고 반복 수행하라는 것입니다 .


image

더 자세히 설명드리면, 저는 음성 인식 분야에서 수년간 작업해 왔는데요. 새로운 음성 인식 시스템을 만들 때에는 여러가지 추진할 수 있는 진행 방향이 많고 우선순위로 정할 수 있는 것들 또한 많습니다.

예를 들어, 시끄러운 주변 환경에 강한 음성인식 시스템을 만들 수 있는 특정 기술들이 있는데요. 이 때 시끄러운 주변환경이란 배경에서 여러 사람이 떠드는 등의 카페 소음, 자동차 소음 고속도로와 같은 기타 소음 등입니다.

또 억양이 두드러지는 음성이 더 잘 인식되게 하는 여러 방법도 있고 스피커가 마이크와 멀리 떨어져 있는 경우에 발생하는 구체적인 문제들도 있습니다. 이를 원거리 음성 인식이라고 합니다.

또 유아 음성도 처리가 쉽지 않은데요. 아이들이 개별 단어를 발음하는 법 아이들이 보통 사용하는 단어와 표현 측면에서요. 그리고 만약 화자가 버벅거리거나 “오”나 “음” 같이 의미 없는 문구를 사용하는 경우 전사값이 더 자연스럽게 나오도록 하기 위한 여러 옵션과 테크닉이 있습니다.

이렇게 다양한 방법을 통해 음성 인식 시스템을 개선할 수 있습니다.

더 일반적으로는, 거의 모든 머신러닝 응용 프로그램에서는 택할 수 있는 방향이 50개 정도로 다양한데 이는 모두 합리적이고 시스템 개선에 도움이 될 수 있는 부분입니다. 하지만 문제는 정확히 어떤 방법을 골라 집중하는가입니다.

저도 물론 음성 인식 분야에서 다년간 작업해 왔지만. 새로운 응용 프로그램 도메인을 만드는 경우 문제에 시간을 들여 생각하지 않는 이상 하나를 쉽게 고르지 못할 것입니다.

학습 프로그램을 만들 때에는 첫번째 시스템을 빨리 만들어 놓고 반복 수행을 하시는 걸 추천드립니다.


image

더 구체적으로 말하면 먼저 개발/시험 세트와 지표를 설정해야 한다는 것입니다. 이건 결국 어디에 목표를 둘지를 결정하는 것입니다. 틀린 경우 나중에 언제든지 바꿀 수 있습니다.

일단 먼저 어디든 목표를 설정해 놓으세요. 그 다음에는 초기 머신러닝 시스템을 빨리 구축하세요. 훈련 세트를 찾고 훈련 후 결과를 지켜보세요. 여러분의 개발/시험 세트 가치와 지표를 상대로 얼마나 잘 작동하는지 보고 이해하세요.

이렇게 초기 시스템을 만들 때에는 전에 배웠던 편향/분산 분석에 관한 내용을 드디어 적용해 볼 수 있습니다. 이 내용은 오류분석과 함께 전에 말씀드렸죠. 다음 단계에 대한 우선순위를 정하기 위한 것들입니다.

특히, 오류 분석을 통해 주된 오류 원인이 스피커가 마이크로부터 멀리 떨어져 있어 발생하는 것임을 알았다면 그래서 음성 인식에 문제가 발생하고 있다면 그러면 원거리 음성 인식이라는 기술에 집중하면 좋을 것입니다. 원거리 음성 인식은 한 마디로 스피커가 마이크와 멀리 떨어져 있을 때 이를 해결하는 방법을 의미합니다.

초기 시스템 도입은 빠르고 지저분할 수 있는데요. 너무 고민하지 마세요. 이 초기 시스템을 통해 학습 완료된 시스템을 가지고 이를 통해 편향/분산을 조절하고 우선순위를 결정하고 오류를 분석하고 실수를 보고 이에 맞는 수많은 진행 방향을 파악해 어떤 부분이 가장 노력을 들일 가치가 있는지 결정할 수 있습니다.

즉 시스템을 먼저 만든 다음 반복 수행을 하시면 좋습니다. 이런 조언이 상대적으로 힘을 잃는 분야도 있기는 한데요. 여러분이 예전에 많이 작업해 보셨던 프로그램 분야입니다. 또 학술 문헌이 많은 경우에도 그렇습니다. 이런 경우 만들고 있는 문제와 정확히 같은 케이스를 참조할 수 있습니다.

예를 들면, 얼굴 인식에 대한 학술 문헌은 방대합니다. 따라서 얼굴 인식기를 만들 때에는 이미 관련 학술 문헌이 많이 존재하기 때문에 이를 기반으로 더 복잡한 시스템을 구축해도 괜찮습니다.

하지만 여러분이 처음으로 해결해 나가려는 문제라면 너무 과하게 고민하지 말고 초기 시스템을 너무 복잡하게 만들지 말라고 조언드리고 싶습니다. 지저분하더라도 일단 시스템을 빨리 만들어 놓고 이를 바탕으로 시스템 개선의 우선순위를 설정하는 방향으로 접근하세요.


저는 다앙한 머신러닝 프로젝트를 접해 왔는데요. 이 과정에서 많은 팀들이 장고 끝에 너무 복잡한 시스템을 만드는 것을 보았습니다. 또 너무 생각을 안 하고 너무 간단하게 만드는 경우도 보았는데요. 평균적으로는 너무 과하게 고민해 복잡한 시스템을 만드는 팀이 더 많았습니다. 너무 심플하게 가는 팀도 있긴 하지만요.

이 내용이 여러분께 도움이 됐으면 좋겠습니다. 여러분의 머신러닝 알고리즘을 새로운 응용 프로그램에 적용하는 경우 이 때 주된 목표가 완전히 새로운 머신러닝 알고리즘을 창조하는 것이 아니라 잘 작동하는 시스템을 만드는 것이라면 정말 잘 작동하는 시스템을 만드는 데 주력해야 할 것입니다.

지저분하더라도 시스템을 일단 먼저 만드세요. 이 시스템을 이용해 편향/분산을 분석하고 오류 분석을 하고 이런 분석 결과를 통해 다음 단계의 우선순위를 결정하세요.

댓글남기기