본문 바로가기

BLOG/딥러닝

시계열 데이터 분석을 위한 RNN

【5】RNN 기본 다지기 / 순환 신경망의 출현

시계열 데이터 분석을 위한 RNN

 

지금까지 살펴본 신경망 모델의 구조를 단순화시킨다면 아래와 같이 생각할 수 있다. 즉 화살표 오른쪽에 있는 그림처럼 신경망 모델을 표현 할 수 있다. 파란 동그라미가 입력으로 들어가면 네모박스에 있는 은닉층들을 통과하여 파란 동그라미로 출력이 된다. 여기서 하나의 네모 박스 안에는 여러개의 가중치(weights)가 포함되었다고 이해할 수 있다. 이제 우리는 단순화시킨 오른쪽 그림을 사용해 RNN을 이해해 볼 것이다.

 

 

텍스트 데이터를 이용해 예시를 들어보겠다. 한 문장에 대한 다음 문장을 예측하는 모델을 만든다고 가정해보자. 그렇다면 입력데이터는 하나의 문장이 될 것이고 출력데이터도 마찬가지로 예측한 하나의 문장일 것이다. 아래의 그림을 보자.

 

 

입력으로 “오늘 뭐 먹을까?”라는 하나의 문장이 들어왔을때 신경망은 입력데이터의 다음 문장으로  “매운거 먹고 싶어”라는 문장을 예측하였다. 이런식으로 문장 자동완성 모델을 만들고 싶다고 생각해보자. 그런데 한가지 더 고려해야할 것이 있다. 바로 어떤 상황인지에 대한 정보가 없다는 것이다. 언제나 매운거만 먹으라고 할수는 없지 않은가? 이런 불상사를 피하기 위해서는 혹은 마치 사람처럼 생각하는 모델을 만들기 위해서는 현재 입력 뿐만 아니라 이전 문장이 무엇이었는지도 고려해야 한다. 다음의 경우를 살펴보자.

 

 

위 그림처럼 입력데이터와 이전 데이터를 모두 고려한다면 배탈이 났을 경우에는 죽을 권하고 생일인 경우에는 스테이크는 등 상황에 맞는 답변을 출력할 수 있다. 이처럼 연속적인 데이터를 처리하려면 이전 데이터를 기억할 수 있도록 모델을 구성해야한다. 즉, 아래와 같이 구성해야 한다. 아래의 그림처럼 입력을 받아 출력을 만들고 이 출력을 다시 자신에게도 보내는 것이다. 

바로 이 그림이 우리가 찾던 가장 간단한 형태의 RNN 구조가 되겠다. 앞에서 다루었던 많은  신경망들과는 다르게 너무나도 간단한 구조이다. 그래서 RNN의 동작이 이해가 되지 않는 독자들이 있을 것이다. 오히려 너무 간단하면 추상적으로 다가올수 있으므로 조금 더 RNN의 구조를 살펴보며 어떻게 동작하는지 이해해 보자.

 

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com