본문 바로가기
Drawing (AI)/DeepLearning

Long Short-Term Memory (LSTM)

by 생각하는 이상훈 2023. 5. 5.
728x90

Vanilla RNN의 한계

기본을 뜻하는 Vanilla RNN은 time-step이 길어질수록 정보량이 손실되어 시점이 길어지면 x1과 같은 초반부의 정보의 영향력은 거의 없어지게 된다. 이러한 문제를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 한다.

위와 같은 Vanilla RNN을 보완하여 아래와 같은 LSTM을 만들었다.


LSTM 구조

LSTM은 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정한다. 요약하면 LSTM은 은닉 상태(hidden state)를 계산하는 식이 전통적인 RNN보다 조금 더 복잡해졌으며 셀 상태(cell state)라는 값을 추가하였다.

셀 상태는 Ct로 위와 같이 이전 시점의 셀 상태를 다음 시점의 셀 상태를 구하기 위한 입력으로서 사용된다.

 

은닉 상태의 값과 셀 상태의 값을 구하기 위해서 새로 추가 된 3개의 게이트를 사용한다. 각 게이트는 삭제 게이트, 입력 게이트, 출력 게이트라고 부르며 이 3개의 게이트에는 공통적으로 시그모이드 함수가 존재한다. 시그모이드 함수를 지나면 0과 1사이의 값이 나오게 되는데 이 값들을 가지고 게이트를 조절한다.

 

1) 입력 게이트

입력 게이트는 현재 정보를 기억하기 위한 게이트이다. 가중치가 곱해진 x값을 각각 시그모이드함수와 하이퍼볼릭탄젠트 함수를 통과시킨 두값을 이용하여 기억할 정보의 양을 결정한다.

 

 

2) 삭제 게이트

삭제 게이트는 기억을 삭제하기 위한 게이트이다. 현재 시점 t의 x값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지나게 된다. 시그모이드 함수를 지나면 0과 1 사이의 값이 나오게 되는데, 이 값이 곧 삭제 과정을 거친 정보의 양이다. 0에 가까울수록 정보가 많이 삭제된 것이고 1에 가까울수록 정보를 온전히 기억한 것이다.

 

 

 

3) 셀 상태

셀 상태에서 계산을 진행하기전에 삭제게이트에서 어느정도의 기억을 잃은 상태이다. 입력게이트에서 구한 gt와 it값에 원소별 곱을 진행한다. 입력 게이트에서 선택된 기억을 삭제 게이트의 결과값과 더한다. 이 값을 현재 시점 t의 셀 상태라고 하며, 이 값은 다음 t+1 시점의 LSTM 셀로 넘겨진다. 

 

 

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

출력 게이트는 현재 시점 t의 x값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지난 값이다. 해당 값은 현재 시점 t의 은닉 상태를 결정하는 일에 쓰이게 된다. 셀 상태의 값이 하이퍼볼릭탄젠트 함수를 지나 -1과 1사이의 값이 되고, 해당 값은 출력 게이트의 값과 연산되면서, 값이 걸러지는 효과가 발생하여 은닉 상태가 된다. 은닉 상태의 값은 또한 출력층으로도 향한다.


작동과정

아래와 같이 연속적으로 연결되어 있는 구조에서 가중치와 입력값을 주고 받는다.

하나의 셀을 살펴보면 노란색 네모로 표시되어있는 Neural Network Layer를 activation function이 각각의 메모리를 특정 조건, 방식으로 전달한다. Neural Network Layer를 시그모이드 함수와 tanh함수를 이용하여 연산을 하여 메모리값을 전달한다.

예시를 한번 살펴보자.

위와 같이 boy 즉 소년에 해당하는 내용이 입력되면 boy라는 정보는 input layer를 통해 흐르며 망각 당하지 않고 전달되어 boy에 해당하는 단어 뿐만 아니라 성별에 영향을 받는 뒤의 단어들에도 영향을 준다.


Practical Intuition

첫번째 예시는 줄의 시작에서 민감하게 받아들이다가 한줄이 약 80자로 이루어졌다는 점을 고려해서 줄의 끝이 나는 것을 추정하고 대상을 추적하는 셀의 모습이다.

두번째 예시는 " " 큰따옴표를 기준으로 활성화되어 대상을 추적하고 이해하는 것을 보여주는 것이다. 간단한 예로는 따옴표가 나타났다면 닫는 따옴표가 나와야할것이므로 해당 내용을 추적하는 셀의 모습이다.

세번째는 소스코드에서 살펴보자. if조건문과 같이 중요한 부분들을 집중 추적하고 괄호가 닫히는 것을 추적하는 셀의 모습이다.

또다른 셀은 코드의 식이 중첩되고 깊어지면 추적하여 가중치를 부여한다.

위의 예시들의 셀은 물론 사람이 직접 학습시킨 내용이 아니라 신경이 알아서 학습하면서 진화하고 중요한 내용을 결정한 내용이다. 따라서 실제로는 95%의 셀들은 아래와 같이 우리가 전혀 이해할 수 없는 구조를 갖고 있다.

다음은 모델이 다음에 올 문자를 예측하는 모습이다. 맨 윗줄의 초록색은 hidden state가 활성화 되었을때의 모습이고 파란색은 비활성화된 모습이다. 그리고 아래의 붉은색 예측들은 진할수록 정확한 예측인 것이다. 아래의 셀은 URL에 반응하여 활성화되는 것이 분명하게 보인다.


 

 

 

 

728x90

'Drawing (AI) > DeepLearning' 카테고리의 다른 글

Word Embedding(2)  (0) 2023.05.14
Word Embedding(1)  (2) 2023.05.11
Recurrent Neural Network  (0) 2023.05.02
Udemy - 딥러닝의 모든 것(Softmax & Cross-Entropy)  (0) 2023.04.23
Udemy - 딥러닝의 모든 것(CNN)  (0) 2023.04.06