欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World

DS | Data Science/ML | Machine Learning

[DL Basic] LSTM : Long Short Term Memory

_껀이_ 2022. 10. 5. 19:36
728x90
반응형

일반적으로 많이 보게 되는 차트 데이터와는 다르게 Sequence 데이터는 문맥 혹은 순서 등에 따라 의미가 달라질 수 있다. 가령. 말을 할때, 주어, 목적어, 서술어 등의 요소 중 어떤 한 요소를 누락시켜서 말하거나 순서가 뒤섞여서 말을 한다거나 했을 때 의미가 달라지는 것이 하나의 예이다.

그렇기 때문에 Sequence 데이터를 다루는 머신러닝 모델은 이러한 context 정보(문맥, 순서 등)를 반영하기 위해서, 과거의 데이터를 종합적으로 고려하여 다음 글자를 예측하는 방식을 취한다.

하지만 이때 데이터의 길이가 길어지게 되면 과거 데이터의 누적값이 매우 커지게 되어 여러 문제가 발생할 수 있다. 이러한 문제를 해결하고자 고안된 방법이 RNN이다.

 

1. RNN

RNN은 누적되는 과거데이터를 단순화하여 반복시키는 것에서 시작한다. 과거 데이터 추출한 일정한 크기의 memory 값과 현재 input 데이터를 조합하여 output 값을 계산하는 방식이다.

 

RNN 구조

위와 같이 hidden 레이어에서는 그전 스텝에서의 정보를 담은 V를 다음 스텝으로 이전시켜 context를 유지할 수 있도록 계산하게 된다.

하지만 이때 Long-Term dependecies라는 문제가 발생할 수 있다. sequence의 길이가 길어져서 context가 길어질수록 처음에 등장했던 데이터에서 오는 정보들이 간과될 수 있다는 것이다. 또, RNN은 hidden 값에서 activation function이 중첩된다. 이때 activation function이 sigmoid면, gradient vanishing 문제가 발생할 수 있고 ReLU라면 gradient exploding 문제가 발생할 수 있다. 

 

이렇게 단순히 과거의 데이터에서 정보를 이전하여 중첩시키는 방법으로는 문제가 많기 때문에 적절히 조절하여 반영하려는 아이디어가 LSTM이다.

 

 

 

2. LSTM

LSTM은 기존의 RNN이 가지고 있던 activation function이 하나가 두개의 input과 두개의 output을 계산하여 연산을 단순화했기에 발생한 문제점을 해결하였다. 

RNN

LSTM은 세 개의 게이트가 있다.

 

1) Forget gate : 이전 스텝까지의 정보를 요약하는 Cell state와 현재 스텝에서의 input 데이터 중 어떤 걸 얼마나 잊게 할 것인지를 결정하는 gate

2) Input gate : input 데이터 중 어떤 부분을 Cell state에 얼마나 반영하게 결정하는 gate

3) Output gate : Input gate와 Forget gate가 실행하고 나서 새로 업데이트 된 Cell state를 사용하여 output을 만들어 내고, 새로 생성된 hidden state를 다음 스텝으로 넘기는 gate

LSTM

동작 순서는 Forget gate, Input gate, Update Cell, Output gate로 진행되고, 각 gate를 수식으로 표현하면 다음과 같다.

 

 

이미지 출처 : 네이버커넥트 부스트캠프 AI Tech 강의자료, 구글링 등

728x90
반응형