LSTM은 전 time step에서 서로 다른 역할을 하는 Cell state vector와 Hidden state Vector를 입력으로 받습니다.
또한 LSTM은 forget/input/output gate가 존재하는데 이 gate들을 통해 이전 time step에서 넘어온 Cell state vector를 적절하게 변환하는데 사용합니다.
Cell state vector는 기억해야할 필요가 있는 모든 정보를 담고 있는 벡터이고
Hidden state vector는 현재 time step에서 예측값을 내는 output layer에 입력으로 사용되는 벡터로서 Cell state가 가지는 많은 정보에서 해당 timestep의 예측값에 직접적으로 필요한 정보만을 filtering한 벡터입니다.
LSTM은 이런 Cell state vector / Hidden state vector를 각 timestep에서 업데이트 하는 과정이 기본적으로 덧셈에 기반한 연산이기 때문에 RNN에 비해 멀리 있는 time step까지 gradient를 큰 변형없이 전달해 줄 수 있어 gradient vanishing / explosion 문제를 피하고 long term dependencies 문제를 해결할 수 있습니다.