RNN(Recurrent Neural Networks)은 주로 자연어 처리 문제에 주로 사용되는 인공신경망 구조입니다. 즉 RNN은 시계열 데이터를 다루기에 적합한 인공신경망 구조입니다. 예를 들어서 주식가격, 음성 데이터, 자연어 데이터등이 대표적인 시계열 데이터의 종류라고 할 수 있습니다.
RNN 구조
RNN의 기본 구조는 다음 그림과 같습니다. 빨간색 박스는 인풋, 파란색 박스는 아웃풋, 그리고 녹색 박스는 현재 히든 state를 의미합니다. 현재 상태의 히든 state는 직전 시점의 ht-1을 갱신 받는 구조 입니다.
RNN은 시퀀스 길이에 상관없이 인풋, 아웃풋을 받을 수 있는 구조이기 때문에 원하는 모델에 따라서 다양하게 구조를 만들 수 있습니다. 이것이 RNN의 장점 중 하나입니다.
RNN 구조의 장점은 이전 상태에 대한 정보를 메모리형태로 저장할 수 있다는 점입니다. 이것은 시계열 데이터를 다룰 때 매우 강력한 효과를 발휘하게 됩니다.
예를 들어서 "푸른 하늘에 OO이 떠있다"라는 문장이 있을때 OO안에 들어갈 단어를 예측하는 모델을 만든다고 가정을 하겠습니다. 그러면 우리는 앞과 뒤 정보인 푸른, 하늘, 떠있다를 통해서 OO에 들어가게될 단어가 "구름"이라는 것을 예측할 수 있습니다. 이처럼 RNN은 자연어 분야에서 많이 활용이 됩니다.
다음 그림은 RNN은 unfold 형태로 펼친 모습입니다.
RNN의 문제점
RNN은 경사도 사라짐 문제(Vanishing Gradient Problem)가 있습니다.
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 |