LSTM, GRU 이론 및 개념 (Long short Term Memory, Gated Recurrent Unit)

최우석·2024년 1월 18일

DeepLearning

목록 보기
2/4
post-thumbnail

🎈 RNN (Recurrent Neural Network)

RNN은 sequence 데이터 처리에 강점을 가진 모델로써 시계열, 자연어 등의 분야에서 많이 사용되고 있다. 간단히 설명하자면 RNN은 이전 time step tt의 정보(hidden state)를 다음 time step으로 전달하며 연산되는 방식이다.

하지만 RNN의 경우 time step이 너무 길다면 앞 쪽 time step의 정보가 뒷쪽 time step까지 충분히 전달되지 못하는 문제가 있다. 이를 장기 의존성 문제(long-term dependeices)라고 한다.

이를 해결하기 위해 LSTM, GRU 모델이 등장하였다.

RNN의 자세한 정리 내용 아래 참고
RNN 이론 및 개념


🎈 LSTM (Long Short Term Memory)

LSTM을 보기 전 RNN의 구조를 먼저 알아야한다.

📌 RNN 구조


RNN은 전 time step의 hidden state를 넘겨주기 위에 위와 같은 식으로 연산을 진행한다. 즉, 이전 time step t1{t-1} 와 현재 time step tt의 가중치 합으로 계산한다.


📌 LSTM 구조

LSTM은 hidden state뿐만 아니라 cell state라는 역할이 있으며 forget gate, input gate, output gate를 통해 연산이 진행 된다.
gate의 이름에서 알 수 있듯이 어떠한 정보를 잊을지 유지할지를 선택하며 long term과 short term에 대한 정보를 고려할 수 있다.

Cell State

Cell state는 LSTM에서 위와 같이 표현된다. Cell state는 hidden state와 마찬가지로 이전 time step의 cell state를 다음 time step으로 점겨준다. Cell state의 주 역할은 gate들과 함께 적용하여 정보를 선택적으로 적용, 전달하는 것이다.

Forget Gate

Forget gate는 말 그대로 과거의 정보를 기억할지 잊을지를 결정하는 gate이다. 전 timet step의 hidden state ht1h_{t-1}와 현재 입력 xx에 대한 연산을 진행하고 활성화 함수로 시그모이드 함수를 적용한다. (시그모이드 함수는 0~1 사이의 값을 출력)
따라서 ftf_t의 값이 0에 가까울수록 많은 정보를 잊고, 1에 가까울수록 많은 정보를 기억한다.

Input Gate

Input Gate는 현재의 정보를 기억할지 잊을지를 결정하는 gate이다. 그림에서 볼 수 있듯이 이전 시점의 hidden state ht1h_{t-1}와 현 시점의 입력 xx을 통해 연산을 진행한다.
이때, 다른 가중치와 활성화 함수를 사용하여, it,gti_t, g_t를 연산한다.
iti_t 는 시그모이드 값으로 계산되므로 0~1 사이의 값을 갖고, forget gate와 마찬가지로 현재 정보를 기억할지 잊을지를 결정한다.
gtg_ttanhtanh 값으로 계산되므로 -1~1 사의의 값을 갖고, 현재 정보를 cell state에 얼마나 더할지를 결정한다.

Cell state Update

앞선 두개의 gate에서 과거 정보를 위한 ftf_t, 현재 정보를 위한 it,gti_t, g_t를 원소별 곱을 통해 계산한다.
이때, ftf_tCt1C_{t-1}의 원소 곱 연산을 통해 이전 시점의 cell state를 얼마나 유지할지 계산하고,
iti_tgtg_t의 원고 곱 연산을 통해 현재 기억할 정보를 결정한다.
최종적으로, ('과거에서 유지할 정보' + '현재에서 유지할 정보')를 통해 현재 time step의 cell state를 update한다.

Output Gate

Output gate는 어떠한 정보를 output 할지를 결정하는 gate이다.
먼저 input data Wxoxt+Whoht1+boW_{xo}x_t+W_{ho}h_{t-1}+b_o 를 시그모이드 함수를 통과시켜 output data oto_t를 결정한 후, cell state CtC_ttanhtanh 함수에 넣어 oto_t와 곱하여 최종 output으로 내보낸다.

🎈 GRU (Gated Recurrent Unit)

📌 GRU 구조

GRU는 기존 LSTM의 구조를 좀 더 간단하게 개선한 모델이다.

LSTM의 경우 forget gate, input gate, output gate 3개의 gate가 있지만, GRU의 경우에는 reset gate, update gate 2개만의 gate를 사용한다.
또한 cell state, hidden state를 합쳐 하나의 hidden state로 표현한다.

Reset Gate

Reset gate를 구하는 공식은 위 그림에서 (2)번식에 해당한다.
이전 time step ht1h_{t-1}와 현 시점의 xx를 활성화 함수 시그모이드에 적용하여 계산한다. 결과값은 0~1 사이이며 이 결과를 (3)번 식에서처럼 계산하여 이전 hidden state의 값을 얼마나 활용하는지를 결정한다.

Update Gate

Update gate는 LSTM의 iuput, forget gate와 비슷한 역할을 하며 과거와 현재의 정보를 얼마나 반영할지에 대한 비율을 구하는 것이 핵심 역할이다. (1)번식을 통해 구한 ztz_t는 현재 정보를 얼마나 사용할지 반영하며, (1zt1-z_t)는 과거 정보를 얼마나 사용할지를 반영한다. 이 정보를 반영하여 (4)번 식에서 출력값 hidden state를 계산한다.

0개의 댓글