eBook

딥러닝 실용 안내서: 데이터부터 시작해 배포까지

챕터 2

데이터 수집


딥러닝을 통해 신경망을 훈련하려면 양질의 레이블 지정 데이터가 많이 필요합니다. 이 챕터에서는 그러한 데이터에 액세스하고 수집하는 다양한 방법들을 알아봅니다.

섹션

왜 그렇게 많은 훈련 데이터가 필요할까요?

분류 알고리즘 설계를 위해 선택한 방법이 무엇이든 간에, 데이터는 필요합니다. 규칙 기반 알고리즘을 구축하는 경우라도, 그러한 규칙을 작성할 수 있으려면 시스템과 시스템에 입력할 입력값을 이해해야 합니다.

그러한 데이터셋과 훈련을 위해 딥러닝 시스템에 필요한 데이터의 차이점은 대개는 수량의 문제입니다.

규칙 기반 알고리즘을 설계한다면 다년간의 경험과 문제에 대한 지식을 동원하게 되며, 이를 통해 명백히 해답이 아닌 특정 접근법이나 아이디어를 신속하게 기각할 수 있게 됩니다. 그러나 부분적으로 훈련된 모델로 시작하는 경우를 제외하면 여러분이 훈련시키는 심층 신경망은 참고할 수 있는 경험이나 기존 지식이 전무합니다. 무엇이 명백한지 모르는 것입니다.

따라서 에지를 여러분이 분류하려는 더욱 추상적인 패턴으로 조합하는 것은 고사하고, 신호에서의 상승 에지 같은 기본 개념이라도 이해하기 위해서는 신경망은 매우 많은 레이블 지정 데이터의 표본이 필요합니다.

그렇기 때문에 딥러닝은 더 많은 데이터를 사용하여 사람이 문제에 일반적으로 동원하는 경험과 지식을 상쇄하게 됩니다.

dl-engineers-ebook-ch2-knowledge-vs-size-graph
섹션

레이블 지정 데이터 획득

신경망은 여러분이 신경망에 제공하는 레이블 지정 훈련 데이터만큼만 좋아지기 때문에, 전체 해 공간을 포괄하는 데이터에 액세스할 수 있는 것이 중요합니다. 레이블 지정 데이터를 획득하는 방법은 몇 가지가 있습니다. 여러분은 해결하려는 문제의 유형에 따라 하나의 방법 또는 여러 방법의 조합을 선택할 수 있습니다.

직접 데이터 수집

센서에서 직접 데이터를 수집하여 처음부터 새로 데이터베이스를 구축할 수 있습니다. 자율주행 자동차 같은 일부 사례의 경우에는 이러한 데이터 수집 방법이 좋은 방법인데, 이는 상상할 수 있는 모든 환경과 운전 조건에서 수십억 대의 자동차가 도로를 달리고 있으며 여러분은 그저 자동차의 센서 데이터를 기록하면 되기 때문입니다. 이렇게 시간이 지나면 수백만 마일의 주행거리, 그리고 수많은 레이블 지정 시간이 누적되면서 데이터베이스가 구축됩니다.

그림 1. 자율 시스템 워크플로

처음에는 직접 데이터를 수집하는 것이 데이터셋을 구축하기 위한 간단하고 당연한 접근법으로 보일 수 있습니다만 고려해야 할 사항이 있습니다. 

예를 들면, 전체 해 공간에 걸쳐 데이터를 수집하고 있는지 확인해야 합니다. 신경망이 사람 음성에 담긴 단어를 식별해야 하는 경우를 예를 들면, 여러분에게는 모든 발화된 단어를 포괄하는 훈련 데이터뿐만 아니라, 사람들이 같은 단어를 다르게 발음하는 방식도 포괄하는 훈련 데이터 역시 필요합니다. 만일 일부 억양에 대해서만 훈련하면, 그러한 억양에 대해 모델을 피팅하게 되고 문제의 전체 범위를 학습하지 않을 것입니다.

이 모든 데이터를 수집했다면 레이블을 지정해야 하는데 이 역시 만만한 작업이 아닙니다. 

기존 데이터베이스

운이 좋다면 필요한 모든 레이블 지정 데이터를 기존 데이터베이스에서 찾을 수도 있을 것입니다. 예를 들어, 영상에 있는 일반적인 객체를 인식할 수 있는 신경망을 설계하고 있다면 1,400만 개 이상의 레이블 지정 영상이 있는 ImageNet을 사용할 수 있습니다. 

레이블이 지정된 노래, 음성 및 기타 소리의 견본을 포함하는 오디오 데이터셋도 있습니다. 이와는 다른 유형의 신호를 포함하는 데이터셋 역시 계속 생성되고 있습니다.

기존 데이터의 증대

기존 데이터베이스에 여러분이 필요한 모든 훈련 데이터가 없다면 레이블이 지정된 자신만의 데이터를 추가하는 방법으로 데이터셋을 증대하여 빠진 부분을 채우고 기존 데이터를 수정하여 더 큰 해 공간을 포괄할 수 있습니다.

기존 데이터를 수정하는 두 가지 예로는 사람 음성의 피치를 조정하거나 손글씨 문자를 회전하고 확대/축소하는 예가 있습니다.

음성 인식: 오디오 데이터베이스에 한 명의 화자가 발화한 단어의 집합만이 있을 수 있습니다. 데이터셋을 복제하고 주파수를 조절하여, 원래 데이터베이스에 포함된 것과 다른 피치에서 발생하는 음성을 식별하도록 신경망을 훈련할 수 있습니다.

문자 인식: 손글씨 문자의 기존 데이터베이스에 각각의 문자의 크기와 방향이 동일하도록 확대/축소되고 회전된 영상만이 있을 수 있습니다. 신경망이 다양한 배율로 쓰여진 문자 또는 비스듬하게 쓰여진 문자를 인식할 수 있도록 하려면 데이터셋을 복제하고 배율과 방향을 조절하여 원래의 데이터베이스를 증대할 수 있습니다.

dl-engineers-ebook-ch2-speech-recognition-diagram

그러나 여러분의 공학 문제가 매우 독특하다면 기존 데이터베이스를 증대하거나 확장하는 것이 백지 상태에서 데이터베이스를 처음부터 새로 만드는 것과 같은 규모의 문제일 수도 있습니다.

데이터 합성

시뮬레이션을 구축할 수 있을 정도로 문제의 물리에 대해 이해하고 있는 경우 이를 이용하여 훈련 데이터를 합성할 수 있습니다. 합성 데이터의 이점은 데이터를 생성하려면 애초에 레이블이 필요하기 때문에 추가로 레이블 지정이 필요하지 않다는 점입니다. 

그림 1. 자율 시스템 워크플로

실제 데이터를 수집하는 데 많은 비용이 들거나 위험한 상황에서도 합성 데이터를 사용할 수 있습니다. 예를 들면, 데이터를 수집하기 위한 물리적 시나리오를 설정하는 대신에 고장이 로봇 하드웨어에 손상을 유발할 수 있는 다양한 많은 상황에서 로봇을 시뮬레이션하면 비용이 적게 들 것입니다.

반면에, 오디오 신호에 있는 단어를 분류할 수 있는 신경망을 구축하려 한다면 단순히 실제 오디오를 많이 수집하는 것보다 훨씬 어렵기 때문에 단어를 말하는 사람을 시뮬레이션하는 것은 적절치 않을 것입니다. 따라서 문제 해결에 합성 데이터, 실제 데이터 또는 그 둘을 조합한 데이터가 적절한지는 여러분이 결정해야 합니다.

섹션

예제: 파형 데이터 합성하기

데이터 합성의 예제를 보려면 MATLAB 예제 딥러닝을 사용한 레이다 및 통신 파형 분류를 살펴보십시오. 이 예제에서는 RF 파형의 변조 유형을 인식할 수 있도록 CNN을 훈련하는 데 딥러닝을 사용합니다.

신경망이 분류해야 할 변조 유형 중에는 LFM(선형 주파수 변조)가 있으며, 이는 아래 그림에 단일 반송 주파수, 스윕 대역폭, 펄스 폭, 스윕 방향에 대해 나타나 있습니다.

그림 1. 자율 시스템 워크플로

이 그림은 이상적인 패턴을 나타낸 것이지만 기상, 무선 전자기기에 의한 하드웨어 왜곡, 안테나 인근 장애물에서 일어나는 반사, 기타 많은 다양한 잡음 및 오류의 소스 등이 신호를 손상시킬 수 있습니다.

아래의 각 신호는 잡음이 있는 다양한 LFM 파형들입니다.

파형 분류기는 선형 주파수 변조를 만드는 이런 신호들의 고유한 특징을 이해할 수 있어야 합니다. 따라서 해 공간(분류 알고리즘이 작동해야 할 모든 조건 및 시나리오의 집합)이 방대하며, 훈련 데이터셋이 그 모두를 포괄해야 합니다. 이런 부분에 있어 딥러닝과 합성 데이터가 유용합니다.

RF 변조 방식 및 그것에 잡음을 유발하는 장애는 매우 잘 알려져 있기 때문에 합성된 훈련 데이터를 사용하기 적합합니다. 이 예제에서는 각각의 변조 유형에 대해 10,000개의 프레임이 생성되었고 아래 플롯에는 몇 가지 파형에 대한 프레임 예가 나타나 있습니다.

dl-engineers-ebook-ch2-mod-classification-deep-learning

이 합성된 데이터를 사용하여 신경망을 훈련합니다. 이 신경망이 실제 RF 데이터에 얼마나 잘 레이블을 지정하느냐가 정말 중요합니다. 다른 모델과 마찬가지로, 현실적인 시나리오를 사용하여 하드웨어에서 이 신경망을 검증하고 테스트할 필요가 있습니다.

섹션

합성 데이터 사용에 대해 자세히 알아보기

패널 내비게이션