eBook

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

챕터

챕터 1

왜 패턴 인식에 딥러닝을 사용할까요?


딥러닝은 데이터에서 패턴을 찾을 수 있는 모델을 개발하는 데 사용됩니다. 하지만 데이터에서 패턴을 찾는 방법이 딥러닝만 있는 것은 아닙니다. 이 챕터에서는 다른 방법 대신 딥러닝을 선택할 이유를 살펴봅니다.

dl-engineers-ebook-ch1-model-training-daisy

일단 모델이 훈련되면 레이블 미지정 데이터를 모델에 입력할 수 있으며 모델은 훈련 중에 학습한 정보를 기반으로 가장 확률이 높은 레이블을 적용하게 됩니다.

섹션

패턴 인식

패턴 인식의 두 가지 간단한 예를 보겠습니다. 하나는 선형 회귀를 사용하여 시간에 따른 센서 데이터 추세를 판정하고, 다른 하나는 k-평균 알고리즘을 사용하여 데이터를 비슷한 그룹들로 군집화합니다.

dl-engineers-ebook-ch1-linear-reg-k-means

딥러닝이 아닌 이러한 여러 방법은 논리를 이해하기가 대체로 더 쉽고 비교적 단순한 데이터를 소량으로 사용한다는 이점이 있습니다. 심층 신경망을 훈련할 때는 신경망이 작동하는 이유를 설명하기 어려울 수 있으며, 신경망은 훈련을 위해 고품질의 레이블 지정 데이터가 훨씬 더 많이 필요합니다. 그래도 다른 방법 대신 딥러닝을 선택할 이유는 무엇일까요? 커다란 해 공간 전반에 걸쳐 매우 복잡한 패턴을 찾는 데 딥러닝이 매우 적합하기 때문입니다.

예를 들면, 객체 추적 및 위치추정을 위해 영상에서 특정 객체를 찾아 레이블을 지정하려는 경우나 하드웨어의 결함 및 재료 손상을 시각적으로 검사하려는 경우가 있겠습니다.

dl-engineers-ebook-ch1-raw-data-identified-pattern
dl-engineers-ebook-ch1-concrete-damage

이 예에서 패턴은 보행자나 깨진 콘크리트 등을 나타내는 특정한 픽셀의 조합입니다. 이런 패턴은 경우마다 크게 다를 수 있는 복잡한 패턴일 수도 있고, 그 차이가 매우 미세하여 다른 패턴과 구분하기가 거의 불가능할 수도 있습니다. 따라서 사용자가 선택하는 알고리즘은 이러한 복잡한 패턴을 분류해야 할 뿐만 아니라 매우 커다란 해 공간 전반에 걸쳐 그 작업을 수행해야 합니다.

복잡한 패턴은 영상 외의 데이터에도 존재합니다. 오디오 신호에서는 발화된 단어를 인식해야 할 수도 있고, 몇 초에 불과한 짧은 소절만 듣고 노래를 알아내야 할 수도 있습니다. 

예측 정비 응용 분야나 생물의학 산업 등에서 볼 수 있는 시계열 신호에도 복잡한 패턴이 있습니다.

패널 내비게이션

딥러닝을 사용한 시계열 예측

LSTM(장단기 기억) 신경망을 사용한 시계열 데이터 예측.

패널 내비게이션

LSTM(장단기 기억) 신경망을 사용한 ECG 신호 분류

딥러닝 및 신호 처리를 사용한 PhysioNet 2017 Challenge의 심박 ECG(심전도) 데이터 분류. 

패널 내비게이션

웨이블릿 분석 및 딥러닝을 사용하여 시계열 분류하기

CWT(연속 웨이블릿 변환) 및 심층 컨벌루션 신경망을 사용한 인체 ECG(심전도) 신호 분류.

이 모든 사례에서는 해가 존재하는 복잡도와 범위로 인해 사람이 직접 논리를 만들고 선별하는 규칙 기반 접근 방식을 고안하기가 어렵습니다. 이럴 때는 딥러닝이 더 나을 수 있습니다.

참고: 이 eBook의 예는 이산 레이블이 데이터에 적용되는 분류에 대해 주로 다룹니다. 그러나 딥러닝에서는 모델의 출력이 이산 레이블이 아니라 연속 값이 되는 회귀도 가능합니다. 회귀를 위해 CNN(컨벌루션 신경망)을 훈련하는 방법을 알아보십시오.

딥러닝은 심층 신경망을 사용하여 입력 데이터와 출력 분류 간의 관계를 모델링합니다. 신경망에 대한 자세한 내용은 이 챕터에서 다루지 않지만, 간단히 신경망이란 각각의 계층이 데이터에 대한 특정한 연산을 수행하는 일련의 계층으로 구성된 망이라고 생각할 수 있습니다. 앞쪽 계층은 더 큰 패턴 안에 있는 작은 특징을 찾는 경향이 있고, 이후의 계층은 이런 특징의 조합을 보고 데이터에 맞는 가장 확률이 높은 레이블이 무엇인지 판별합니다.

dl-engineers-ebook-ch1-model-training-car
섹션

특징은 패턴을 정의하는 데 어떻게 도움이 될까요?

딥러닝의 이점 그리고 더 큰 패턴을 인식하는 데 특징 식별이 어떻게 도움이 될지 이해하기 위해, 가속도 데이터에서 하이 파이브를 인식할 수 있는 알고리즘을 개발해야 한다고 상상해 보겠습니다.

아래 플롯에서 서로 다른 세 개의 팔 동작에 대한 가속 패턴을 볼 수 있습니다. 가운데 플롯은 하이 파이브를 나타냅니다. 다른 모든 팔 동작과 하이 파이브 패턴을 구분할 수 있는 알고리즘을 개발하려면 어떻게 접근해야 할까요?

모든 결정적인 특징을 아는 경우

우선 이 문제에 대한 간단한 규칙 기반 접근 방식부터 찾아볼 수 있습니다. 한 가지 방법으로는 이미 알려진 하이 파이브 프로파일을 사용하여 센서로부터 오는 지속적인 가속도 측정값 스트림에 대해 패턴 매칭을 수행하는 것입니다. 예를 들면 함수를 통해 두 신호 간의 표준편차를 확인하고 편차가 특정 임계값 아래로 떨어질 때 하이 파이브가 발생했다고 판별할 수 있습니다. 

그러나 이 접근 방식에는 모든 하이 파이브가 제각기 다르다는 난점이 있습니다. 사람에 따라 손을 움직이는 속도가 빠르거나 느릴 수 있고, 손뼉을 치기 직전에 잠시 멈추거나 특이한 방식으로 하이 파이브를 할 수도 있습니다. 대표적인 프로파일이나 프로파일의 집합을 도출할 수 있다 해도, 이와 같은 접근 방식으로는 과거에 본 적이 없는 하이 파이브 동작을 정확히 인식하지 못할 수 있습니다. 또한 모든 하이 파이브를 확실히 포착하려고 프로파일을 너무 많이 추가하거나 표준편차 임계값을 높이면 하이 파이브가 아닌 동작에도 하이 파이브라고 레이블을 잘못 지정할 위험이 생깁니다.

이 문제에서는 변동이 심할 수도 있는 패턴을 전체적으로 보기보다는 모든 하이 파이브가 공통적으로 갖는 작은 특징의 집합을 찾을 수 있음을 인지하는 편이 더 현명한 접근 방식일 것입니다.

데이터를 명확하게 수집하지 않은 새로운 하이 파이브를 관찰하더라도 가속이 느림 - 느림 - 빠름으로 조합된다면 모두 하이 파이브라고 주장할 수 있을지도 모릅니다. 예를 들어 다음의 하이 파이브는 서로 달라 보이지만 ‘느림 - 느림 - 빠름’이라는 가속 특징은 동일하게 나타납니다.

dl-engineers-ebook-ch1-high-five-graph-comparison

작은 특징을 찾아보고 그 특징이 언제 어떤 순서로 나타나는지 살펴본다면, 단순한 전체 패턴 매칭 알고리즘보다 우수한 규칙 기반 분류기를 설계할 수 있습니다.

이와 같은 규칙 기반 분류기가 갖는 난점은 누군가가 정확한 분류에 필요한 최적의 특징을 정의할 수 있으려면 찾고 있는 패턴에 대해 매우 잘 알고 있어야 한다는 점입니다. 또한 키 작은 사람, 수줍음이 많은 사람, 다른 문화 등에 대해 알고리즘이 의도치 않게 편향되지 않도록 모든 변동 사항을 확실히 처리해 두어야 합니다. 정말 복잡한 패턴은 이 작업을 수작업으로 하려고 하면 시간이 오래 걸리거나 아예 불가능할 수도 있습니다.

모든 결정적인 특징을 다 알지는 못하는 경우

딥러닝이 이런 문제를 해결할 수 있습니다. 직관적이지 않은 특징마저 포함하는 다양한 패턴 특징이 설계자의 명시적 정의 없이도 자동으로 학습됩니다. 따라서 데이터의 복잡한 패턴을 분류하려 하지만 이 패턴을 다른 패턴과 구분하는 모든 규칙을 정의하기는 불가능하다면 딥러닝을 통해 효과적으로 해결할 수 있을 것입니다.

물론 딥러닝에는 나름의 요구사항이 있다는 점을 염두에 두어야 합니다. 레이블이 지정된 다량의 고품질 데이터와 적절한 신경망 아키텍처가 필요하며, 이 신경망을 타겟 프로세서에 배포하고 주어진 시간 안에 실행할 수 있는지도 확인해야 합니다. 이 eBook의 다음 챕터에서는 이러한 요구사항을 다룹니다.