DL

LSTM(Long Short-Term Memory)

math_tbro 2022. 1. 10. 01:53

개요

RNN 에서의 문제점 : 입력과 출력 시점이 멀어질수록 학습이 잘 안되는 현상(Long-Term Dependency)

ex) “나는 민수와 밥을 먹고 있다. 그는 피자를 좋아해.” 라는 짧은 문장에서 “그” 는 “민수”라는 것을 쉽게 알 수 있다. 하지만 “나는 오늘 오후에 민수랑 만나기로했다. 근데 나가기전 지갑을 놓고와서 조금 늦었다. 그리고 밥을 먹기로 했는데 민수가 피자를 좋아해서 그냥 피자를 먹기로 했다.” 이렇게 길어지면 “그” 에 대한 판단을 하려면 문장 앞까지 가야한다.

이에서 보듯이 RNN은 가중치와 활성함수가 누적되어 곱해지기 때문에 결과는 과거의 정보를 점점 잊는다.

LSTM 의 기본구조

RNN에서는 하나의 활성함수를 사용해 문제를 해결했는데 LSTM은 다양한 활성함수를 사용하고 반복하면서 많이 복잡해보이는 모습이다.

LSTM만 확대해보자

(Ct1C_{t-1}: 이전 Cell의 정보 , ht1h_{t-1}: 이전 시점 cell의 출력 데이터)

Ct1C_{t-1}

LSTM의 핵심인 Ct1C_{t-1}은 RNN에는 없었던 새로운 개념이다.

항상 업데이트 되는 부분이고 이것은 과거의 어떤 정보를 갖고 있는지 현재의 데이터를 얼마나 더할 것인지를 조절한다.

이것은 Forget Gate 와 Input Gate 2개와 연결된다.

Forget Gate

과거 메모리를 얼마나 기억할 것인가에 대한 의사결정을 해주는 Gate.

아래 수식에 따라 시그모이드 활성함수를 적용시킨 0에서 1사이의 값을 출력하는 Forget Gate를 표현받는다.

ft=σ(Wf[ht1,xt])f_t = \sigma (W_f \cdot [h_t-1, x_t])

만약 출력 ftf_t가 0이라면 이전 시점의 cell state 와 결합하여 과거의 메모리는 모두 잊고 1이면 온전히 다 기억한다.

Input Gate

현재 정보를 과거 메모리에 얼마나 더할 것인가 에 대한 의사결정을 하는 Gate.

Sigmoid와 Tanh 활성 함수가 적용된 두 개의 모듈로 구성된다.

  • sigmoid : 얼만큼 정보를 줄지를 정한다
  • Tanh : Cell state에 더해질 후보 값 gtg_t를 만든다.

it=σ(Wi[ht1,xt])i_t = \sigma(W_i \cdot [h_{t-1},x_t])
gt=tanh(Wc[ht1,xt])g_t = tanh(W_c \cdot [h_{t-1},x_t])

위 forget gate와 input gate를 종합해서 다음 식을 구할 수 있다.

Ct=ftCt1+itgtC_t = f_t * C_{t-1} + i_t*g_t

출력값 hth_t

σt=σ(W0[ht1,xt])\sigma_t = \sigma(W_0 \cdot [h_{t-1},x_t])
ht=σttanh(Ct)h_t = \sigma_t * tanh(C_t)

출력값도 시그모이드를 사용해서 Cell state 정보 중 어떤 부분을 출력으로 내보낼지를 결정해준다.

LSTM은 RNN의 단점을 극복하면서 뛰어난 예측력을 갖고 있어 많이 사용되고 있다. 하지만 너무 복잡해서 연산속도가 느리다는 단점이 있어서 이걸 간소화한 GRU가 개발되었다.

관심가지고 있어야겠다.

'DL' 카테고리의 다른 글

[논문 리뷰] U-GAT-IT(GAN)  (0) 2022.05.13
GAN(Generative Adversarial Networks)  (0) 2022.01.10
RNN(Recurrent Neural Network  (0) 2022.01.10
딥러닝 핵심 알고리즘 (batch,gra_desc,avti_func)  (0) 2022.01.09
딥러닝)Optimizer 알고리즘  (0) 2022.01.09