LSTM (Long Short-Term Memory)
1. LSTM 정의
LSTM (Long Short Term Memory) 는 RNN (순환 신경망) 중 하나로, 셀, 입력 게이트, 출력 게이트, 망각 게이트를 통해 기울기 소실 문제 (Vanishing gradient) 를 방지하고자 개발되었다. 망각게이트는 현재 입력과 비교해 이전 상태의 0과 1 사이의 값을 할당해 이전 상태에서 삭제할 정보를 결정한다. 1은 정보를 유지한다는 것이고, 0은 폐기를 의미한다. 입력 게이트는 현재 상태에 저장할 새로운 정보를 결정한다. 출력 게이트는 이전 및 현재 상태를 고려해 0부터 1까지의 값을 할당해 현재 상태의 정보를 출력한다.
2. RNN 구조 및 기울기 소실 문제
RNN (Recurrent Nerual Network) 는 인풋이 여러번의 순환을 걸쳐 아웃풋으로 나오는 구조이고, tanh layer 를 모듈로 사용해 이전 정보가 지속할 수 있도록 체인을 걸어놨다.
RNN 은 Back propagation through time 역전파 방식을 사용하기 때문에 타임스텝이 크면 깊은 네트워크가 되어 Vanishing / Exploding Gradient 를 일으키게 된다. 이러한 문제 해결을 위해 LSTM 셀이 제안되었고 장기메모리를 가질 수 있도록 개발되었다.
3. LSTM 셀
마찬가지로 체인으로 연결되어 있지만 한개의 tanh layer 가 아닌 4개의 layer 가 서로 정보를 주고 받는다. ht 를 short term memory, ct 를 long term memory 라 볼 수 있다.
a) Cell State: 정보는 바뀌지 않고 그대로 흐르게 한다.
b) Forget gate: cell state 에서 sigmoid layer 를 걸쳐서 어떤 정보를 버릴지 결정한다.
c) Input gate: 앞으로 들어오는 정보 중 어떤 것을 cell state 에 저장할지 결정한다. sigmoid layer 를 거쳐 어떤 값을 업데이트 할지 결정한 다음 tanh layer 에서 새 vector 를 만든다.
d) Cell state update: 여기서 업데이트를 진행한다.
e) Output gate: 어떤 정보를 output 으로 내보낼지 정한다. 먼저 sigmoid layer 에 input data 를 넣어 output 정보를 정하고 cell state 에 tanh layer 를 넣어 sigmoid layer output 과 곱해 output 으로 내보낸다.