ht : cell state vector를 한 번 더 가공하여 그 time step에서 노출할 필요가 있는 정보만을 남긴 filtering된 정보를 담는 vector
Long short-term memory
cell state, hidden state vector 계산 위한 중간 결과물
i : input gate. cell을 받음
f : forget gate. cell을 지움
o : output gate. 얼마나 cell을 공개시킬지 결정
g : gate gate. 얼마나 cell을 사용할 것인지 결정
w : 선형 변환 위한 matrix
2h : xt와 ht−1 모두 h의 dimension 가질 때. (h+h)=2h
각 gate는 cell state에서 흐를 수 있는 정보의 양 등을 결정
i,f,o,g vector들은 Ct−1를 적절하게 변환하는 데에 사용
Forget gate
- ft=σ(Wf⋅[ht−1,xt]+bf)
- ht−1와 xt가 만나는 곳에서 선형결합
- sigmoid 거친 뒤의 ft에서는 forget하지 않을 정도 기록
- (30%를 forget한다면 0.7로 기록)
- Ct−1의 값과 ft를 내적한 값을 x에 기록
생성된 정보들은 input gate에 의해 더해지거나 제외될 수 있음
- it=σ(Wi⋅[ht−1,xt]+bi)
- Ct=tanh(Wc⋅[ht−1,xt]+bc) → -1에서 1 사이 값 가짐
이전 cell state에 현재의 정보를 추가함으로써 새로운 cell state 생성
- Ct=ft⋅Ct−1+it⋅Ct
- ft⋅Ct−1를 통해 필요한 정보만 유지
cell state를 tanh 또는 ouput gate로 보냄으로써 hidden state 생성
hidden state를 다음 time step으로 보내고, 필요하다면 output으로 내보내거나 next layer로 보냄
- ot=σ(W0[ht−1,xt]+b0)
- ht=ot⋅tanh(Ct), output layer의 입력
- Ct는 기억해야 하는 모든 정보를 담고 있음
dimension별로 적절한 비율만큼 값들을 작게 만들어서 최종적인 ht 구성
필요한 정보만을 담고 있음
Gated Recurrent Unit(GRU)
What is GRU?
LSTM의 model 구조 경량화해서 적은 memory 요구량과 빠른 개선이 가능하도록 함
LSTM의 Ct(Cell state vector)와 ht(hidden state vector)를 ht로 일원화
2개의 독립된 gate를 통해 하던 연산을 하나의 gate만으로 계산하도록 함
- zt=σ(Wz⋅[ht−1,xt]), input gate
- rt=σ(Wr⋅[ht−1,xt])
- ht=tanh(W⋅[rt⋅ht−1,xt])
- ht=(1−zt)⋅ht−1+zt⋅ht(LSTM에서는 Ct=ft⋅Ct−1+it⋅Ct)
- LSTM의 ft가 1−zt로 작용하여 가중평균 내는 형태로 계산됨
input gate가 커지면 커질수록 forget gate에 해당하는 값이 작아짐
hidden state vector ht는 ht−1과 ht로 계산됨
Backpropagation in LSTM/GRU
덧셈을 통해서 원하는 정보를 만들어줌으로써 gradient vanishing, explosion 문제 해결