이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음!
LSTM (Long Short Term Memory)
LSTM에 들어가기 전에 기존 RNN의 문제점에 대해 살펴본다. 이전까지 배운 RNN은 Vanilla RNN으로, 순환신경망의 기초 동작원리를 설명한다고 볼 수 있다. Vanilla RNN은 다음과 같은 문제점을 갖는다.
1. 장기의존성 (long-term dependency) : 시간 상 멀리 떨어진 입력의 영향이 약해진다. 즉 어떤 입력 데이터가 실제로 멀리 떨어진 입력에 대해 장기 의존성이 있음에도 불구하고 Vanilla RNN으로는 이를 파악할 수 없다. 따라서 순차열이 길어질수록 데이터의 정보가 서서히 사라진다. → 모델의 기억력이 짧다!
2. Gradient Vanishing and Exploding : Vanilla RNN의 구조는 아래와 같다.

입력데이터
3. 사실 Gradient Exploding은 간단히 막을 수 있다? → Gradient clipping
용어를 더 잘 이해하기 위해 Clip이 무엇인지 먼저 알아본다!

(사진출처 : clip (【동사】깎다 ) 뜻, 용법, 그리고 예문 | Engoo Words)
Clip은 '깎다'를 의미한다. numpy.clip(array, min, max)라는 넘파이 문법도 존재하는데, min보다 작은 값을 min으로 깎고, max보다 큰 값을 max로 깎는다고 이해하면 편하다. 이것을 클리핑(Clipping)이라고 부른다.
Gradient clipping은 위와 마찬가지로 gradient가 일정 크기 이상으로 커지지 못하게 클리핑 한다.
일정 크기 (
LSTM 구조
LSTM은 Vanilla RNN의 gradient vanishing 문제를 해결하기 위해 개발되었다. (gradient exploding은 clipping으로 해결한다.) LSTM이 어떤 구조를 가졌기에 gradient vanishing을 해결할 수 있는지 알아보도록 한다.

Vanilla RNN에서 Gradient vanishng을 발생하는 원인은 바로 가중치 행렬
위 LSTM cell 그림을 더 자세하게 살펴본다.
- Cell state (맨 위
) : 셀 상태 (장기 기억) - Hidden state (
) : 은닉 상태 (단기 기억) - Forget gate (
) - Input gate (
) - Candidate memory (
) : 새로운 기억 - Output gate (
) : 출력 = Sigmoid function
LSTM cell의 동작 과정
아래 설명된 내용은 이 글을 참고하였다. Long Short Term Memory | Architecture Of LSTM (analyticsvidhya.com)
1. Forget gate

예를 들어 Bob is a nice person. Dan on the other hand is evil 이라는 문장이 있다고 해보자. 단어가 순차적으로 입력되다가 person이 입력되었을 때 문장이 끝난다. 뒤이어 새로운 문장이 시작될 것이므로 forget gate는 'Bob ~~' 문장을 잊어야 하는데, 이 과정이 forget gate에서 수행된다.
Forget gate는 이전 시간의 hidden state
t-1 시간의 입력이 다음 시간 t의 cell state에 포함되어야 하는지 아닌지는
2. Input gate & Candidate memory

Input gate, candidate memory는 입력된 데이터를 cell state에 저장하는 역할을 수행한다.
예를들어 Bob knows swimming, He told me over the phone that he had served the navy for 4 long years 라는 문장이 입력되었다고 해보자. 이 문장에서는 Bob know swimming that he has served the Navy for four years 가 핵심 정보이고, he told all this over the phone은 그다지 중요하지 않아보인다. 즉 한 문장이 입력되었을 때, 그 중 중요한 정보는 Cell state에 넘기고 나머지는 걸러내는 작업이 필요한데, 이것이 Input gate에서 수행된다.
- Input gate는
를 입력받은 후 이를 가중합산( )하여 sigmoid를 통과한다. → forget gate와 아주 같은 작업을 수행한다. 는 를 이용하여 가중합산한 후 tanh를 거친다.- 위 두 결과를 요소별로 곱한 결과는 그대로 Cell state에 남아서 이번 시간 t에 기억할 새로운 값이 된다.

3. Output gate

LSTM의 어떤 Cell에서 output이 출력되어야 하는 경우가 있다. 이때 Output gate를 사용한다.
예를 들어 다음과 같은 문장이 있다고 해보자. 'Bob fought single handedly with the enemy and died for his country. For his contributions brave ____'
현재 입력된 단어가 brave라고 했을 때, brave는 형용사이므로 그 뒤에 나올 단어는 높은 확률로 명사라는 것을 알 수 있다. 여기서는 Bob이 가장 옳은 output이 될 것이다. 이처럼 현재 입력된 단어
- Cell state에 tanh를 적용하여 [-1, 1] 범위에서 정의되도록 scaling 한다.
를 가중합산한 결과에 sigmoid를 통과시킨다.- 위 두 결과를 요소별로 곱한 것이 바로 현재시간
의 hidden state = output이 된다.

이때 Cell state
Cell state (장기 기억) : Cell state는 forget gate, input gate의 매 time에서의 결과를 단순히 더한 것으로 생성된다. 따라서 가중치
새로운 사건이 입력될 때마다 조금씩 강화되거나 약화될 수 있으며 자주 사용하지 않으면 정보를 잊을 수 있다.
Hidden state (단기 기억) : 새로운 정보가 입력될 때마다 현재 Cell state와 t-1의 hidden state
Gradient vanishing이 생기지 않는 이유
Gradient vanishing을 발생시키는 범인은 바로 가중치 행렬
현재 시간
따라서 Cell state의 역방향 미분은 forget gate
GRU (Gated Recurrent Unit)
GRU는 LSTM의 장점을 유지하면서 gate 구조를 단순하게 만든 순환 신경망이다. LSTM은 Cell state가 있어 약간 복잡했는데 GRU는 Cell state를 없애고 hidden state가 장기 기억, 단기 기억을 모두 기억하도록 만들었다.
t-1 Hidden state
더하여 LSTM에서는 3가지 gate를 사용했지만 GRU는 Reset gate, Update gate 두 가지를 사용한다.

Reset gate

새로운 입력으로 만들어진 새로운 hidden state

과거의 기억
'딥러닝' 카테고리의 다른 글
[LLM] 2. 허깅페이스 트랜스포머 모델 학습하기 (0) | 2024.11.01 |
---|---|
[LLM] 1. 임베딩, 어텐션, 트랜스포머 모델들 (1) | 2024.11.01 |
13. RNN 코드실습 (0) | 2023.10.31 |
12. RNN (Recurrent Neural Network) 이론 (0) | 2023.10.06 |
VGG net 논문리뷰 + 실습 (0) | 2023.10.04 |