본문 바로가기



AI 관련 기술들/AI

시계열 데이터와 순환신경망

지난 글에서 시계열 데이터에 대하여 알아보았습니다.
그렇다면 순차열 데이터의 한 종류인 시계열 데이터와 이번 글에서 다룰 순환신경망 모델은 어떻게 연결되는 것일까요?
차근차근 이유를 따져보면 그다지 어렵지 않습니다.

 

 

 


먼저 시계열 데이터란 시간의 순서대로 일정한 주기에 따라 측정되고 저장된 데이터라고 말씀드렸었죠.
그리고 시계열 데이터에서는 이전의 데이터, 즉 과거의 데이터가 현재와 미래의 데이터에 영향을 미친다고 설명했습니다.
그렇다면 과거의 데이터를 가지고 와서 현재, 미래의 데이터에 적용시켜야 하는데 이를 위해서 과거의 데이터를 기억하고 있어야 합니다.
다시 말하면 과거 데이터를 저장할 수 있고 참조할 수 있는 모델, 메모리 효과를 가지고 있는 모델이 필요한 것입니다.

다음 단계는 현재의 데이터를 보기 위하여 과거의 데이터를 순차적으로 살펴보고, 또 바로 이후의 미래 (현재 + T1)의 데이터를 확인하려면 현재를 포함한 과거의 데이터를 다시 살펴보고, 또 그 다음의 미래는...
이렇게 알고자 하는 시점의 데이터를 기준으로 과거의 데이터를 순서대로 살펴나가는 행위가 계속 반복됩니다.
즉 동일한 과정, 모델이 계속적으로 반복되는, 순환의 과정을 가지는 모델이 요구되죠.

그래서 순환신경망(Recurrent Neural Network, RNN)이 제안되었습니다.

 

순환신경망의 기본 형태    [ 출처: "심층학습 (이안 굿펠로, 요슈아 벤지오, 에런쿠빌 저 / 제이펍)" 을 보고 다시 그림 ]

 

순환신경망 모델이 많이 사용되는 분야를 살펴보면 기상데이터 분석 및 예측, 주가정보 예측 등의 시계열 데이터 처리 분야 외에도 자연어처리, 번역, 언어 모델링 등의 분야에서도 많이 사용되고 있는 것을 알 수 있습니다.
무슨 연관성이 있는 걸까요?


우리가 글을 읽거나 대화를 할 때, 지금 막 사용한 하나의 단어만이 의미가 있을까요?
아니죠.
우리는 글을 읽거나 대화를 할 때, 이전의 맥락을 이해하면서 현재 사용된 단어를 이해하고 있습니다.
같은 단어인데 다른 의미를 가지는 경우도 이러한 맥락을 이용해서 문제 없이 정확하게 이해할 수 있습니다.

이런 맥락을 이루는 단어들은 우리가 말을 할 때, 또는 글을 쓸 때 시간 순서대로 나열됩니다.

한 단어가 나오고 또 다음 단어가 이어서 나오고...

그리고 말을 하거나 글을 쓸 때 어법과 어순에 맞지 않게 사용하면 상대방이 이해하기가 어려워집니다.
이처럼 언어 처리에 대한 분야 역시 각 데이터에 대한 시간의 흐름과 각 데이터 간의 순서가 중요한 분야이기 때문에 이런 특징을 잘 적용하고 있는 순환신경망 계열의 모델이 많이 활용되는 겁니다.


만약 요즘에 가장 기본적으로 강의하는 CNN으로 언어와 같은 시계열, 순차열 특징을 가진 데이터를 처리하려면 이러한 시간의 흐름에 따른 맥락과 인과관계를 어떻게 처리할 수 있을까요?
매우 힘들 것입니다.
물론 이전 글에서도 말씀드렸던 것처럼 어차피 숫자, 문자로 구성된 배열형태로 이루어진 데이터들이니까 적절한 아이디어로 데이터를 가공, 전처리 하고 처리한다면 가능할 수 있습니다.

한 장의 이미지가 아니라 동영상처럼 시간 순서에 따른 여러 장의 이미지를 2차원 배열이 아닌 1차원 배열로 풀어놓고 각 시간 순서에 따른 이미지의 1차원 배열 데이터를 쭈욱 이어서 가공하여 적용하면 충분히 처리가 가능합니다.
그렇지만 괜히 상성이 좋지 않은 모델을 적용해서 고생할 필요는 없겠죠.

또 한 가지, 가끔 RNN을 순환신경망(Recurrent Neural Network) 또는 재귀신경망(Recursive Neural Network) 이라고 설명하면서 둘 다 같은 모델이라고 설명하는 곳이 있는데 순환신경망과 재귀신경망은 약간 다른 모델입니다.
Recurrent와 Recursive를 번역하기 위하여 사전을 보면 순환, 재귀, 반복, 재발 등의 의미가 같이 사용됩니다.

따라서 두 개의 의미를 명확히 구분하기 어렵기때문에 혼란이 생길 수 있는데 주로 일본에서 출판된 도서를 번역한 책에서 이러한 혼용이 자주 보이는 것 같습니다.

 

순환신경망과 재귀신경망은 서로 조금 다른 모델입니다. (흔히 말하는 RNN 모델은 순환신경망 모델을 가리킵니다.)

그러나 완전히 다른 모델은 아닙니다.

재귀신경망은 순환신경망을 조금 다른 방식으로 일반화시킨 버전이라고 생각하시면 조금 이해가 쉬울 것입니다.

일단 여기서는 순환신경망(Recurrent Neural Network)은 사슬(체인)형태의 계산 그래프를 사용하여 구현되는 모델이며 재귀신경망(Recursive Neural Network)은 트리형태의 계산 그래프를 사용하여 구현되는 모델이라는 정도만 알아두세요.

기본편 카테고리에서 모델을 설명할 때 두 모델의 비교내용을 좀 더 상세하게 다뤄보겠습니다. 

 

 

 

 

 

반응형