[딥러닝] Long Short-Term Memory(LSTM)

2026. 1. 23. 17:08·딥러닝

 

이번에는 Long Short-Term Memory(LSTM)에 대해 살펴보겠습니다. (본 내용은 고려대학교 김성범 교수님의 유튜브 강의와 연세대학교 이기복 교수님 피피티를 참고하여 정리한 것입니다.)

 

LSTM은 기존 RNN의 한계를 보완하기 위해 제안된 모델입니다. 그렇다면 RNN의 문제는 무엇이었을까요? 바로 Sequence 길이가 길어질수록 과거 정보 학습이 어려워지는 문제, 즉 기울기 소실(Gradient Vanishing) 현상입니다!

 

  • 혹시 RNN에 대해서 궁금하시다면 아래 링크에서 보시고 오시면 도움이 될 것 같습니다!
    • https://enjoy0life.tistory.com/52
 

[딥러닝] Recurrent Neural Network(RNN)

이번에는 RNN(Recurrent Neural Network, 순환 신경망)에 대해 정리해보겠습니다.(본 내용은 고려대학교 김성범 교수님의 유튜브 강의와 연세대학교 이기복 교수님 피피티를 참고하여 정리한 것입니다.)

enjoy0life.tistory.com

 

 

LSTM의 핵심 아이디어는 명확합니다. RNN에서 hidden state $h_t$를 계산하는 방식 자체가 장기 의존성 학습에 불리하다면, $h_t$를 구하는 구조를 바꾸자는 것입니다. 이를 위해 LSTM은 Cell State라는 별도의 정보 흐름을 도입하여, 중요한 과거 정보는 유지하고 불필요한 정보는 선택적으로 제거함으로써 장기 정보 전달이 가능하도록 설계되었습니다.

 

LSTM(Long Short-Term Memory)

LSTM은 기존 RNN에 Cell State라는 별도의 정보 흐름을 추가하고, 이를 조절하기 위한 3가지 Gate를 도입한 모델입니다. RNN보다 구조가 확장된 만큼 수식이 많아 처음엔 복잡해 보일 수 있습니다.(하지만 보면 별거 아닌!!!)

LSTM에서 사용하는 3가지 Gate는 다음과 같습니다. (각 Gate는 시점마다 계산되는 벡터라고 보면 됩니다.)

  1. Forget Gate($f_t$)
  2. Input Gate ($i_t$)
  3. Ouput Gate ($o_t$)

각 Gate가 어떤 정보를 버릴지/저장할지/출력할지를 결정하며, 이 과정을 통해 LSTM은 과거 정보를 더 안정적으로 유지 할 수 있습니다.

이제 각 Gate의 역할은 뒤에서 자세히 설명하고, 먼저 **$h_t$**가 만들어지는 흐름이 RNN과 어떻게 달라지는지 아래 그림으로 비교해보겠습니다.

RNN과 LSTM에서 h_t 를 구하는 방법

위 그림의 수식을 간단하게 표현하면 아래 수식처럼 정리가 됩니다.

$h_t$를 계산하기 위해 LSTM은 기존 RNN보다 식이 다소 길어집니다. 이때 사용되는 σ는 비선형 함수로, Sigmoid 함수를 의미합니다. 이처럼 LSTM은 Cell State와 Gate 구조를 통해 정보의 흐름을 조절함으로써, 기존 RNN에서 발생하던 기울기 소실(Gradient Vanishing) 문제를 완화할 수 있도록 설계되었습니다.

How?) 과거의 중요한 정보는 유지하고 불필요한 정보는 선택적으로 제거하면서, 장기 의존성 학습이 가능해집니다.

→ (정보를 선택·유지하는 역할은 Gate가 담당하지만, 아직 Gate를 다루지 않았으므로 지금은 전체 구조의 흐름만 이해하시면 됩니다!)

  • Cell State : 과거의 중요한 정보를 장기적으로 유지하는 곳!
  • Hidden State : Cell State를 기반으로 현재 시점에서 필요한 정보만을 반영한 출력값!

이렇게 두개의 State를 이해하시면 됩니다! 과거의 모든 시점의 정보를 저장하지말고 과거에서도 중요한 정보만을 담아서 은닉층을 만들자!

 

 

여기서 LSTM 구조를 다시보시면

기존 RNN에서는 Hidden State 하나만을 사용했지만, LSTM에서는 Cell State가 추가되었습니다. LSTM에서도 최종적으로 중요한 출력은 Hidden State이며, 이 Hidden State는 Cell State의 정보를 기반으로 계산됩니다. 이러한 구조를 통해 정보가 장기간 안정적으로 전달될 수 있으며, 그 결과 기존 RNN에서 발생하던 기울기 소실 문제를 완화할 수 있습니다.

 

여기서 계속 기억해야 할 점은, 우리가 구하고자 하는 값은 $h_t$라는 것입니다. 왜냐하면 모델의 최종 목표는 $\hat{y_t}$를 예측하는 것이고, 이는 다음과 같이 계산되기 때문입니다. $\hat{y_t}=h_t \cdot W_{hy}$

즉, 출력을 얻기 위해서는 Hidden State $h_t$를 정확히 계산하는 것이 핵심이며, LSTM에서는 이 $h_t$를 계산하기 위해 Cell State와 세 가지 Gate를 함께 사용합니다.

이제 $h_t$를 구하기 위한 식을 보겠습니다. LSTM에서 $h_t$는$h_t$$h_t = o_t \odot \tanh(c_t)$

여기서 $h_t$를 구하기 위해서는 아래 그림처럼 역순으로 풀어내야 합니다!

이 그림을 토대로 회로도 모양과 함게 임시 Cell State $\tilde{c_t}$와 Cell State ${c_t}$ 그리고 최종 목표인 $h_t$를 구해보겠습니다. 이때 아까 말했던 3가지 Gate에 대해 설명도 하겠습니다.

 

 

1. 임시 Cell State $\tilde{c_t}$

회로도에서 빨간 선을 따라가면, 다음과 같은 식을 얻을 수 있습니다. $\tilde{c_t}=tanh(W_{xh_g}x_t+W_{hh_g}h_{t-1}+b_{h_g})$ (여기서 $b_{h_g}$는 Bias term입니다.)

이는 t시점의 입력값 $x_t$와 그에 대응하는 가중치 $W_{xh_g}$, 그리고 이전 시점의 Hidden State $h_{t-1}$와 그에 대응하는 가중치 $W_{hh_g}$를 각각 곱한 뒤, 이를 모두 더해 비선형 함수 tanh를 적용하는 과정입니다. 이렇게 계산된 값이 바로 임시 Cell State $\tilde{c_t}$이며, 현재 시점에서 새롭게 후보로 생성된 정보를 의미합니다.

 

 

 

2.Cell State ${c_t}$

$c_t=f_t\cdot c_{t-1} +i_t\cdot \tilde{c_t}$

이제 Cell State $c_t$를 계산하기 위해 회로도의 빨간 선을 따라가 보겠습니다. 이 구간에서는 앞서 언급한 세 가지 Gate 중 두 가지 Gate, 즉 Forget Gate와 Input Gate를 지나게 됩니다.

Cell State $c_t$업데이트 식을 보면 $f_t$가 있죠? 이 식을 회로로 좀 더 자세하게 표현해보겠습니다.

 

빨간색 선를 따라가면 $f_t$를 구할 수 있습니다. 그때의 식은 $f_t = \sigma(W_{xh_f}x_t+W_{hh_f}h_{t-1}+b_{h_f})$이 되는 것을 알 수 있겠죠? 여기서가중치가 $W_{xh_f}$, $W_{hh_f}$라고 되어있는데 여기서 아래 첨자인 $f$는 이 파라미터들이 Forget Gate에 사용되는 가중치임을 나타내기 위해 붙인 것입니다!

 

LSTM에는 3개의 Gate가 존재하기 때문에, 각 Gate마다 서로 다른 가중치와 bias를 사용합니다. 따라서 Forget Gate뿐만 아니라, 다른 Gate들에서도 각각의 역할에 맞게 아래첨자가 구분되어 사용됩니다.

 

이 방식대로 그럼 이제 $i_t$를 똑같이 구할 수 있습니다!

 

똑같이 빨간색 회로를 따라가면 $i_t = \sigma(W_{xh_i}x_t+W_{hh_i}h_{t-1}+b_{h_i})$입니다! $f_t$와 다른 점은 가중치 파라미터만 다르죠! 나머지는 똑같습니다!

 

그럼 이제 $c_t$에 대한 식을 다 구했으니 $c_t$를 구하는 회로를 다시 살펴보겠습니다.

 

어느정도 이제 길이 보이죠? 회로를 따라가보면 $c_t=f_t\cdot c_{t-1} +i_t\cdot \tilde{c_t}$ 이 식이 나오는 것을 알 수 있습니다. 이렇게 최종적으로 $c_t$를 구할 수 있습니다

 

3.Hidden State ${h_t}$ ​

그럼 이제 저희가 최종적으로 구해야하는 것은 Hidden State니까 구하면 되겠죠? 빨간색 선을 따라가면 최종적으로 t시점에서의 Hidden State인 $h_t = o_t \cdot tanh(c_t)$가 구해지게 됩니다.

LSTM 구조

그럼 이제 여기서 h_t를 구하는 과정에서 Forget Gate( f_t), Input Gate(i_t), Output Gate(o_t)를 구했는데, 이게 왜 이름이 이렇게 지어졌고, 무슨 역할을 하는지를 좀 살펴봐야겠습니다.

 

1. Gate 계산하기

 

이제 본격적으로 앞서 언급한 세 가지 Gate가 어떻게 계산되는지 살펴보겠습니다. 세 Gate의 수식 구조는 서로 매우 유사하며, 차이점은 사용되는 가중치 파라미터뿐입니다. 즉, 각 Gate는 모두 현재 입력 $x_t$와 이전 시점의 Hidden State $h_{t-1}$를 입력으로 사용하지만, Gate 역할이 서로 다르기 때문에 각각 다른 가중치와 bias를 적용합니다.

이러한 구조를 통해 LSTM은 어떤 정보를 잊을지, 어떤 정보를 추가할지, 어떤 정보를 출력할지를 Gate별로 독립적으로 결정할 수 있습니다.

1-1. Forget Gate $f_t$

Forget Gate는 말 그대로 과거 정보를 잊기 위한 Gate입니다. 아래의 식을 통해 계산이 되어서 Forget Gate 값이 나오게 됩니다. 시그모이드 함수를 쓰기 때문에 Forget Gate의 값의 범위는 0 ~ 1입니다.

  • 1일 경우
    • 모두 기억하겠다.
  • 0일 경우
    • 모두 기억하지 않겠다.

아래 그림은 식을 통해 예시로 나온 값들이라고 생각하시면 됩니다.

아래 예시는 과거 정보가 모두 중요하다고 판단해서 Forget Gate에서 모두 1을 출력하게 되는 경우와 모두 0을 출력하게 되는 경우입니다.(이 예시는 극단적인 예시라고 보시면됩니다! 원활한 이해를 위해)

 

보통은 아래와 같은 그림으로 값이 나온다고 합니다. 그래서 Forget Gate와 c_{t-1}의 inner product를 통해서 값이 출력되죠!

1-2. Input Gate $i_t$

Input Gate는 현재 정보를 기억하기 위한 Gate입니다. Forget Gate와 계산 방식이 거의 똑같습니다. 파라미터만 다르다는 것!

1-3. Output Gate $o_t$

Output Gate는 Cell State에 저장된 정보 중 어떤 부분을 Hidden State로 출력할지 결정하는 Gate입니다. 즉, Forget Gate와 Input Gate가 Cell State를 업데이트하는 역할을 담당했다면, Output Gate는 업데이트된 Cell State를 기반으로 Hidden State를 계산하기 위해 사용됩니다.

이 과정을 통해 LSTM은 장기적으로 유지된 정보(Cell State) 중에서 현재 시점에 필요한 정보만을 선택적으로 Hidden State에 반영할 수 있습니다.

 

 

2. Cell State 업데이트하기

이제는 Cell을 업데이트 하기 위해 $c_t=f_t\cdot c_{t-1} +i_t\cdot \tilde{c_t}$ 이 값을 구해야하는데, 이때는 Forget gate, Input gate가 사용됩니다.

 

 

최종적으로 이 시점에서는 불피요한 정보는 잊고(Forget Gate), 추가할 정보는 추가해서(Input Gate) Cell State를 구성하게 됩니다.

 

 

3. Hidden State 업데이트 하기

최종적으로는 $h_t$를 업데이트하죠. 아래와 같은 연산을 통해서 Hidden State에 Cell State를 얼마나 반영할 것인지!를 정합니다.

이처럼 LSTM은 각각의 Gate를 통해 Cell State와 Hidden State를 단계적으로 업데이트하며, 중요한 정보는 유지하고 불필요한 정보는 제거합니다. 그 결과, 중요한 정보를 담은 은닉 상태(Hidden State)를 기반으로 최종적으로 더 정확한 예측을 수행할 수 있게 됩니다.

 

이렇게 LSTM까지 살펴봤는데, RNN보다 구조가 좀 복잡해서 계속 반복 복습을 하면 이해가 될 것 같습니다.

 

 

 

LSTM의 Gate는 왜 이런 이름이 붙었을까?

저도 LSTM을 공부하면서, 세 가지 Gate가 어쩌다 이런 이름을 갖게 되었을까?라는 궁금증이 들었습니다. 처음부터 이런 이름을 설정하고 만든건가?라는 생각도 했습니다. 하지만 조금 더 살펴보면, 이 Gate들의 이름은 처음부터 명확하게 정해진 규칙이라기보다는, 학습 과정에서 각 Gate가 실제로 수행하는 역할을 해석한 결과로 이름이 붙여진 것 같다는 생각이 들었습니다.

Gate는 sigmoid를 통해서 0~1의 값을 갖도록 출력하게 됩니다. 이 값이 Cell State나 Hidden State의 정보 흐름에 곱해지면서, 어떤 정보는 유지되고, 어떤 정보는 줄어들거나 사라지게 됩니다.

학습이 진행되면서, 어떤 Gate는 과거의 정보를 점점 줄이는 역할, 정보를 받아들이는 역할, 출력하는 역할을 하는 결과를 보고, 각 Gate는 Forget, Input, Output이라는 이름으로 자연스럽게 불리게 된 것이 아닐까 생각합니다. 즉, LSTM의 Gate는 역할이 먼저 정해진 것이 아니라, 학습된 동작을 사람이 이해하기 쉽게 이름으로 붙인 결과인 것 같습니다.

 

또한 어떻게 하다가 Gate를 3개로 설정하게 되었을까?라는 생각도 들었습니다. 이는 LSTM이 메모리를 효과적으로 다루기 위해 필요한 최소한의 구조이기 때문이라고 생각하게 되었습니다.

LSTM은 자연스럽게 과거·현재·미래라는 세 가지 흐름을 다룬다 생각합니다.

  • 과거 : 과거에 저장된 정보는 유지할지 결정
  • 현재 : 현재 시점에서 들어온 정보는 얼마나 반영할지 판단
  • 미래 : 미래의 예측을 위해 어떤 정보를 출력으로 사용할지도 선택해야 합니다.

이 세 가지 판단을 각각 분리해 담당하는 구조가 바로 Forget Gate, Input Gate, Output Gate라고 생각이 드는 것 같습니다.

그리고 LSTM을 개선하기 위해서 또 GRU라는 모델이 나왔다고 합니다. GRU는 Gate를 줄여서 구조를 더 단순하게 만든 모델입니다. GRU에서는 Gate를 2개로 만들어서 학습이 더 빠르다는 장점이 있는 것 같습니다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'딥러닝' 카테고리의 다른 글

[딥러닝] Recurrent Neural Network(RNN)  (1) 2026.01.21
'딥러닝' 카테고리의 다른 글
  • [딥러닝] Recurrent Neural Network(RNN)
⭐매일조금씩⭐
⭐매일조금씩⭐
통계학과 대학원생의 공부 기록, 운동 루틴, 회고를 담습니다.
  • ⭐매일조금씩⭐
    뚜리뚜벅
    ⭐매일조금씩⭐
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • 🙋 About me (1)
      • 논문 리뷰 (8)
        • Generative model (3)
        • Imbalanced data (2)
        • Machine Learning (3)
        • Explainable ai(XAI) (0)
      • 코드구현 (1)
      • 프로젝트 & 공모전 (2)
      • 머신러닝 (4)
      • 딥러닝 (2)
      • ⭐라이프로그⭐ (25)
        • 📓취준일기 (5)
        • 📖회고 (1)
        • 🏃‍♀️헬스 (11)
        • 🎳볼링 (0)
        • ⚽ 축구 & 풋살 (0)
        • ✈️여행 (0)
        • 🎤✨콘서트 (1)
        • 🧑‍💻코딩 테스트 준비 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    GAN
    딥러닝
    tabular data
    Generative Model
    벤치프레스
    infoGAN
    ctgan
    논문리뷰
    머신러닝
    deep learning
    헬린이
    Machine Learning
    불균형 데이터
    생성모델
    undersampling
    imbalanced data
    oversampling
    양산관리
    헬스
    smote
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
⭐매일조금씩⭐
[딥러닝] Long Short-Term Memory(LSTM)
상단으로

티스토리툴바