[DL] LSTM Networks (Long Short-Term Memory Networks)

wonnie1224·2023년 1월 9일

0. LSTM이란?

• LSTM : RNN의 한 종류로, RNN의 장기 의존성 문제(long-term dependencies)를 해결하기 위해서 나온 모델

  • 직전 데이터뿐만 아니라, 더욱 거시적으로 과거 데이터를 고려하며 데이터를 예측 가능
  • 총 6개의 파라미터와 4개의 게이트로 구성

LSTM의 전체 architecture

1. LSTM의 구조

1) Cell state

: LSTM의 핵심은 cell state으로, 모듈 그림에서 수평으로 그어진 윗 선에 해당함

  • Cell state는 메모리와 같은 존재로, State가 오래 경과하더라도 Gradient가 잘 전파됨
  • Cell state는 Gate라고 불리는 구조에 의해서 정보가 추가되거나 제거됨
  • Gate는 Training을 통해서 어떤 정보를 유지하고 버릴지 학습

2) Gates

LSTM은 3개의 Gate를 가지고 있고, 이 gate들은 cell state를 보호하고 제어함
세 개의 gate 모두 활성화함수로 시그모이드를 적용

① forget gate (f) : 과거 정보를 잊기 위한 게이트
② input gate (i) : 현재 정보를 기억하기 위한 게이트
③ output gate (o) : 최종 결과를 내보내기 위한 게이트

2. LSTM의 단계별 진행

1) Forget Gate

  • 과거 정보를 얼마나 잊을 것인지 결정하는 단계
  • h(t−1)와 x(t)를 받아서, sigmoid layer를 통해 0과 1 사이의 값을 C(t−1)에 보냄
  • 결과값이 1이면 이전 상태의 모든 정보를 보존
  • 결과값이 0이면 "이전 상태의 모든 정보를 버림

2)Input Gate

  • 현재 정보를 얼마나 기억할 것인지 결정하는 단계
    ① h(t−1)와 x(t)를 받아서, sigmoid layer를 통해 i(t) 계산
    ② tanh layer를 통해 새로운 후보 값들인 ~C(t)라는 vector 생성
    ③ i(t)와 ~C(t)의 정보를 합쳐, cell state를 업데이트할 재료 생성

3) State Update

  • 이전 cell state인 C(t−1)를 업데이트해서 새로운 cell state인 C(t)를 만드는 단계
    ① 이전 cell state를 얼마나 잊을건지(forget gate) 곱해줌
    ② 현재 cell state를 얼마나 반영할건지(inpute gate) 더해줌
    ③ 최종 결과를 다음 상태의 cell state로 내보냄

4) Output Gate

  • 다음 State로 내보낼 output(hidden state)을 구하는 단계
    ① cell state에 tanh를 취함
    ② h(t−1)와 x(t)를 받아 sigmoid layer를 통해 O(t)를 계산
    ③ O(t)와 tanh 결과를 곱해 output(hidden state)을 내보냄

3. LSTM의 장점 및 단점 분석

1) 장점

  • 기존의 RNN은 단기 메모리만을 가지고 recurrently 학습을 했다면, LSTM은 단기 메모리와 장기 메모리를 나눠 학습 후, 두 메모리를 병합해 이벤트 확률을 예측함
    -> 과거의 정보를 훨씬 잘 반영해 기존 RNN보다 좋은 성능 가짐

2) 단점

  • 메모리가 덮어씌워질 가능성이 있음
  • 연산속도 느림
    추가적으로, RNN, LSTM, GRU의 근본적인 단점
  • many to many 번역 문제에서 기본적인 RNN 형태에서는 출력 길이를 조절할 수는 있지만 들어오는 문장마다 가변적일 수는 없음 -> 순서를 고려하기 쉽지 않음
  • 이런 문제를 해결하기 위해 seq2seq(sequence-to-sequence) 등장함

🌿 참고링크

  1. swish 활성화 함수
  1. LSTM
profile
안녕하세요😊 컴퓨터비전을 공부하고 있는 대학원생입니다 🙌

0개의 댓글