티스토리 뷰
아래 블로그를 보고 학습한 내용을 정리한다.
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
LSTM (Long Short-Term Memory)
- RNN(Recureent Neural Network)의 일종
- Vanila RNN의 취약점인 장기 의존성을 학습하기 위해 고안되었다.
- 현재는 기본적인 RNN은 거의 안쓰고 LSTM이 널리 사용된다.
LSTM은 어떻게 장기 의존성을 학습할 수 있을까??
- 기본적인 RNN에서는 gradient vanishing 문제를 해소하기 위해 학습 단계에서 여러 트릭을 사용한다.
- 반면, LSTM은 아예 명시적으로 과거의 정보를 다음 스테이트로 넘기는 구조를 사용하여 장기 의존성을 학습한다.
LSTM의 핵심 - Cell State와 Gate
Cell State
- LSTM은 4개의 레이어를 가지고 있는데, 이 레이어 중 핵심은 cell state이다.
- cell state는 과거의 데이터를 다음 타임 스텝으로 전달하는 역할을 한다.
- cell state에서는 약간의 선형적인 연산만 하면서 체인을 따라 정보가 쭉 흘러간다.
- 이런 구조는 정보를 전달하기 용이한 구조이다.
Gate
- LSTM은 gates를 통해 셀스테이트에 정보를 선택적으로 흐르도록 조절한다.
- 게이트는 시그모이드 레이어와 pointwise 곱 연산으로 구성된다.
- 시그모이드는 0과 1사이의 숫자를 결과 값으로 내며, 각 컴포넌트가 다음 스테이트로 얼마나 흘러가야 하는지를 나타낸다.
- LSTM은 셀스테이트의 정보를 보호하고 조절하기 위한 3개의 게이트를 가진다.
Step-by-step LSTM walk through
Forget gate
- 어떤 정보를 셀스테이트에 전달할 것인지 정하는 단계이다.
- 직전 히든스테이트의 값 h_(t-1)과 현재의 인풋을 받아 weight를 곱한 후 시그모이드를 취한 것이다.
- 각 값들은 0과 1사이의 값을 취하는데, 0이면 정보를 하나도 흘러보내지 않음을 1이면 그대로 전달하는 것을 의미한다.

Input gate layer & tanh layer
- cell state에 저장할 새로운 정보를 결정하는 단계이다.
- 이 단계는 두 부분으로 구성된다.
- input gate layer라고 불리는 시그모이드 레이어가 어떤 값을 업데이트 할 것인지 정한다.
- tanh layer가 셀 스테이트에 더해질 후보인 tilde C_t를 생성한다.
- 그리고 이 둘이 결합되어(elementwise product) 다음 스테이트에 더해질 정보를 생성한다.

- 다음은 이제까지 계산된 값을 이용해 cell state를 갱신하는 단계이다.
- 이전 cell state 값인 c_(t-1)에 forget gate의 값을 곱한다.
- 그리고 input gate * tilde c_t를 더한다.
- 이 값은 업데이트 되어야할 새로운 정보이다.

- 마지막으로 셀스테이트의 정보를 사용하여 아웃풋을 내놓는 단계이다.
- 먼저 셀스테이트의 정보 중 어떤 부분을 아웃풋으로 내보낼 것인지를 시그모이드 레이어에서 정한다.
- 셀스테이트에 tanh를 취한 후 이 중 일부의 정보만 내보내도록 시그모이드 게이트와 곱한다.