eBook

AI 탑재 신호 처리 응용 프로그램에서의 데이터 및 모델링

2장: 모델 훈련 및 검증을 위한 주석 지정 데이터 생성

2장

모델 훈련 및 검증을 위한 주석 지정 데이터 생성


절

훈련, 검증 및 테스트 세트: 어떻게 다를까요?

제대로 작동하는 딥러닝 모델을 만들려면 대부분의 경우 모델을 개발하기 위해 최소한 세 가지 유형의 데이터를 확보해야 합니다. 이 세 가지 유형의 데이터란 모델을 훈련할 데이터, 모델이 제대로 학습 중임을 검증하기 위한 데이터, 그리고 최종 성능을 테스트하기 위한 데이터입니다.

데이터의 대부분은 훈련용으로 남겨두어야 합니다. 훈련 세트는 역전파 알고리즘에서 입력 데이터를 제공된 출력값 주석에 피팅하여 많은 수의 신경망 가중치를 최적화하는 데 사용됩니다. 훈련 데이터셋은 대체로 상당히 커서, 기존 또는 시뮬레이션된 데이터를 포함하는 경우가 많습니다. 훈련 세트는 모델이 중요한 것으로 간주해야 할 내용을 학습하도록 가중치 값을 최적화하여 데이터를 훈련 및 피팅하는 데 사용됩니다.

모델을 훈련할 때는 검증 데이터도 사용됩니다. 이 데이터는 훈련 진행 중에 모델이 새 데이터로 얼마나 잘 일반화되는지를 지속적으로 확인하는 데 사용되며 여러 모델 중에서 어떤 모델을 선택할지 결정하는 데도 도움을 줍니다. 검증 세트는 데이터를 많이 필요로 하는 최적화 알고리즘에는 사용되지 않으며, 일반적으로 훈련 세트보다 훨씬 작을 수 있습니다. 현대의 시스템에서 검증 데이터는 최대한 현실적으로 만들어지곤 합니다. 검증 데이터를 만드는 과정에는 새로운 실제 신호를 수집하고 이 신호에 새롭게 주석을 다는 작업이 포함되곤 합니다.

한 회차의 훈련이 완료된 후 테스트 세트를 사용하여 모델의 성능을 계산할 수 있습니다. 검증 세트와 마찬가지로 테스트 세트도 최대한 현실적인 경우가 많으며, 새 데이터를 생성하는 과정에는 새로운 실제 신호를 수집하고 이 신호에 새롭게 주석을 다는 작업을 수반하곤 합니다.

y축은 정확도, x축은 반복을 나타내는 훈련 진행 상황을 보여주는 스크린샷. 파란색 라인은 60% 정확도에서 시작한 후 빠르게 상승하여 90에서 98%까지 지속됩니다. 파선은 30% 정확도에서 시작한 후 상승하여 90%에서 유지됩니다.

파란색 실선은 훈련 세트에 사용된 데이터의 정확도를 나타냅니다. 검은색 파선은 검증 세트에 있는 데이터의 정확도를 나타냅니다.

데이터셋 가져오기

딥러닝 모델 훈련에 필요한 데이터의 양을 감안하면 메모리 제약 조건과 데이터 관리를 고려하는 것이 중요합니다. 모든 데이터를 메모리에 넣을 수 없다면 저장된 데이터를 한 번에 다 읽지 않고도 나타낼 방법이 필요합니다. MATLAB에서 이를 해결하는 방법 중 하나는 audioDatastore(Audio Toolbox™ 필요) 또는 signalDatastore (Signal Processing Toolbox™ 및 Deep Learning Toolbox 필요)와 같은 데이터저장소를 사용하는 것입니다. 이러한 데이터저장소는 병렬 풀을 사용해서 메모리 내외의 신호를 관리하고 신호를 처리하여 특징을 추출하도록 해줍니다.

절

레이블 지정

모델을 올바르게 보정하려면 데이터에 대해 적절하게 레이블을 지정하거나 주석을 달아야 합니다. 검증 및 테스트 데이터셋은 훈련 중에, 그리고 훈련이 완료된 후에 모델의 성능을 판단하는 방편이므로 이러한 데이터셋은 정확한 레이블을 갖추는 것이 중요합니다. 레이블이 정확하지 않으면 아무것도 볼 수 없습니다. 훈련 데이터의 레이블도 중요하지만, 훈련 데이터셋의 크기가 큰 만큼 훈련 데이터 레이블은 다른 기법으로 처리되는 경우가 많습니다.

이 섹션에서는 먼저 검증 및 테스트 데이터셋의 레이블에 대해 알아본 후 훈련 데이터셋을 살펴봅니다.

검증 및 테스트 데이터

검증 데이터는 신경망이 최종적인 응용 사례에서 보게 될 데이터를 정확하게 나타내야 합니다. 우선, 검증 데이터는 해결할 문제를 근접하게 나타내는 신호를 포함해야 합니다. 오디오 응용 사례의 경우에는 먼저 조용한 환경에서, 이후에는 잡음, 반향 및 잔향 수준이 다양한 환경에서 동일한 마이크를 통해 녹음된 신호가 여기에 해당할 수 있습니다.

검증 데이터는 좋은 품질의 레이블을 포함해야 하며, 이는 직접 추가할 수도 있습니다. 바로 그런 레이블이 신경망이 학습해야 할 대상입니다. 이 경우에는 위에 플로팅된 빨간색 마스크가 되겠습니다.

린샷은 중앙을 따라 상승하면서 신호의 각 피크를 나타내는 빨간색 라인이 있는 음성 신호를 보여줍니다.

키워드 발견을 위한 샘플 검증 신호. 파란색 신호는 연설이고 빨간색 선은 키워드 마스크를 나타냅니다.

키워드 마스크가 있는 영역만 재생하면 다음과 같이 들릴 것입니다.

검증 및 테스트 데이터에 대해 고품질 레이블을 얻으려면 어떻게 해야 할까요?

정확도가 입증된 유사 작업을 수행하도록 훈련된 지능형 시스템을 사용해 보십시오. 이는 많은 경우 수동으로 데이터 레이블을 지정하거나 사전 훈련된 머신러닝 모델을 사용한다는 것을 의미합니다.

수동 레이블 지정은 신호 레이블 지정기 같은 대화형 방식의 앱을 통해 더 쉽게 진행할 수 있습니다. 대화형 방식의 앱은 신호에서 영역을 선택하고 레이블을 할당하고 선택된 세그먼트를 조정하는 등의 작업을 위한 인터페이스를 제공합니다.

Signal Processing Toolbox의 신호 레이블 지정기 앱 스크린샷. 각 단어의 신호는 색으로 구분됩니다.

이 예제에서 볼 수 있듯이 외부 API를 사용해서 각각의 단어에 다른 색을 사용하여 신호를 플로팅합니다.

또 다른 방법은 다른 사람이 개발한 잘 작동하는 모델을 사용하는 것입니다. 다음은 Google의 잘 알려진 음성-텍스트 변환 서비스를 Google의 클라우드 API 인터페이스를 통해 사용하는 예제입니다.

트리거 단어에 대한 마스크 레이블을 만들려면 단어 레이블을 MATLAB 명령줄로 내보내고 몇 줄의 코드를 작성하면 필요한 레이블을 얻을 수 있습니다. 이 예제의 코드를 참조하십시오.

여기서 주석 지정 세그먼트를 재생할 수 있습니다.

절

훈련 데이터

오디오 녹음과 같은 신호 데이터를 사용하여 작업하는 경우 테라바이트 단위의 고품질 데이터를 녹음하고 직접 정확하게 레이블을 지정한다는 것은 비현실적입니다. 한 가지 대처 방법은 기존의 레이블 지정된 녹음을 사용하는 것인데, 약간 다른 문제를 해결하는 데 사용된 녹음도 괜찮습니다. 라이선싱이 가능한 연구 데이터셋도 좋은 옵션입니다.

훈련 세트가 당면한 응용 사례에 딱 맞게 만들어진 것이 아니어도 괜찮긴 하지만, 훈련 데이터와 검증 데이터의 차이가 클수록 정확도의 간극도 커집니다.

자동 레이블 지정 알고리즘과 같은 몇 가지 부가적인 기법을 준비해 두면 처음 시작할 때 도움이 됩니다.

외부 API를 사용하여 오디오 신호 내 음성 단어에 레이블 지정하기

IBM® Watson Speech to Text API를 사용하여 신호 레이블 지정기 앱을 직접 테스트할 수 있습니다.

특히 Audio Toolbox에는 레이블 지정에 도움이 될 수 있는 detectSpeechspeech2text등의 자동 레이블 지정 함수가 많이 있습니다. Signal Processing Toolbox 역시 피크 레이블 지정기 및 사용자 지정 함수를 사용한 대량 자동 레이블 지정을 지원합니다.

다음 장에서는 데이터 증대 및 합성과 같이 훈련 데이터의 품질을 개선하고 크기를 늘릴 수 있는 더 많은 기법을 살펴봅니다.

지식 테스트!