딥러닝

LSTM(Long Short-Term Memory)과 GRU(Gate Recurrent Unit)

jeongpil 2021. 8. 21. 14:15

안녕하세요! 오늘은 바닐라 RNN의 장기 의존성 문제를 보완한 RNN 모델인 LSTM과 GRU에 대해 알아보겠습니다.

 

 

1. LSTM

  1-1. 삭제 게이트

  1-2. 입력 게이트

  1-3. 셀 상태 (장기 상태)

  1-4. 출력 게이트와 은닉 상태 (단기 상태)

2. GRU

 

1. LSTM

 

LSTM은 은닉층의 메모리 셀에 삭제 게이트, 입력 게이트, 출력 게이트를 추가하여 필요하지 않은 기억은 지우고, 기억해야 할 정보를 저장합니다.

 

LSTM은 바닐라 RNN에 비해 은닉 상태를 계산하는 식이 더 복잡해졌으며 셀 상태라는 값을 추가했습니다.

 

아래의 그림에서 t시점의 셀 상태를 C(t)로 표현하고 있습니다.

 

LSTM은 RNN과 비교하여 긴 시퀀스의 입력을 처리하는데 뛰어납니다.

 

 

 

 

LSTM의 전체적인 흐름은 다음과 같습니다.

 

1. 이전 시점의 장기 기억 C(t-1)이 삭제 게이트를 지나면서 삭제될 부분은 삭제됩니다.

 

2. 삭제될 부분이 삭제된 장기 기억의 셀에 g(t)가 입력 게이트를 지나면서 정해진 중요한 부분 덧셈연산을 통해 저장됩니다.

 

3. 만들어진 C(t)는 추가 변환 없이 바로 출력으로 보내집니다.

 

4. 마지막으로 2에서 만들어진 셀이 tanh 함수로 전달되고 출력 게이트에 의해 걸러집니다. 이는 단기 상태 h(t)를 만듭니다.

 

1-1. 삭제 게이트 (forget gate)

 

 

 

삭제 게이트는 위 그림의 f(t)로 제어되며 장기 상태의 어느 부분이 삭제되어야 하는지 제어하는 역할을 합니다.

 

현재 시점의 입력 x와 이전 시점의 은닉 상태가 시그모이드 함수를 지나게 됩니다.

 

시그모이드 함수의 결과는 0과 1사이의 값을 지니는데, 이 값이 삭제 과정을 거친 정보의 양을 뜻합니다.

 

C(t)와 곱연산을 하기 때문에 시그모이드 함수의 결과값이 0에 가까울수록 정보가 많이 삭제된 것이고 1에 가까울수록 온전한 상태에 가까운 것입니다.

 

 

1-2. 입력 게이트 (input gate)

 

 

 

입력 게이트는 위의 그림의 i(t)로 제어되며 장기 상태의 어느 부분이 기억되어야 하는지 제어하는 역할을 합니다.

 

i(t)는 시그모이드 함수를 지나 0과 1사이의 값을 갖고 g(t)는 tanh 함수를 지나 -1과 1사이의 값을 갖습니다.

 

이 두 개의 값을 통해 기억할 정보의 양을 정합니다.

 

 

1-3. 셀 상태 (장기 상태)

 

 

 

셀 상태 C(t)를 LSTM에서는 장기 상태라고도 부릅니다.

 

C(t)는 C(t-1)이 삭제 게이트와 입력 게이트를 거쳐 만들어지는 셀입니다.

 

삭제 게이트의 출력값인 f(t)가 0이면,

 

이전 시점의 셀 상태값인 C(t-1)은 현재 시점의 셀 상태값을 결정하기 위한 영향력이 0이 되고 현재 시점의 셀 상태는 오직 입력 게이트의 결과가 결정하게 됩니다.

 

 

반대로, 입력 게이트의 출력값인 i(t)가 0이 된다면,

 

현재 시점의 셀 상태값은 오직 이전 시점의 셀 상태값인 C(t-1)에만 의존합니다.

 

즉, 삭제 게이트는 이전 시점의 입력을 얼마나 반영할지를 제어하고, 입력 게이트는 현재 시점의 입력을 얼마나 반영할지를 제어하는 역할을 합니다.

 

 

1-4. 출력 게이트와 은닉 상태 (단기 상태)

 

 

 

출력 게이트는 위의 그림의 o(t)로 제어되며 장기 상태의 어느 부분을 읽어서 현재 시점의 h(t)와 y(t)로 출력해야 하는지 제어합니다.

 

즉, 현재 시점의 입력값 x와 이전 시점의 은닉 상태가 시그모이드 함수를 지난 값인 o(t)는 현재 시점의 은닉 상태를 결정하게 됩니다.

 

은닉 상태를 단기 상태라고도 말하며, tanh 함수를 지난 장기 상태의 값은 -1과 1 사이의 값이 되고

 

이 값은 출력 게이트의 값과 연산되면서 값이 걸러지는 효과가 발생하며 은닉 상태가 됩니다.

 

 

2. GRU

 

 

 

GRU는 LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서, 은닉 상태를 업데이트하는 계산을 줄인 모델입니다.

 

성능은 LSTM과 유사하지만 복잡했던 LSTM의 구조를 간단하게 만들었습니다.

 

GRU는 업데이트 게이트와 리셋 게이트 두 가지의 게이트만 존재합니다. 

 

z(t)가 업데이트 게이트이고 r(t)가 리셋 게이트 입니다.

 

z(t)가 LSTM의 삭제 게이트와 입력 게이트 역할을 합니다.

 

업데이트 게이트의 출력값인 z(t)가 1이면, 삭제 게이트가 열려 이전 시점의 셀 상태값인 C(t-1)은 현재 시점의 셀 상태값에 영향을 미치지 못하고 1-1=0 이 되어

 

입력 게이트가 닫혀 현재 시점의 입력이 C(t)에 영향을 미치지 못합니다.

 

GRU에는 출력 게이트가 존재하지 않습니다.

 

즉, 전체 상태 벡터가 매 타임 스텝마다 출력됩니다.

 

그러나 리셋 게이트가 이전 상태의 어느 부분이 주 층인 g(t)에 노출될지 제어하는 역할을 합니다.

 

 

 

이렇게 RNN의 장기 의존성 문제를 해결한 보완된 RNN 모델인 LSTM과 GRU에 대해 알아보았습니다.

 

 

 

 

Reference

 

위키독스의 딥 러닝을 이용한 자연어 처리 입문 (https://wikidocs.net/48558)

핸즈온 머신러닝(2판)