LSTM(Long short Term Memory Network)
지난번에 포스팅된 RNN은 이전 정보를 이용할 수 있다는 장점이 있었지만,
이로 인해 따라오는 long term dependency 문제가 있었습니다.
이를 해결한 모델이 LSTM 입니다
LSTM은 RNN처럼 네트워크의 반복으로 이루어져 있지만, 내부 구조가 다르게 구성 되어있습니다.
RNN에서는 h_t-1만을 다음 단계로 전달하지만, LSTM은 cell state라는 것도 함께 전달해줍니다.
내부구조에서는 forget gate, input gate, output gate를 새롭게 구성하여 이용할 정보의 양을 조절해줍니다.
LSTM의 계산 과정
1) Forget gate
cell state에서 어떤 것을 버릴 것인지 결정하는 단계입니다.
Forget gate에서 이전 cell state C_t-1에 있는 각 요소에 대해 0과 1사이의 값을 생성합니다.
여기서 생성된 숫자 '1'은 완벽히 보존을 하는 것이고, 숫자 '0'은 완벽히 제거하는 것을 의미합니다.
Forget gate로 계산된 f_t는 C_t-1과 곱해져 이전의 cell state 정보를 얼마나 통과시킬지를 결정합니다.
2) Input gate
Input gate에서는 어떤 새로운 정보를 cell state에 저장/추가 할 것인가하는 업데이트 정보를 결정합니다.
sigmoid층에서는 어떤 값을 업데이트할지 결정하고,
tanh층에서는 state에 추가될 수 있는 새로운 후보값을 생성합니다.
3) Cell state 업데이트
오랜된 cell state인 C_t-1를 C_t로 업데이트하는 과정입니다.
forget gate를 통해 얻은 f_t를 곱해주어 잊기로 한 값들을 제거하고,
input gate를 통해 얻은 i_t와 C'_t를 이용하여 새로운 정보를 반영한 cell state로 업데이트합니다.
4) Output gate
무엇을 출력할지 결정하는 과정입니다.
Sigmoid함수와 tanh함수를 이용하여 현재의 C_t중에서 어떤 부분을 출력할지 정합니다.
최종적으로 정해진 output은 h_t로 출력되고, 다음단계 Cell에게도 전달됩니다.
결론
제가 생각했을 때 LSTM은 '정보들을 얼마나 사용할까?' 라는 기술이 탑재된거라고 생각합니다.
forget gate로 이전 정보들중에 필요 없는 것들을 버리고,
input gate로 현재의 입력값의 양을 조절하고,
output gate로 현재 출력할 값의 양을 조절하고
이상으로 Cell state와 3개의 gate를 사용하여 정보의 양을 조절함으로써
RNN의 long term dependency 문제를 개선한 모델 LSTM이었습니다!
출처
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
https://hyen4110.tistory.com/25