앞서 배웠던 모델들은 이미지 데이터를 기반으로 예측하는 모델을 소개했었다. 이번에는 이미지 데이터가 아닌 Sequential 데이터를 input으로 가지는 모델을 공부해보자.
먼저 Sequential Data란 순서가 있는 데이터를 말한다. 대표적으로 글이나 말 등이 sequential data이다.
앞의 정보가 뒤의 정보에 영향을 미쳐야 하기 때문에, 정보를 레이어 뒤쪽으로 전달하는 구조를 갖고 있는 네트워크를 RNN이라 한다.
RNN은 짧은 sequential data에서는 잘 동작하지만 sequence가 길어지면 앞의 정보가 뒤에 레이어까지 전달되지 않는 문제가 발생한다. 이를 Short-term dependencies 라 한다. Short-term dependencies를 해결하기 위해 나온 모델이 LSTM (Long Short Term Memory) 모델이다.
복잡해 보이는 구조를 띠고 있지만 실제로 공부해보면 그렇게 어렵지 않은 모델이다. 위에 cell state가 지나가는 선을 흔히 마트 계산대에 있는 컨베이어 벨트라고 생각하면 이해가 쉽다. 정보가 컨베이어 벨트 위에서 계속 흐르고, 거기에 각 게이트를 지난 정보가 얹어지는 것이다.
LSTM 은 3개의 Gate가 존재하는 특징이 있다.
Forget Gate
말 그대로 정보를 잊어버릴지, 계속 유지할지 결정하는 게이트이다. Xt(input)과 previous hidden state 값이 sigmoid 함수를 통과해서 previous cell state에서 곱해지게 된다. Sigmoid 함수를 통과하기 때문에 0~1 사이 값을 갖고, 따라서 0에 가까우면 정보를 지워버리고 1에 가까우면 정보를 최대한 유지하는 것으로 이해할 수 있다.
Input Gate
컨베이어 벨트(Cell state)에 어떤 정보를 저장할지 결정하는 게이트이다. Input과 previous hidden state를 sigmoid와 tanh함수를 통과시키고 곱해서 컨베이어 벨트에 더해준다.
Output Gate
업데이트된 cell state를 사용해서 그림에 보이는 것처럼 연산을 한 후, 두 방향으로 output을 뱉는다. 하나는 ht라는 값으로 hidden state값을 뱉고, 나머지 하나는 다음 hidden state값으로 보낸다.
LSTM과 가장 큰 차이점은 3개의 게이트가 아닌 2개의 게이트를 사용한다는 것이다. Reset Gate & Update Gate.
Cell state가 없고, Hidden state만 존재한다. Gate가 LSTM보다 하나 적지만 LSTM과 비슷한 성능 혹은 그 이상을 발휘한다고 알려져 있다.