RNN을 개선한 LSTM과 GRU 구조 알아보기

1. LSTM

 

일반적인 RNN(Vanilla RNN)의 구조

 

 

LSTM(Long Short Term Memory)의 구조

 

 

조금 더 자세히 살펴보면 이상한 것이 여러가지 있다

 

 

LSTM의 핵심 idea는 cell state에 있다

 

 

공장에서 컨베이어벨트 박스가 흘러들어가는 모습을 상상해보자.

 

노동자들이 박스 하나 집어서 이상없는지 확인하고 다시 올려서 그대로 보내듯이

 

이전에 가공한 정보를 그대로 흘려보내는 컨베이어벨트가 cell state이다.

 

 

1. forget gate

 

이제 입력 $x_{t}$와 이전 hidden state($h_{t-1}$)에서 나온 조합된 잠재정보가 흘러들어가면서 forget gate에서는 어떤 정보를 버릴지 결정한다

 

 

버려야할 정보는 sigmoid에 의해 0과 1 사이 값으로 압축이 됨

 

 

2. input gate

 

input gate로 흘러들어간 입력정보와 hidden state 정보는 sigmoid로 요약시키는 정보(i)와 cell state로 저장시킬 정보($\hat{C}$)로 나뉜다.

 

아래 그림 보면 알겠지만 $h_{t-1}$와 $x_{t}$가 forget gate로도 들어가고 input gate로도 들어가는거

 

forget으로 들어갔다가 남은게 input으로 들어간다고 착각할 수도 있는데 그건 아니다

 

 

첫번째 줄에서 구한 i가 sigmoid로 요약시킨 정보고

 

두번째 줄에서 구한 것이 그 요약정보 중 cell state로 올려보낼 가중치를 구한 것이다.

 

 

3. update cell

 

이제 cell state에서 흘러나오는 정보 $C_{t-1}$중 forget gate에서 구한 버려야할 정보에 대한 가중치 f를 이용하여

 

버려야할 정보량을 계산하고 input gate에서 구한 가중치 C를 이용하여 저장시킬 정보량 i * C와의 합으로

 

cell state에서 흐르는 정보 $C_{t-1}$을 $C_{t}$로 업데이트한다

 

 

4. output gate

 

마지막으로 남은 정보를 그대로 output으로 보내지않고 적절하게 조작하는 작업이다.

 

하나는 hidden state로 흘려보내고 다른 하나는 이 layer에서 output으로 보냄

 

남은 정보라고 하니까 또 오해의 소지가 있는데

 

그림 보면 $h_{t-1}$와 $x_{t}$가 그대로 output gate로 또 들어감

 

 

입력값과 hidden state에서 들어온 정보중 버려야할 정보와 다시 저장시킬 정보를 구분하여 cell state에서 흘러들어오는 정보를 업데이트한다.

 

남은 정보를 적절하게 조작하여 hidden state와 output으로 나눠 보낸다.

 

참고로 의외로???? <근데 나는 parameter수가 당연히 많을 것 같은데?> parameter 수가 대단히 많다고한다. 실제로도 많고

 

2. Gated Recurrent Unit(GRU)

 

LSTM을 더욱 간단하게 만든 모델

 

 

 

 

reset gate와 update gate, hidden state만 이용했다.

 

그러니까 hidden state에서 흘러들어오는 정보와 입력 정보 x중 reset gate에서 버릴 정보를 결정할 것이고

 

update gate에서 저장시킬 정보와 버릴 정보를 hidden state에 업데이트하고

 

output으로 layer의 output값과 나머지는 hidden state로 보내겠지?

 

모형이 LSTM보다 더 간단하니까 Patameter 수가 더 적을 것이라고 예상이 된다.

 

Parameter 수가 더 적으니까 LSTM보다 학습도 쉽고 성능이 더 좋을 것 같은데

 

실제로 많은 경우 LSTM보다 성능이 더 좋다고한다.

 

그러나 transformer가 나오면서 이들은 잘 쓰지 않게되었다

 

TAGS.

Comments