Sequential data는 시계열적 특성을 가진 데이터로써 오디오, 영상, 텍스트 등 우리 일상에 가장 흔한 데이터라고 볼 수 있다.
Sequential data의 경우 fully connected layer로 처리를 하기에는 정해진 input의 크기가 명확하지 않기도 하고 시간적 특성을 고려할 수 없기 때문에 적절하지 않다.
RNN
Idea
현 상태로부터의 이전 정보 n개를 요약한 정보를 이용해 현재를 예측한다.
architecture
RNN의 가중치는 로 분류한다.
입력층 -> 은닉층
시점 t에서의 은닉층 -> 시점 t+1에서의 은닉층
은닉층 -> 출력층
이때 W는 n of hidden layer -1 만큼 별개로 존재하는 것이 아니라 모든 시점에서 동일하게 공유한다.
RNN은 Sequential Model과는 다르게 입력과 출력 구조가 자유롭게 형성될 수 있으므로 필요에 따라 위와 같이 다양한 구조로 구성할 수 있다.
Shortage
Long-term memory 가 잘 되지 않는다. 현 시점에서 멀어진 과거의 정보이지만 중요한 정보일 수도 있음에도 반영을 하지 못한다는 문제가 있다.
LSTM
background
RNN의 단점을 보완하고자 나왔다. 오래된 데이터이지만 중요한 정보를 소실하지 않도록 하자는 아이디어이다.
architecture
중요한 정보인지를 어떻게 알고 계산할 것인가가 주요 문제라고 생각한다.
이를 위해 LSTM은 총 3가지 gate를 이용해 정보를 요약한다.
Input Gate
input으로부터 어떤 정보를 cell state에 저장할 것인지를 뽑는다.
이렇게 취합한 정보를 바로 cell state에 저장하지는 않고 cell state에 저장할 예비군이 된다.
Forget Gate
input으로부터 어떤 정보를 버릴지 결정한다.
위 Input, Forget Gate를 지나고 나면 cell state를 업데이트한다.
Output Gate
어떤 값을 다음 시점으로 전달할 지를 결정한다.