이제 데이터 공부 안하는 블로그

LSTM (Long Term Short Memory, 장단기기억망) & GRU (Gated Recurrent Unit) 본문

딥러닝

LSTM (Long Term Short Memory, 장단기기억망) & GRU (Gated Recurrent Unit)

공사노비 2021. 8. 19. 12:55

 * 제가 공부하기 위해 만든 자료입니다. 혹시 틀린 부분이 있다면 댓글로 알려주시면 수정하겠습니다.

 

 

RNN은 기울기 소실과 기울기 폭발이라는 문제가 있었다. 이러한 기울기 정보 크기의 문제를 해결하기 위해 고안된 것이 LSTM (Long Term Short Memory, 장단기기억망) 이다.

 

LSTM (Long Term Short Memory,  장단기기억망)

LSTM은 RNN에 기울기 정보 크기를 조절하기 위한 Gate를 추가한 모델이다. 요즘은 RNN은 잘 사용하지 않고 대부분 LSTM을 사용한다고 한다. 

 

기울기 소실 문제를 해결하기 위해 LSTM에는 3가지 게이트(gate)가 추가되었다.

 

  1. forget gate : 과거 정보를 얼마나 유지할 것인가?
  2. input gate : 새로 입력된 정보는 얼마만큼 활용할 것인가?
  3. output gate : 두 정보를 계산하여 나온 출력 정보를 얼마만큼 넘겨줄 것인가? 

 

그리고 hidden-state 외에도 활성화 함수를 직접 거치지 않는 상태인 cell-state 가 추가되었다. cell-state는 역전파 과정에서 활성화 함수를 거치지 않아 정보 손실이 없기 때문에 뒷쪽 시퀀스의 정보에 비중을 결정할 수 있으면서 동시에 앞쪽 시퀀스의 정보를 완전히 잃지 않을 수 있다. 

 

LSTM 의 사용

여러 언어 모델 뿐만 아니라 신경망을 활용한 시계열 알고리즘에도 대부분 LSTM을 사용하고 있다. 

 

GRU (Gated Recurrent Unit)

GRU는 LSTM의 구조를 간단화 시킨 버전이라고 생각하면 된다. GRU는 LSTM와 마찬가지로 기울기 소실로 인한 문제에 대한 해결책은 유지하면서, 은닉 상태를 업데이트 하는 계산을 줄인 버전이다.

 

 

GRU 셀의 특징

  1. LSTM에서 있었던 cell-state가 사라졌습니다.
    cell-state 벡터  ​와 hidden-state 벡터 ​가 하나의 벡터 ​로 통일되었습니다.
  2. 하나의 Gate 가 forget, input gate를 모두 제어합니다.
    가 1이면 forget 게이트가 열리고, input 게이트가 닫히게 되는 것과 같은 효과를 나타냅니다.
    반대로 가 0이면 input 게이트만 열리는 것과 같은 효과를 나타냅니다.
  3. output 게이트가 없어졌습니다.
    대신에 전체 상태 벡터  가 각 time-step에서 출력되며, 이전 상태의  의 어느 부분이 출력될 지 새롭게 제어하는 Gate인  가 추가되었습니다.

 

 

GRU와 LSTM 중 어떤 것의 성능이 더 낫다라고 단정지어 말할 수 없기 때문에 상황에 맞게 적절한 것을 사용해야 한다고 한다. 일반적으로 데이터 양이 적을 때는 매게 변수의 양이 적은 GRU가 조금 더 낫고, 데이터 양이 많을 때는 LSTM을 사용하는 것이 더 낫다고 알려져 있다고 한다. 

 

 

참고자료 : https://wikidocs.net/22888