LSTM과 GRU...

뭔가 업계에서 표준용어가 되는 것으로 모잘라 현대인이면 상식으로 알고 있어야 하는 용어가 된 듯 하다.

RNN에서 뭔가 memory를 오래 유지하지 못해서 생기는 문제를 개선하기 위해 나온 것이 LSTM이고 LSTM의 parameter를 줄여서 동일한 기능을 얻도록 한 것이 GRU로 이해된다.

기억이라고 말하는 것과 memory라고 말하는 것은 뭔가 어감의 차이가 있다. 기억이라고 하면 뭔가 공학과는 거리가 먼 느낌인 대신 memory라고 하면 컴퓨터 부품/구성요소가 생각나니까. memory는 예전 결과를 가지고 지금 현재의 입력을 처리하기 위해서는 필수적인 것이라 신호처리적인 관점으로 바라보면 이해가 빨라진다.

LSTM은 RNN을 좀 더 복잡하게 만들어서 parameter를 더 다양하게 적용할 수 있게 한 거다. 입력/출력/RNN/망각에 대한 각각의 처리기가 따로 붙는다.

GRU는 이걸 좀 줄여서 상태를 갱신 할 것인가, 상태를 리셋할 것인가에 대한 것만 있게 된다. 어쨌든 RNN이 갖는 단점을 보완한 거다. 이를테면 그냥 일반적인 feedforward network이 문맥 파악을 할 수 없다면 (그러니까 현재 입력에 대한 1:1 매핑만 할 수 있다면), RNN의 경우는 직전의 처리 결과에 연관된 정도로만 문맥파악이 되는 반면 LSTM/GRU의 경우는 예전 입력된 값들에 의한 처리 결과가 얼마나 오래 영향을 미쳐야 하는지 학습시킬 수 있다.