Search

RNN

1. RNN

RNN은 자연어, 주가와 같은 순차 데이터(시계열 데이터)를 모델링하는데 사용되는 신경망이다.
구현하는 방법은 TensorflowKeras 를 활용하는데, 쉬운 방법은 Keras 를 사용하는 것이다.
2D 텐서를 3D 텐서로 변환
RNN 은 1) 배치 사이즈 2) timestep 3) input_dim 의 형태로 입력받는다. 따라서, 이런 형태로 변환해줘야 한다.
Keras에는 다음 3가지 모델이 내장되어 있다.
SimpleRNN
이전 timestep의 출력이 다음 timestep 으로 완전히 연결된 모델
LSTM
기존의 RNN 이 가진 vanishing gradient, 장기 기억 의존성의 문제를 해결하기 위해 나온 모델
GRU
LSTM 을 좀 더 단순화시키고, 보다 적은 데이터로도 학습이 가능한 모델
기존의 RNN은 한계점이 존재하는데, 바로 시간 간격이 길어질수록 효율이 매우 느려진다는 점이다. 이를 두고 “긴 기간의 의존성” 이라고 부른다. → Vanishing Gradient
이런 한계점을 해결한 모델이 바로 LSTM 이 된다.

2. LSTM

LSTM은 RNN의 한 종류로, 긴 의존 기간을 필요로 하는 학습을 효율적으로 수행할 능력을 가졌다. LSTM 은 Output 외에도 LSTM cell 사이에서만 공유되는 Cell State 를 가지고 있다.
RNN의 반복 모듈이 단 하나의 layer를 갖고 있는 표준적인 모습
LSTM의 반복 모듈에는 4개의 상호작용하는 layer가 들어있다.

3. GRU

LSTM 과 유사하지만 구조가 더 간단해서 연산량이 더 적고, 어떤 경우에는 LSTM 보다 좋은 성능을 보이기도 한다.