About me
home
Portfolio
home
🏕️

LSTM 정리

LSTM은 RNN의 은닉층의 메모리 셀입력 게이트, 망각 게이트, 출력 게이트를 추가되었다. 또한 셀 상태(cell state)라는 것을 추가되었다.
3개의 게이트는 불필요한 기억을 지우고 기억해야할 것들을 정합한다. 그리고 공통적으로 Sigmoid( σ σ ) 함수가 존재하여 0 과 1 사이의 값이 나오게 된다.
따라서 역전파로 Weight 8개랑 bias 4개를 업데이트 하게 된다.
1) 입력 게이트(input gate)
현재 정보를 기억하기 위한 게이트이다.
xtx_tht1h_{t-1}이 들어와 각각 다른 Weight를 곱해주어 sigmoid 함수를 지난 것은 iti_t가 되고 , tanhtanh 함수를 지난 것은 gtg_t가 된다.
2) 삭제 게이트(forget gate)
기억을 삭제하기 위한 게이트이다.
xtx_tht1h_{t-1}이 들어와 sigmoid 함수를 거쳐 0과 1 사이의 값이 나오게 된다. 0에 가까울수록 정보가 많이 삭제된 것이고, 1에 가까울수록 정보를 많이 기억하는 것이다.
3) 셀 상태(cell state) : CtC_t
Cell state는 컨베이어 벨트 역할을 한다. 이거 덕분에 state가 오래 경과되더라도 gradient가 전파가 잘 된다.
이전 셀과 삭제 게이트에서 나온 ftf_t를 곱하고 입력게이트에서 나온 it i_tgtg_t를 곱한다. 그리고 삭제 게이트의 결과값입력 게이트에서 선택된 기억을 더하게 된다. 이는 그대로 또 다음 시점의 메모리 셀로 넘어가게 된다.
ftf_titi_t는 sigmoid 함수를 통과한 0~1 사이의 값이다.
만약 ftf_t가 0에 가까우면 이전 셀 상태의 영향력이 줄어들고 입력 게이트의 영향력이 커져 입력 게이트의 결과만이 현재 시점의 셀 상태 CtC_t를 결정하게 된다.
만약 iti_t가 0에 가까우면 현재 시점의 셀 상태는 이전 시점의 셀 상태 (Ct1C_{t-1})의 영향만 받게 된다.
삭제 게이트이전 시점의 입력을 얼마나 반영할건지 결정 입력 게이트현재 시점의 입력을 얼마나 반영할건지 결정
4) 출력 게이트(output gate)
마찬가지로 xtx_tht1h_{t-1}이 들어와 sigmoid 함수를 지나 oto_t를 만들게 되고 이를 현재 시점의 셀 상태와 곱하여ht h_t를 만들게 된다.
hth_t는 output으로 나가기도 하고 다음 메모리 셀의 ht1h_{t-1}로 들어가게 된다.
물론 아직 hth_t인 것이지 yt y_t 는 아니다.