LSTM (Long Short-Term Memory, 장단기 메모리)

HanSol Choi·2024년 6월 22일

LSTM(Long Short-Term Memory, 장단기 메모리)

  • RNN 기반의 신경망 알고리즘
  • Simple RNN의 문제를 보완하기 위해 고안된 신경망 구조
    • Problem of long term dependency (장기의존성 문제) (or short-term memory)
    • 입력된 문서에서 상대적으로 오래 전에 사용된 단어의 정보가 잘 전달되지 않는 문제

LSTM 특징

  • 기억셀 (memory cell)
    오래 전 단어의 내용을 보다 잘 기억

  • RNN

    • 기본 원리와 유사
      time step t에서 단어 t에 대한 벡터 정보(xt)와 이전 은닉층 (time step t-1)에서 전달하는 hidden state 정보(ht-1)를 같이 입력 받음 (LSTM층이 순차적으로 적용)
  • + 기억셀

    • (기존 RNN 구조의)hidden state(ht) + 기억셀(ct) 추가
    • 기억셀은 하나의 벡터 (원소의 수 = hidden state 원소의 수 = LSTM 층에 존재하는 은닉 노드의 수)

LSTM 작동 원리

-기억셀 업데이트 : ct-1(이전 기억셀)이 ht-1(이전 단계에서 전달되는 hidden state)과 단어 t의 임베딩 정보를 사용하여 ct로 업데이트
-단어 t에 대한 hidden state값 출력 : 단어 t의 임베딩 정보 ht-1, 그리고 ct의 정보를 이용하여 ht 계산
-게이트(gate)에서 작업

  • 게이트

    • 기억셀 업데이트 : 기억셀이 가지고 있는 이전 정보를 삭제(또는 기억)하거나, 새로운 정보를 추가
      → 이전 정보 중에서 정답을 맞히는데 필요한 중요한 정보는 기억하고 필요없는 정보는 잊어버리고, 새롭게 입력되는 정보 중에서 중요한 정보는 추가
    • (업데이트 된 기억셀 정보를 이용해서) 새로운 hidden state 계산
    • LSTM의 3개의 게이트 (서로 다른 역할 수행)
      • forget, input, output 게이트
    • 게이트의 역할
      • ct-1을 업데이트 하여 ct 계산
      • ct, 단어 t, ht-1을 이용하여 ht 계산
    • (먼저)이전 기억셀 정보 업데이트 (ct-1 → ct)
      • 이전에 가지고 있던 정보의 일부를 삭제하고 새로운 정보 추가
      • forget 게이트와 input 게이트를 사용
  • forget 게이트

    • 이전 기억셀(ct-1)이 가지고 있는 정보 중에서 정답을 맞히는데 불필요한 정보는 잊어버림 (삭제)
    • ct-1이 가지고 있는 각 원소의 정보 중에서 얼마(몇 %)를 잊어버릴지를 위한 설정값(0~1) 사용
      • 아마다르 곱 (Hadamard product)
        같은 크기의 두 행렬의 각 성분을 곱하는 연산
    • 0 ~ 1 사이의 값을 반환하는 Sigmoid 함수 사용
      • ct-1 내용(각 원소) 중 얼만큼 잊을 것인가를 결정하기 위해 ht-1과 단어 t의 임베딩 벡터(xt) 이용
      • 값이 0에 가까울수록 더 많이 잊는다는 의미
    • 출력되는 값
  • Input 게이트

    • (먼저)추가하고자 하는 정보를 계산 : ht-1과 단어 t의 정보 사용
    • 새롭게 추가되는 정보들의 긍부정 역할을 나타내기 위해 -1 ~ 1의 값을 출력하는 tanh() 사용
    • 정답을 맞히는데 기여하는 정도에 따라서 다른 비율 적용
      → Sigmoid 함수 사용

  • Output 게이트

    • forget 게이트와 input 게이트를 이용하여 업데이트 된 기억셀의 정보(ct)를 이용하여 ht 계산
      • ht는 현재 LSTM층에서 출력(output)되는 값
    • Output 게이트는 ct가 갖는 원소의 값들을 조정하여 ht 계산
    • ct 원소들의 긍부정 역할을 구분하기 위해 tanh 적용
    • ct가 갖고 있는 원소들 중 정답을 맞히는데 기여하는 정도를 반영하기 위해 Sigmoid 함수 사용
    • 아마다르곱 수행

  • LSTM 계층의 작동 순서

    • 기억셀의 일부 정보 삭제 (forget gate 사용)
    • 기억셀에 새로운 정보 추가 (input gate 사용)
    • 업데이트 된 기억셀 정보를 이용, hidden state 출력 (output gate 사용)
  • LSTM에서 다음 계층으로 출력되는 값

    • 일반적으로 기억셀의 특징은 다음 계층(출력층 or 은닉층)으로 그 값이 전달되지 않음
      • LSTM 계층 내에서만 이전 단어들의 정보를 기억하는 목적으로 사용
    • → 다음 계층으로 전달되는 값은 hidden state(ht)ss

LSTM 구조

  • Time Step t에서의 LSTM 구조

profile
ML/DL Study,기록📝

0개의 댓글