LSTM = Long Short-Term Memory

 

LSTM을 이해하기 앞서, RNN을 복습해보자.

 

RNN이란 Recurrence Neural Network라는 인공 신경망으로써, 자연어처리에 용이한 딥러닝 기법 중 하나이다.

recursive한 말 그대로 과거의 데이터를 누적하여 학습에 사용함으로써, 언어처리, 문장,맥락 등을 이해하기 위해서다.

RNN은 따라서 음성인식, 언어 모델링, 번역 등 다양한 분야에서 쓰이고 있다.

이 RNN의 핵심이 바로 LSTM이다.

 

LSTM은 RNN의 특별한 한 종류로, 특정 상황에서는 RNN보다 훨씬 효율적으로 해결할 수 있다.

 

RNN / LSTM 의 특징은 아래의 예시를 들어 설명할 수 있다.

 

1) 구름은 xx에 있다.  에서 xx를 예측하는것은 쉽다. 

하지만

2) 나는 프랑스에서 자랐다. 따라서 나는 자연스럽게 축구를 좋아한다. 그리고 나는 xx어를 유창하게 할 수 있다.

위 2번의 답을 예측하려면 정답에 필요한 정보를 얻기 위해 훨씬 앞 혹은 뒤에서 정보를 찾아야 한다.

따라서  정보를 얻기 위한 시간격차가 커지게 된다.

RNN은 안타깝게도 격차가 늘어날 수록 효율성이 매우 떨어진다고 한다.

 

GPT에 물어보니 기울기 소실, 기울기 문제 폭발 두 가지 때문이라고 한다.

LSTM은 RNN의 긴 시간격차로 발생하는 문제를 보완하기 위해 생겨난 아키텍쳐라고 한다.

 

이제 본격적으로 LSTM을 알아보자.

앞서 말했듯이, LSTM은 RNN에 비해 장기적인 문제를 해결하는데 탁월하다고 했다.

 

먼저 RNN의 구조와 LSTM의 구조를 그림을 통해 살펴보자.

< RNN > 

< LSTM > 

 

 

LSTM의 핵심

LSTM의 핵심 아이디어는 cell state이다. 아래에서 수평으로 그어진 윗 선을 말한다.cell state= 흐르는 물이라고 생각

LSTM은 cell state에 뭔가를 더하거나 없앨 수 있는 능력이 있는데,

이 능력은 gate라고 불리는 구조에 의해서 조심스럽게 제어된다.

 

Gate는 정보가 전달될 수 있는 추가적인 방법으로, sigmoid layer와 pointwise 곱셈으로 이루어져 있다.

 

LSTM의 첫 단계로는 cell state로부터 어떤 정보를 버릴 것인지를 정하는 것으로, sigmoid layer에 의해 결정된다.

 

그래서 이 단계의 gate를 "forget gate layer"라고 부른다. ( = 망각층 )

 

 

이 단계에서는 \(h_{t-1}\)과 \(x_t\)를 받아서 0과 1 사이의 값을 \(C_{t-1}\)에 보내준다. 그 값이 1이면 "모든 정보를 보존해라"가 되고, 0이면 "죄다 갖다버려라"가 된다.

 

아까 얘기했던 이전 단어들을 바탕으로 다음 단어를 예측하는 언어 모델 문제로 돌아가보겠다. 여기서 cell state는 현재 주어의 성별 정보를 가지고 있을 수도 있어서 그 성별에 맞는 대명사가 사용되도록 준비하고 있을 수도 있을 것이다. 그런데 새로운 주어가 왔을 때, 우리는 기존 주어의 성별 정보를 생각하고 싶지 않을 것이다.

 

< 망각층 >

 

다음 단계는 앞으로 들어오는 새로운 정보 중 어떤 것을 cell state에 저장할 것인지를 정한다.

먼저, "input gate layer"라고 불리는 sigmoid layer가 어떤 값을 업데이트할 지 정한다.

그 다음에 tanh layer가 새로운 후보 값들인 \(\tilde{C}_t\) 라는 vector를 만들고, cell state에 더할 준비를 한다.

이렇게 두 단계에서 나온 정보를 합쳐서 state를 업데이트할 재료를 만들게 된다.

 

다시 언어 모델의 예제에서, 기존 주어의 성별을 잊어버리기로 했고, 그 대신 새로운 주어의 성별 정보를 cell state에 더하고 싶을 것이다.

 

새 정보 유입 -> < input gate >

이제 과거 state인 \(C_{t-1}\)를 업데이트해서 새로운 cell state인 \(C_t\)를 만들 것이다. 이미 이전 단계에서 어떤 값을 얼마나 업데이트해야 할 지 다 정해놨으므로 여기서는 그 일을 실천만 하면 된다.

LSTM의 핵심

cell state가 존재하고 RNN과 달리 한 cell마다 네 개의 layer가 존재.

망각층과 입력층을 통해 cell을 계속 업데이트해가며 학습을 진행하는 메카니즘이다.

 

 

 

RNN과 비슷하다는 느낌이기 때문에 당연히 자연어처리에 특화되어 있고,

장기 데이터 처리, 학습, 예측에도 용이하기 때문에 시계열 데이터에도 유용하게 쓰인다고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

'부록' 카테고리의 다른 글

Resnet 논문 리뷰  (0) 2024.04.22
Style GAN & Style GAN2  (1) 2024.04.07
[Modeling] XGB Classifier + 그리드서치 / 베이지안 옵티마이저  (0) 2023.03.18
[딥러닝] 옵티마이저 [퍼온 글]  (0) 2023.03.06
Bayesian Optimization  (2) 2023.02.21

+ Recent posts