본문 바로가기
AI

DL : RNN : LSTM (Long-Short-Term Memory)

by 월곡동로봇팔 2020. 3. 10.

1. Vanilla RNN의 한계점

vanilla RNN의 한계점

앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다.

하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다.

바닐라 RNN의 시점(time step)이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생합니다.

뒤로갈수록 정보량의 크기가 적어지는 현상이 벌어집니다. (Sigmoid의 Gradient Vanishing과 같은 현상)

이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 합니다.


2. Vanilla RNN 내부

vanilla RNN

ht = tanh(Wx xt+Wh ht1+b)
yt = Wy ht

바닐라 RNN은 xt ht1이라는 두 개의 입력이 각각의 가중치와 곱해져서 메모리 셀의 입력이 됩니다.

그리고 이를 tanh 함수의 입력으로 사용하고 이 값은 은닉층의 출력인 은닉 상태가 됩니다.

2020/03/10 - [machine_learning/DL] - DL : RNN (Recurrent Neural Network)

 

DL : RNN (Recurrent Neural Network)

1. RNN 등장 배경 피드 포워드 신경망은 입력의 길이가 고정되어 있어 자연어 처리를 위한 신경망으로는 한계가 있었습니다. 결국 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이 필요 (RNN의 재귀함..

mambo-coding-note.tistory.com

자세한 Vanilla RNN에 대한 설명은 위를 참조하기 바랍니다.


3. LSTM (Long-Short-Term Memory)

LSTM은 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정합니다.

 

요약하면 LSTM은 은닉 상태(hidden state, ht)를 계산하는 식이 전통적인 RNN보다 조금 더 복잡해졌으며 셀 상태(cell state)라는 값을 추가하였습니다. (hidden state, ht와 cell state, Ct)

 

위의 그림에서는 t시점의 셀 상태를 Ct로 표현하고 있습니다.

셀 상태는 위의 그림에서 왼쪽에서 오른쪽으로 가는 굵은 선입니다.

셀 상태는 은닉 상태처럼 이전 시점의 셀 상태가 다음 시점의 셀 상태를 구하기 위한 입력으로서 사용됩니다.

은닉 상태값과 셀 상태값을 구하기 위해서 새로 추가 된 3개의 게이트를 사용합니다.

 

각 게이트는 삭제 게이트, 입력 게이트, 출력 게이트라고 부르며 이 3개의 게이트에는 공통적으로 시그모이드 함수가 존재합니다. 시그모이드 함수를 지나면 0과 1사이의 값이 나오게 되는데 이 값들을 가지고 게이트를 조절합니다.

 

  • 이하 식에서 σ는 시그모이드 함수를 의미합니다.
  • 이하 식에서 tanh는 하이퍼볼릭탄젠트 함수를 의미합니다.
  • Wxi,Wxg,Wxf,Wxo xt와 함께 각 게이트에서 사용되는 4개의 가중치입니다.
  • Whi,Whg,Whf,Who ht1와 함께 각 게이트에서 사용되는 4개의 가중치입니다.
  • bi,bg,bf,bo는 각 게이트에서 사용되는 4개의 편향입니다.

(1) 입력 게이트

입력 게이트는 현재 정보를 기억하기 위한 게이트입니다. 

it=σ(Wxi xt+Whi ht1+bi)
gt=tanh(Wxg xt+Whg ht1+bg)
  • it : 현재 시점 t의 x값과 입력 게이트로 이어지는 가중치 Wxi를 곱한 값과 이전 시점 ht-1가 입력 게이트로 이어지는 가중치 Whi를 곱한 값을 더하여 sigmoid 함수를 지납니다.
  • gt : 현재 시점 t의 x값과 입력 게이트로 이어지는 가중치 Wxi를 곱한 값과 이전 시점 ht-1가 입력 게이트로 이어지는 가중치 Whg를 곱한 값을 더하여 tanh 함수를 지납니다.

시그모이드 함수를 지나 0과 1 사이의 값과 tanh 함수를 지나 -1과 1사이의 값 두 개가 나오게 됩니다.

두 개의 값을 가지고 이번에 선택된 기억할 정보의 양을 정합니다.

(2) 삭제 게이트

삭제 게이트는 기억을 삭제하기 위한 게이트입니다. 

ft=σ(Wxf xt+Whf ht1+bf)

현재 시점 t의 x값과 이전 시점 ht-1가 시그모이드 함수를 지나게 됩니다.

sigmoid 함수를 지나면 0과 1 사이의 값이 나오게 되는데, 이 값이 곧 삭제 과정을 거친 정보의 양입니다.

0에 가까울수록 정보가 많이 삭제된 것이고 // 1에 가까울수록 정보를 온전히 기억한 것입니다

(3) 셀 상태(장기 상태)

셀 상태 Ct를 LSTM에서는 장기 상태라고 부르기도 합니다.

Ct=ftCt1+itgt

ftCt1는 삭제 게이트에서 일부 기억을 잃은 상태입니다.

itgt는 입력게이트에서 선택된 기억할 값입니다.

이 둘을 더한 값을 현재 시점 t의 셀 상태, Ct라고 하며, 이 값은 다음 t+1 시점의 LSTM 셀로 넘겨집니다.

 

만약 삭제 게이트의 출력값인 ft가 0이 된다면, 이전 시점의 셀 상태값인 Ct1은 현재 시점의 셀 상태값을 결정하기 위한 영향력이 0이 되면서, 오직 입력 게이트의 결과만이 현재 시점의 셀 상태값 Ct을 결정할 수 있습니다. 이는 삭제 게이트가 완전히 닫히고 입력 게이트를 연 상태를 의미합니다.

반대로 입력 게이트의 it값을 0이라고 한다면, 현재 시점의 셀 상태값 Ct는 오직 이전 시점의 셀 상태값 Ct1의 값에만 의존합니다. 이는 입력 게이트를 완전히 닫고 삭제 게이트만을 연 상태를 의미합니다.

 

결과적으로 삭제 게이트는 "Ct-1 때문에 이전 시점의 입력을 얼마나 반영할지" 를 의미하고,

입력 게이트는 "현재 시점의 입력을 얼마나 반영할지" 를 결정합니다.

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

ot=σ(Wxo xt+Who ht1+bo)
ht=ottanh(ct)

출력 게이트는 현재 시점 t의 x값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지난 값입니다.

해당 값은 현재 시점 t의 은닉 상태를 결정하는 일에 쓰이게 됩니다.

 

ht를 단기 상태라고 하기도 합니다. 은닉 상태는 장기 상태의 값이 tanh 함수를 지나 -1과 1사이의 값입니다.

해당 값은 출력 게이트의 값과 연산되면서, 값이 걸러지는 효과가 발생합니다.

단기 상태의 값은 또한 출력층으로도 향합니다.

댓글