이 글을 읽기 전에
해당 내용은 08-02 장단기 메모리(Long Short-Term Memory, LSTM) - 딥 러닝을 이용한 자연어 처리 입문 을 보고 공부한 내용입니다. 잘못된 부분이 있다면 댓글 부탁드립니다.
아래의 내용을 보기 전에 RNN을 먼저 공부하고 오시는 것을 추천드립니다!
https://kyull-it.tistory.com/139
LSTM (Long Short-Term Memory)
SimpleRNN에서는 짧은 Sequence에 대해서만 효과를 보인다는 단점이 있다. x_1에 대한 정보량이 점점 h_t로 갈수록 옅어지는 것이다. 아주 긴 문장에서 문장의 뒷부분에서 초반에 나온 단어에 대해 고려해줄 수 없다는 한계가 있는 것이다. → 장기 의존성 문제 (the problem of Long-Term Dependencies)
이를 보완해주기 위해 나온 것이 LSTM; Long Short-Term Memory; 장단기 메모리이다. 기억할 것은 기억하고, 잊을 것은 잊는 전략으로 데이터를 학습한다.
- 은닉층의 메모리 셀 구성 : 입력게이트, 망각/삭제 게이트, 출력 게이트
- 메모리 셀 상태로는 1) 은닉상태 h_t, 2) 셀 상태 C_t를 사용한다.
1. 입력게이트(Input Gate) : 현재 정보를 저장하기 위한 게이트
2. 삭제게이트(Forget Gate) : 기억을 삭제할 정보의 양을 정해줄 게이트
3. 셀 상태(Cell State) : 선택된 기억을 다음으로 넘겨주기 위한 연산을 수행.
- t시점의 셀상태 C는 삭제 게이트의 결과와 입력게이트에서 선택된 기억의 결과값을 더하여, 다음 셀로 넘어간다.
- 삭제게이트 : f_t의 값은 이전 시점의 입력을 얼마나 반영할 것인지에 대한 것.
- 입력게이트 : i_t ⊗ g_t 의 값은 현재 시점의 입력을 얼마나 반영할 것인지에 대한 것.
- 주의! : 이렇게 구해진 Cell state는 Memory state라고도 불림.
4. 출력게이트(Output Gate) : 다음으로 넘겨줄 현재 은닉상태를 계산.
- 입력데이터에 대해 은닉상태에 대한 feed forward 연산을 수행함
- feed forward 결과값과 현재 셀 상태의 출력게이트 결과값에 대해 하다마르 곱을 수행함
- 주의! : 이렇게 구해진 hidden state는 Carry state / Output state라고도 불림.
* python, tensorflow, numpy로 구현한 LSTM 모델 cell의 연산 source code는 제 Github에서 보실 수 있습니다.
https://github.com/kyull-it/My-Neural-Networks/blob/main/LSTM.ipynb
정리 요약
- 이전 뉴런의 은닉 상태, 셀 상태의 값을 다음 뉴런으로 전달한다.
- 입력게이트, 삭제게이트에서 기억/삭제할 정보의 양 = 현재의 셀 상태를 계산한다. (입력데이터와 이전 은닉 상태로 연산)
- 출력게이트에서 기억/삭제할 정보를 결정한다. = 현재의 은닉 상태를 계산한다.
(출력데이터=SimpleRNN과 동일 + 현재 셀 상태와 연산)
'AI > Fundamental' 카테고리의 다른 글
다양한 관점에 따른 변수의 종류 모음. (수학, 데이터) (0) | 2023.10.16 |
---|---|
정규화란? Normalization, Regularization 정규화 종류에 대해서 알아보자. (0) | 2023.09.13 |
Activation Function 활성화 함수 (Sigmoid, Softmax, tanh, ReLU) 사용 이유, 그래프, 성질 (0) | 2023.08.24 |
RNN(Recurrent Neural Network) 순환신경망 공부하기 (2) | 2023.06.14 |
Confusion Matrix로 분류모델 성능평가 지표(precision, recall, f1-score, accuracy) 구하는 방법 (0) | 2023.01.26 |