🔹 시작하며, 흐름 정리
Lecture 5에서는 RNN-LM에 대해 배웠다! RNN은 input 길이에 제한이 없었고, 매 step마다 같은 Weight를 적용했다. 각 step에서 ouput을 만드는 건 선택이었다. RNN을 이용하니 기존 LM의 문제들을 많이 극복했지만, Vanishing gradient problem이라는 심각한 문제가 있었다. 그래서 등장한 것이 이번 글에서 알아볼 LSTM이다. LSTM은 RNN에서 메모리를 분리해보면 어떨까?라는 질문으로부터 등장했다. RNN이 가지고 있는 메모리는 장기기억을 할 수 없기 때문이다.
🔹 LSTM이란?
LSTM이란 장단기 메모리(Long Short-Term Memory RNNs)이다. time step마다 hidden state $h^{(t)}$ 와 cell state $c^{(t)}$가 존재한다. 두 state는 길이가 n인 벡터이다. cell state는 장기 정보를 저장한다. LSTM은 cell로부터 정보를 읽고 지우고 쓸 수 있다. 어떤 정보가 지워지고 써지고, 읽히는지에 대한 선택은 세 개의 gate에 의해 결정된다. 3개의 gate는 Forget gate, Input gate, Output gate이다. 이 gate들도 길이가 n인 벡터이다. 매 time step마다 gate의 각 원소들은 열리거나(open(1)), 닫힐 수 있다.(close(0)) 혹은 그 사이의 값이 될 수도 있다. 아래 이미지는 LSTM의 구조를 나타낸다.
◾️ Forget gate
- cell state로부터 어떤 것을 유지하고, 어떤 것을 잊을지 결정한다.
- 1이면 cell state에 담겨 있는 이전의 정보들을 모두 보존하겠다는 의미이고, 0이면 모든 내용을 버리겠다는 의미이다.
◾️ Input gate
- 새로운 cell에 어떤 것을 써준지 결정한다.
◾️ Output gate
- hidden state의 ouput으로 어떤 것을 내보낼지 결정한다.
RNN에서 기울기가 소실되는(혹은 폭발하는) 문제점이 RNN만의 문제는 아니다. 딥러닝을 비롯한 모든 Neural 아키텍처에서 발생한다. 하지만 이전의 정보를 전달하는 방식으로 문제를 완화시켰다. 우리가 살펴본 LSTM도 그런 원리로 문제를 해결한 것이다.
'자연어처리' 카테고리의 다른 글
[CS224N] #9. Pretraining (0) | 2024.05.24 |
---|---|
[자연어처리, CS224N] Lec8 : Self-Attention and Transformer (2) | 2024.04.30 |
[자연어처리 CS224N] #5-2 Neural Language Model, Perplexity (0) | 2024.03.26 |
[자연어처리 CS224N] #5-1. n-gram Language Model (1) | 2024.03.24 |
[자연어처리 CS224N] #2-3. GloVe (2) | 2024.03.24 |