[NLP] LSTM : Long Short Term-Memory

eenzeenee·2023년 6월 8일
0

DeepLearning

목록 보기
3/7

LSTM

  • RNN 기반의 신경망 알고리즘
  • Simple RNN 모델의 문제를 보완하기 위해 제안됨
    • 장기의존문제 (long term dependency)
      • 입력된 문서에서 상대적으로 오래 전에 사용된 단어의 정보가 잘 전달되지 않음
      • 경사소실문제로 인해 발생함 (gradient descent) 각각의 RNN 층에 활성화 함수가 존재하는데, 주로 tanh 사용 이는 S자 모양의 함수로 입력값이 매우 커지거나 작아지면 활성화함수의 경사가 0에 가까워져 역전파 과정에서 경사 소실 문제가 발생함 이로 인해 파라미터의 값이 제대로 업데이트되지 않아 장기의존문제가 발생하게 됨 파라미터를 업데이트할 때 gradient descent 문제를 해결하고자 learning rate를 크게 두면 되려exploding gradient 문제가 발생함
  • memory cell을 활용하여 이전 단어의 내용을 보다 더 잘 기억할 수 있도록
    • 은닉 노드의 개수에 따라 그 개수가 정해지며 hidden state vector와 차원이 동일함
    • 기존 hidden state Ht에 기억 셀인 Ct가 추가된 것으로 이해 가능
  • LSTM 모델 구조

LSTM architecture

LSTM expression

  • 작동원리

    • 기억 셀 업데이트 : 이전 기억 셀 Ct-1이 이전 hidden state Ht-1과 단어 t의 임베딩 정보인 Xt를 이용하여 Ct로 업데이트 됨

      memory cell

      • 단어 t에 대한 hidden state 값 출력 : 단어 t의 임베딩 정보 Xt, 이전 hidden state Ht-1, 현재 기억 셀 Ct를 이용하여 현재 hidden state Ht가 계산됨

      → 위의 2가지 역할을 위해 필요한 것 : GATE

  • gate

    • 기억 셀이 가지고 있는 이전 정보를 기억 / 삭제하거나, 새로운 정보를 추가

    • 새로운 hidden state 계산

    • LSTM는 3가지 gate 종류를 가지고 있음

      • forget

        forget

        • 이전 기억셀이 가지고 있는 정보 중, 불필요한 정보를 삭제하는 역할
        • Ct-1이 가지고 있는 각 원소의 정보 중 몇 %를 삭제할 것인지 결정하기 위해 0~1 사이의 값을 반환하는 시그모이드 함수 활용
          • 입력되는 정보로는 이전 hidden state 정보 Ht-1와 단어 t의 임베딩 정보 Xt를 활용
          • σ(xtWxf+ht1Whf+bf)\sigma(x_t*W^f_x + h_{t-1}*W^f_h + b^f) : 0~1 사이의 값을 가짐
        • 결과값이 0에 가까울수록 더 많이 잊는다는 것을 의미함
        • 출력 결과 : ct1=σ(xtWxf+ht1Whf+bf)@ct1c_{t-1}' = \sigma(x_t*W^f_x + h_{t-1}*W^f_h + b^f)@c_{t-1}
          • ct1c_{t-1}': forget 게이트를 통해 업데이트된 ct1c_{t-1}을 의미함
          • @@ : 아마다르 곱 의미 (각 위치별 원소 곱)
      • input

        forget & input

        • 일부 정보가 삭제된 ct1c_{t-1}'에 새로운 정보를 추가하는 역할
        • 이전 hidden state 정보 Ht-1과 단어 t의 정보 Xt를 사용
        • 새로이 추가되는 정보들의 긍, 부정 역할을 나타내기 위해 : -1 ~ 1의 값을 출력하는 tanh() 사용
          • tanh(xtWxn+ht1Whn+bn)tanh(x_t*W_x^n+h_{t-1}*W_h^n+b^n)
        • 기여하는 정도에 따라 적용되는 비율을 다르게 하여 반영하고자 : sigmoid 함수 사용
          • σ(xtWxi+ht1Whi+bi)\sigma(x_t*W_x^i+h_{t-1}*W_h^i+b^i)
        • ct=ct1+tanh(xtWxn+ht1Whn+bn)@σ(xtWxi+ht1Whi+bi)c_t = c_{t-1}'+tanh(x_t*W_x^n+h_{t-1}*W_h^n+b^n)@\sigma(x_t*W_x^i+h_{t-1}*W_h^i+b^i) → hidden state / 기억 셀과 dimension 동일
      • output

        output

        • forget 게이트, input 게이트를 이용하여 업데이트된 기억셀의 정보 Ct를 이용하여 현재 lstm 레이어에서의 출력 hidden state인 Ht를 계산
          • Ct가 가지는 원소의 값들을 조정하여 Ht를 계산
          • Ct가 가지는 원소들 중 정답을 맞히는 데에 큰 역할을 하는 원소의 비중은 크게하고, 그렇지 않은 원소의 비중은 작게 해서 Ht를 계산
          • 각 원소의 비중을 계산하기 위해 현재 LSTM 레이어에 입력되는 Ht-1과 단어 t의 정보 Xt를 인자로 가지는 sigmoid 함수 사용
            • σ(xtWxo+ht1Who+bo)\sigma(x_t*W_x^o+h_{t-1}*W_h^o+b^o)
          • Ct 원소들의 긍부정 역할을 구분하기 위해 tanh 함수 사용
            • ht=σ(xtWxo+ht1Who+bo)@tanh(ct)h_t = \sigma(x_t*W_x^o+h_{t-1}*W_h^o+b^o)@tanh(c_t)
  • LSTM 레이어의 전체적인 작동 원리

    • 기억 셀의 정보 업데이트
      • 기억 셀의 일부 정보를 잊어버림 (forget gate)
      • 기억 셀에 새로운 정보 추가 (input gate)
    • 업데이트된 기억 셀 정보를 이용하여 hidden state 출력 (output gate)
  • LSTM 다음 계층으로 전달되는 값

    • hidden state !
    • 일반적으로 기억 셀의 특징은 다음 계층으로 전달되지 않음 (LSTM 레이어 내에서 이전 단어들의 정보를 기억하는 목적으로 사용됨)
  • Bidirectional LSTM

    • 기존의 LSTM : 한 방향으로만 작동 ~ 시퀀스 데이터의 왼쪽에서 오른쪽 방향으로
    • 현재 단어 이후의 정보가 중요한 경우도 있음 : 반대 방향으로 작동하는 LSTM 함께 사용
    • Bidirectional LSTM : 작동 방향이 서로 반대인 2개의 LSTM layer를 사용하는 LSTM
      • 순방향, 역방향 LSTM 레이어에서 출력되는 hidden state는 서로 차원 동일
      • 모든 계층에서 출력하는 hidden state 정보 모두 사용하거나 혹은 각 LSTM 마지막 계층에서 출력하는 hidden state 정보들 만을 사용하는 것도 가능함
      • 각 hidden state에 대해서는 concat 하여 사용

LSTM 변형

revised LSTM

엿보기 구멍(peephole connection)"을 추가한 모델이다. Gate layer들이 cell state를 쳐다보게 만드는 모델

출처 (개발새발로그:티스토리)

RNN과 비교하여 장단점

  • 장점 : 장기기억소실 문제 해결
  • 단점 : 모델 구조 복잡해 추론 시간에 있어 불리함

Transformer와 비교하여 장단점

  • 장점 : 적은 학습 데이터셋을 활용할 때 학습의 효율성을 가짐
  • 단점 : 입력 시퀀스의 병렬처리가 불가능

GRU

  • LSTM과 유사하게 게이트 개념 활용
    • reset gate
    • update gate : forget + input
    • 기억 셀은 활용하지 않음
    • LSTM보다 간단한 구조를 가짐 : 속도는 비교적 빠르나 정확도가 낮음
      • 파라미터 수가 적어 적은 학습 데이터셋을 활용했을 경우 학습에 있어 유리할 수 있음
    • 구조
      GRU architecture
profile
Steadily

0개의 댓글