딥러닝 수식으로 살펴보기[1편]: RNN

2022.02.21 00:57 4,252 조회

안녕하세요 :)

딥러닝을 수식으로 이해한 내용을 남기고자 이 글을 작성하게 되었습니다. 첫번째 글은 많이들 사용하시고 아시는 RNN에 대해 살펴보겠습니다.


RNN(Recurrent Neural Network)은 데이터의 순서를 고려한 인공신경망 모형입니다. 이름에서도 알 수 있듯 재귀적으로 값이 처리되는 모형으로 순차적 처리에 높은 성능을 보입니다. 일반적으로 RNN은 자연어 처리(NLP, Natural Language Processing)에 주로 사용되며, 시계열 예측에도 많이 사용되는 모델입니다.

저의 경우, NLP보다 시계열 데이터 처리에 대해 많이 공부했습니다. 그래서 시계열 데이터 관점에서 보자면, 시계열 예측 문제는 전통적으로 통계적 기법이자 시계열 데이터 예측 기법인 ARIMA가 많이 활용되어 왔습니다. ARIMA의 경우, 단기예측에서는 높은 성능을 보이지만, 장기 예측에서는 성능이 아주 떨어집니다. 인공신경망에 대한 연구가 활성화된 최근 몇 년 간 시계열 예측을 위해 ARIMA를 대신하여 RNN 계열의 다양한 모델이 활용되어 왔고, 이들은 중장기에서 ARIMA보다 높은 성능을 보입니다.

RNN을 기반으로 한 변형모델은 LSTM, GRU가 가장 유명한 모델입니다. 대부분의 RNN 기반 모델은 LSTM, GRU에서 파생된 방법이 많이 연구가 되고 있습니다. 이번 글에서는 시계열을 위한 인공신경망인 RNN에 대해 수식으로 정리해보고자 합니다. Tensorflow와 Torch에서 잘 만들어진 함수들을 제공하여 많은 분들이 공부하여 쉽게 사용하고 계실 겁니다.


RNN의 구조

(다음 내용은 ratsgo’s blog의 글을 바탕으로 재구성되었습니다.)

RNN은 과거의 값을 처리한 값을 다음 입력값 처리 시 가져와 예측을 수행하게 하는 모델로 왼쪽 그림과 같습니다. 풀어서 보면 오른쪽 그림과 같이 나타낼 수 있습니다.

수식으로 다시 살펴보겠습니다.

x(t)는 현재의 입력값 h(t-1)은 과거의 히든 스테이트, h(t)는 현재의 히든 스테이트 입니다. 그리고, y(t)는 현재의 히든스테이트로 부터 얻어진 예측값입니다. 첫번째 과정으로, 현재의 히든 스테이트 h(t)를 계산을 하게 됩니다. 이 함수가 받는 입력값은 현재의 입력값, 과거의 히든스테이트이며, 이 때 각 입력값에 대해 가중치와 값을 보정할 수 있는 바이어스(bias)로 구성이 됩니다. 그리고 이렇게 구성된 값에 하이퍼 탄젠트(tanh)를 활성화함수로 활용하여 현재의 히든 스테이트 값이 결정됩니다. 하이퍼 탄젠트는 아래 그림의 파란색 선으로, 범위는 -1~1사이이 값이 발생됩니다.

다음 과정은 출력값을 얻는 과정입니다. 아주 간단한 선형식으로 구성되어 있습니다. 앞서 계산된 현재의 히든 스테이트를 입력 받아, 여기에 가중치를 곱하고 바이어스를 더하는 가장 기초적인 선형식의 구조입니다.

RNN은 이와 같이 과거의 값을 예측에 활용합니다. 이러한 방식으로 반복적으로 예측을 수행하여 장기 예측에도 활용되고, 문장을 이어 붙이는데도 활용됩니다.

실제로 이렇게 간단한 모델로는 성능이 그리 좋지 않습니다. 앞서 언급했듯 이 구조를 토대로 LSTM, GRU 등의 방법들이 발전해왔습니다. 다음 글에서는 이 같은 변형된 방법의 수식을 풀어 보고자 합니다.

감사합니다.


본 포스팅은 데이콘 서포터즈 "데이크루" 1기 활동의 일환입니다.


출처

[1] ratsgo’s blog, “RNN과 LSTM을 이해해보자”, https://ratsgo.github.io/natural language processing/2017/03/09/rnnlstm/(2022.02.20 접속)

[2] 위키피디아, “쌍곡선 함수”, https://ko.wikipedia.org/wiki/쌍곡선_함수 (2022.02.20 접속)

로그인이 필요합니다
0 / 1000
월드파파
2022.03.04 19:25

순서 데이터를 처리할 때 기본이 되는 RNN을 수식으로 쉽게 설명해주셔서 잘 읽고 갑니다 :)