728x90
Background
RNN은 순차적 데이터를 처리하기 위해 만들어졌지만 input의 길이가 길어지면 이전에 일어난 사건을 바탕으로 나중에 일어나는 사건을 생각하지 못한다.
LSTM(Long Short-Term Memory)
파란선이 기존의 RNN이고 주황선이 Memory cell로 LSTM에서 추가된 부분이다.
Memory cell은 gate에 의해서 제어되며 정보를 저장하거나 잊어버리는 용도로 사용된다.
- 3개의 gate로 이루어져 있음
- Ct(Cell State 장기상태), ht(Hidden State) 등이 존재함
Forget gate
- \( C_{t-1} \)의 정보를 얼마나 잊을지에 관한 관계
- sigmoid 값이 0에 가까우면 이전 상태의 정보를 잊고, 1에 가까우면 이전 상태의 정보를 기억함
Input gate
- 현재 상태의 input(x)를 얼마나 기억할지에 대한 계산 수행
- \( h_{t-1} \)과 input(x) 값을 sigmoid와 tanh로 보냄
- sigmoid: 0 ~ 1 사이의 값으로 현재 input을 얼마나 기억할지 정함
- tanh: -1 ~ 1 사이의 값으로 현재 cell state에 더할 값을 준비함
즉, sigmoid를 통해 어떤 값을 업데이트할지 정하고 tanh로 전달함
state update
- forget gate, input gate 각각의 Hadamard product을 통해 두 값을 더한 것을 다음 상태의 cell state로 보냄
- forget gate, input gate 둘 다 0이라면 이전 단계의 cell state 그대로 넘어옴
- forget gate, input gate 둘다 1이라면 이전 단계의 cell state는 다 잊히고 현재 상태의 cell state가 넘어감
Output gate
- cell state에 대한 계산이 끝났으니 output을 구함
- Update가 완료된 cell state에 tanh를 적용하여 -1 ~ 1 사이의 값을 출력
- 입력된 값에서 나온 sigmoid 값을 tanh에서 나온 값과 곱해서 출력함
LSTM은 RNN에 비해 많은 weights를 가지고 있어(3개의 gate와 1개의 update) RNN보다 학습시간이 오래 걸린다.
https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr
728x90
'NLP' 카테고리의 다른 글
Seq2Seq + Attention 코드로 이해하기 (2) | 2023.12.15 |
---|---|
[NLP] NLP를 위한 CNN (0) | 2023.05.28 |
[NLP] RNN 실습 - Numpy, keras 구현 (0) | 2023.05.26 |
[NLP] RNN(Recurrent Neural Network) (0) | 2023.05.26 |
[NLP] 자연어데이터 전처리, NLTK (0) | 2023.04.03 |