menu

딥러닝 LSTM이란?

LSTM이란?

RNN의 기본을 이해했으니 이제 RNN셀 가운데 많이 사용되는 LSTM 셀에 대해 알아보겠습니다. LSTM 네트워크 역시 RNN의 기본 구조를 그대로 사용하되, 기본 대신 LSTM 셀이 라는 조금 더 기능이 추가된 셀을 사용합니다. LSTM 셀에 대해 구체적으로 알아가기에 앞서 먼저 다음 예제를 보겠습니다. 아래 빈칸에 들어갈 영어 단어는 무엇일까요?? 

John is my best friend, we grew up together in same town.

he likes basketball and so dol (중략) 

John met his wife 10 years ago (중략) 

I have not seen her yel, (중략) 

__ is still my best friend. 

만약 전체 문장 속에 John과 wife 만 등장했다면 앞 문장들의 문맥을 통해 정답은 he인 것을 쉽게 유추할 수 있습니다. 또한 RNN을 사용한다면 단어들을 순차적으로 입력받아 반칸의 단어를 유추할 수 있을 것입니다. 하지만 문장이 길어질 경우 단순 RNN 셀을 사용할 때 성능이 많이 저조하다는 발견들이 잇따라 등장했고, 긴 시퀀스를 가진 입력을 가진 RNN의 성능 저하 원인을 직접 다룬 논문이 등장하게 됩니다. 논문은 경사 하강법으로 RNN 학습을 진행할 때 gradient vanishing 또는 gradient exploding으로 인해 모델이 최적화되지 않는다는 점을 설명합니다. 그리고 이러한 문제를 보완하고자 조금 더 기능을 추가해서 나온 셀이 LSTM 셀입니다. 

RNN 학습

RNN은 경사 하강법 기반 알고리즘으로 모델을 최적화합니다. 모델의 최적화는 모델 파라미터의 조정을 통해 이뤄집니다. 모델 파라미터(W)는 손실 함수(E)의 미분값의 반대 방향으로 조금씩 조정됩니다. 

예를 들어, E의 미분값은 다음과 같이 계산됩니다. 다소 복잡하게 보일 수 있지만 상태값(h) 은 이전 상태값에 영향을 받고, 이전 상태값은 그 상태값의 입력값에 영향을 받기 때문에 결과적으로 다음과 같은 계산 과정이 일어나게 됩니다. 

문제는 미분값을 연속해서 곱하는 과정에서 발생합니다. 만약 입력값이 100개 이상일 경우, En에 대한 미분값은 아래와 같은 계산 과정을 거치게 됩니다. 

gradient vanishing 

만약 연속해서 곱해지는 모든 미분값들이 1보다 작은 값이면 어떤 현상이 발생될까요? 현재 셀과 거리가 먼 셀들은 1보다 작은 값이 연속해서 곱해져서 결국 이과 아주 가까운 값이 되어 현재 셀에 거의 영향을 주지 못하게 됩니다. 즉, 멀리 있는 정보는 현재 셀에 거의 영향을 주지 못하게 되는 상황이 발생하며 이러한 현상을 gradient vanishing이라 부릅니다. 

gradient exploding 

반대로 연속해서 곱해지는 모든 미분값들이 1보다 클 경우에는 어떤 현상이 발생할까요? 현재 셀로부터 먼 셀의 파라미터는 거의 무한대에 가까운 값들이 더해져서 파라미터가 격변하게 되어 최적의 파라미터(W)를 못 찾게 됩니다. 이러한 현상을 gradient exploding이라 부릅니다.

LSTM 셀의 등장 

위 문제점을 해결하기 위해 등장한 셀이 바로 LSTM 셀입니다. LSTM은 순차적으로 입력되는 값이 길더라도 잊어야 할 기억은 잊고, 기억해야 할 정보는 기억해서 최적의 값을 출력합니다. LSTM이 긴 문장을 어떻게 처리하는지 알아보겠습니다. 

다음 그림에서 가장 큰 특징은 주황색 선이 셀에 추가됐다는 것입니다. 주황색 선은 메모리셀이라고 불립니다. 메모리셀은 과거의 정보를 기억해서 최초 단어가 John’이라는 정보를 활용 해 빈칸의 주어를 ‘he’로 출력합니다. 

또한 메모리셀은 불필요한 정보는 잊고, 필요한 정보는 저장하는 역할을 수행합니다. 다음 그림을 통해 메모리셀이 ‘John’이라는 정보는 줄이고(forget), ‘Jane’이라는 정보를 기억 (input)해서 주어를 ‘she’라고 출력하는 과정을 볼 수 있습니다.