본문 바로가기
Deep Learning

RNN(Recurrent Neural Networks)

by rubyda 2020. 11. 2.
728x90

 

 

RNN(Recurrent Neural Networks)은 주로 자연어 처리 문제에 주로 사용되는 인공신경망 구조입니다. 즉 RNN은 시계열 데이터를 다루기에 적합한 인공신경망 구조입니다. 예를 들어서 주식가격, 음성 데이터, 자연어 데이터등이 대표적인 시계열 데이터의 종류라고 할 수 있습니다. 

 

RNN 구조


 

https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/

 

RNN의 기본 구조는 다음 그림과 같습니다. 빨간색 박스는 인풋, 파란색 박스는 아웃풋, 그리고 녹색 박스는 현재 히든 state를 의미합니다. 현재 상태의 히든 state는 직전 시점의 ht-1을 갱신 받는 구조 입니다.

 

 

 

RNN은 시퀀스 길이에 상관없이 인풋, 아웃풋을 받을 수 있는 구조이기 때문에 원하는 모델에 따라서 다양하게 구조를 만들 수 있습니다. 이것이 RNN의 장점 중 하나입니다.

 

RNN 구조의 장점은 이전 상태에 대한 정보를 메모리형태로 저장할 수 있다는 점입니다. 이것은 시계열 데이터를 다룰 때 매우 강력한 효과를 발휘하게 됩니다.

 

예를 들어서 "푸른 하늘에 OO이 떠있다"라는 문장이 있을때 OO안에 들어갈 단어를 예측하는 모델을 만든다고 가정을 하겠습니다. 그러면 우리는 앞과 뒤 정보인 푸른, 하늘, 떠있다를 통해서 OO에 들어가게될 단어가 "구름"이라는 것을 예측할 수 있습니다. 이처럼 RNN은 자연어 분야에서 많이 활용이 됩니다.

 

 

 

https://www.researchgate.net/figure/The-standard-RNN-and-unfolded-RNN_fig1_318332317

 

다음 그림은 RNN은 unfold 형태로 펼친 모습입니다. 

 

 

RNN의 문제점


RNN은 경사도 사라짐 문제(Vanishing Gradient Problem)가 있습니다. 

 

https://mc.ai/vanishing-gradients-in-recurrent-neural-networks-2/

Time0에서 입력받게된 데이터는 다음 시간에서 RNN의 파라미터를 업데이트하거나 예측을 진행하는데 강한 영향을 미치게 됩니다. 하지만 시간 2, 3, ~ 로 갈수록 새로운 데이터가 들어오면서 새로 들어온 데이터의 영향력에 의해서 시간 1에서 입력 받은 데이터의 영향력으느 조금씩 사라지게 되는 것을 볼 수 있습니다. 이러한 현상이 바로 경사도 사라짐 문제(Vanishing Gradient Problem) 입니다. 

 

이러한 문제를 해결하기 위해 나온 방법이 바로 LSTM(Long-Short-Term Memory Networks) 입니다. 다음 포스팅에서 LSTM에 대해 자세히 알아보도록 하겠습니다.

'Deep Learning' 카테고리의 다른 글

GAN(Generative Adversarial Network)  (0) 2020.11.26
CNN(convolutional neural network)  (0) 2020.10.07
활성화 함수(Activation Function)의 종류  (0) 2020.10.06
Deep Learning Summary  (0) 2020.08.23