1. LSTM
LSTM은 RNN의 장기의존성 문제를 해결하기 위해 만든 모델입니다. RNN 모델에서 장기의존성 문제가 생기는 이유는 은닉셀이 하이퍼탄젠트 함수를 거치기 때문입니다. LSTM은 활성화 함수를 지나지 않은 Cell state를 만들어서 역전파 과정에서도 이전 은닉 상태의 정보를 잃지 않도록 합니다.
LSTM의 구조를 하나씩 살펴보겠습니다. LSTM은 은닉층 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정합니다.
- 입력 게이트
- 입력 게이트는 현재 정보를 기억하기 위한 게이트입니다.
- 현재 시점 t의 x값과 입력 게이트로 이어지는 가중치를 곱한 값과 이전 시점 t-1의 은닉 상태가 입력 게이트로 이어지는 가중치를 곱한 값을 더하여 시그모이드 함수와 하이퍼볼릭탄젠트 함수를 각각 지납니다.
- 이 두 개의 값(i, g)을 가지고 이번에 선택된 기억할 정보의 양을 정합니다.
- 삭제 게이트(Forget gate)
- 기억을 삭제하기 위한 게이트입니다.
- 현재 시점 t의 x값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지납니다.
- 0과 1 사이의 값이 정보의 양을 얼마나 남길 것인지를 정하는 비율이 됩니다. 이를 가지고 셀 상태를 구합니다.
- 셀 상태
- 삭제 게이트에서 이전 timestep의 값을 일정 비율 잃습니다.
- 입력 게이트에서 구한 i, g 두 개의 값을 내적함. i∘g가 이번 timestep에서 셀 상태(cell state)가 기억해야할 값입니다.
- 입력 게이트에서 선택된 기억(i∘g)를 삭제 게이트의 결과값과 더합니다.
- 삭제 게이트는 이전 시점의 입력을 얼마나 반영할지를 의미하고, 입력 게이트는 현재 시점의 입력을 얼마나 반영할지 결정합니다.
- 출력 게이트
- 출력 게이트는 현재 시점 t의 x 값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지난 값입니다.
- 해당 값은 현재 시점 t의 은닉 상태를 결정하는 일에 쓰입니다.
- 셀 상태의 값이 하이퍼볼릭탄젠트 함수를 지나 -1과 1 사이의 값이 되고, 해당 값은 출력 게이트의 값과 연산되면서 t-1의 정보를 은닉 상태에 전달합니다.
2. GRU
GRU는 LSTM과 마찬가지로 RNN의 장기의존성 문제를 해결하기 위해 고안된 모델입니다. LSTM에는 3개의 서브 게이트가 있지만, GRU는 업데이트 게이트와 리셋 게이트 두 가지 게이트로 작동됩니다. LSTM 게이트에 비해 복잡도를 낮아졌다는 장점이 있습니다.
GRU의 구조를 살펴보겠습니다.
- GRU 셀은 LSTM의 셀 상태가 사라지고, 은닉 상태 하나로 다시 통합되었습니다. 그리고 하나의 서브 게이트가 삭제 게이트와 입력 게이트 역할을 모두 수행합니다.
- 입력 게이트를 통과하는 값이 1이면 forget 게이트가 열리고(즉, 기억이 보존되고), 반대로 0이면, input 게이트만 열러서 삭제 게이트를 통과하는 이전 은닉 상태의 값에 현재 input 데이터를 반영하지 못하게 됩니다.
- GRU 셀에서는 가중합 연산과 출력 함수를 거치는 출력 게이트가 없습니다. 대신에 이전 은닉 상태의 어느 부분이 출력될지 새롭게 제어하는 rt가 추가되었습니다.
이렇게 이전 은닉 상태를 보존하는 방법을 고안함으로써 장기의존성 문제를 어느정도 해결할 수 있게 되었지만, 하나의 임베딩 벡터에 정보를 계속 덮어쓰는 한 장기의존성 문제는 해결되지 않습니다.
다음 포스팅에서는 하나의 임베딩 벡터를 활용하는 것이 아니라 Time-step마다 생성되는 은닉 상태 벡터를 활용하는 Attention 모델에 대해 정리하겠습니다.