RNN에 대해 알아보자.
장단기 메모리(Long Short-Term Memory, LSTM)
1. 바닐라 RNN 내부 구조
\[h_t = thanh({W_x}x_t + {W_h}h_{t-1} + b)\]
바닐라 RNN은 $x_t$와 $h_{t-1}$이라는 두 개의 입력이 각각의 가중치와 곱해져서 메모리 셀의 입력이 된다. 그리고 이를 하이퍼볼릭탄젠트 함수의 입력으로 사용하고 이 값은 은닉층의 출력인 은닉 상태가 된다.
2. LSTM(Long Short-Term Memory)
LSTM은 은닉 상태(hidden state)를 계산하는 식이 전통적인 RNN보다 조금 더 복잡해졌으며 셀 상태(cell state)라는 값을 추가했다. 이렇게 함으로써, 은닉층의 메모리 셀에 입력·망각·출력 게이트를 추가하여 불필요한 기억을 지우고 기억해야할 것들을 정리한다.
2-1. Cell State
Cell State는 컨베이어 벨트와 같아서 전체 체인을 계속 구동시킨다. 정보가 바뀌지 않고 그대로만 흐르게 하는 부분이다. 또한 State가 꽤 오래 경과하더라도 Gradient가 잘 전파된다. Gate라고 불리는 구조에 의해서 정보가 추가되거나 제거되며, Gate는 Training을 통해 어떤 정보를 유지하고 버릴지 학습한다.
2-2. Forget Gate
과거의 정보를 버릴지 말지 결정하는 과정이다. Sigmoid Layer에서 결정이 되는데, $h_{t-1}$과 $x_t$를 받아서 0과 1 사이의 값을 $C_{t-1}$에 보내준다. 그 값이 1이면 정보를 보존 하게되고, 0이면 정보를 삭제하게 된다.
예를 들어, “어제 비가 왔어”, “그래서 오늘 우산을 챙겼어” 라는 두 문장이 있으면 1이 나올 것이고 “어제 비가 왔어”, “오늘 커피를 마셨어” 라는 두 문장이 있으면 0이 나올 것이다.
2-3. Input Gate
현재 정보를 기억하기 위한 게이트이다. 현재의 Cell State 값에 얼마나 더할지 말지를 정한다.
2-4 Update
과거 Cell State를 새로운 State로 업데이트하는 과정이다. Forget Gate를 통해서 얼마나 버릴지, Input Gate에서 얼마나 더 할지를 정했으므로 이 Update 과정에서 계산을 해서 Cell State로 업데이트해준다.
2-5. Output Gate
어떤 출력값을 출력할지 결정하는 과정으로 최종적으로 얻어진 Cell State 값을 얼마나 빼낼지 결정하는 역할을 한다.