장기 의존성 문제(the problem of Long-Term Dependencies)
- 은닉층의 과거의 정보가 마지막까지 전달되지 못하는 현상
바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존함
아래 그림 처럼 x1의 정보량은 시점이 길어질수록 점점 옅어짐
-> 장기 의존성 문제 발생

LSTM은 이러한 바닐라 RNN의 단점을 극복한 모델
LSTM 구조

바닐라 RNN과의 차이점
- 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가
-> 불필요한 기억을 지우고, 기억해야할 것들을 정함
- 은닉 상태를 계산하는 식이 조금 더 복잡
- 긴 시퀀스 데이터 처리에 성능이 훨씬 더 좋음
- 셀 상태(cell state) 라는 값이 추가 됨, C(t)
-> 은닉 상태처럼 이전 시점의 셀 상태가 다음 시점의 셀 상태를 구하기 위한 입력으로서 사용됨

삭제 게이트, 입력 게이트, 출력 게이트를 통해서 은닉 상태, 셀 상태를 구함

입력 게이트

- 현재 시점(t)의 정보를 기억하기 위한 게이트
- i(t) : x(t)와 h(t-1)이 입력됨. 시그모이드 함수를 지나 0과 1사이의 값을 가짐
- g(t) : x(t)와 h(t-1)이 입력됨. 하이퍼볼릭탄젠트 함수를 지나 -1과 1사이의 값을 가짐
-> 이 두 개의 값을 가지고 이후에 셀 상태를 계산함
삭제 게이트

- 기억을 삭제하기 위한 게이트
- f(t) : x(t)와 h(t-1)이 입력됨. 삭제 과정을 거친 정보의 양을 의미함. 시그모이드 함수를 지나 0과 1사이의 값을 가짐
-> 1에 가까울 수록 정보가 덜 삭제된 것
셀 상태 구하기

1. 입력 게이트에서 구한 g(t)와 i(t)를 성분곱 -> t 시점에서 기억할 값
2. 삭제 게이트에서 구한 f(t)와 c(t-1)을 성분곱
3. 이 두가지 결과값을 더함 -> t시점에서의 셀 상태 (c(t))
삭제 게이트의 출력값 f(t) 0~1
- 삭제를 많이 할수록 0에 가까워짐
- f(t)가 0이라면, t-1시점의 셀 상태가 t시점의 셀 상태를 결정하기 위한 영향력이 0이 됨
-> 입력 게이트의 결과만이 t시점의 셀 상태를 결정
-> 삭제 게이트 완전히 닫히고, 입력 게이트를 연 상태
-> 이전 정보를 많이 완전히 삭제하고, 현재 정보만 가져가는 상태
입력 게이트의 출력값 i(t) 0~1
- i(t)가 0이라면, t시점의 셀 상태는 오직 t-1시점의 셀 상태에만 의존함
-> 입력 게이트 완전히 닫히고, 삭제 게이트를 연 상태
삭제 게이트
- 이전 시점의 입력(c(t-1))을 얼마나 반영할지
입력 게이트
- 현재 시점의 입력(g(t))을 얼마나 반영할지
셀 상태란, 현재 시점의 입력과 이전 시점의 입력을 얼마나 반영할지 정하는 것.
출력 게이트와 은닉 상태

출력 게이트
- x(t)와 h(t-1)를 시그모이드 함수에 넣어서 출력 -> o(t)
은닉 상태
- c(t)를 하이퍼볼릭탄젠트 함수에 넣어서 출력된 값과, 출력 게이트의 출력값(o(t))을 곱함 -> h(t)
- c(t) 는 -1 ~ 1 사이의 값. 출력 게이트의 값과 연산되면서 값이 걸러지는 효과 발생. 은닉 상태
요약
- 입력 게이트, 망각 게이트를 통해 셀 상태 도출
- 셀 상태로 현재 시점의 입력과 이전 시점 입력을 얼마나 반영할지 정함
- 은닉 상태로 다음 시점으로 보낼 값을 정함
'Python > NLP' 카테고리의 다른 글
| 어텐션(인코더-디코더 Attention, Dot-Product Attention) (0) | 2023.06.27 |
|---|---|
| 시퀀스-투-시퀀스(seq2seq) (0) | 2023.04.11 |
| 워드투벡터(Word2Vec) (0) | 2023.03.20 |
| 워드 임베딩이란 (0) | 2023.03.20 |
| RNN 언어 모델(RNNLM) (0) | 2023.03.19 |