시계열) LSTM

Joo·2024년 3월 22일
0

Data Analytics 101

목록 보기
7/15

🐼 목 차 🐼
1. RNN 개선 모델 : LSTM
2. LSTM 구조
3. LSTM의 단점
4. LSTM 구조 개선 모델 : Peephole connection
5. LSTM 구조 개선 모델 : GRU (Gated Recurrent Unit)
6. 정리


참고 강의 링크 : https://www.youtube.com/watch?v=006BjyZicCo&list=PLpIPLT0Pf7IoTxTCi2MEQ94MZnHaxrP0j&index=3



1. RNN 개선 모델 : LSTM

  • Long Short Term Memory (LSTM)은 장기 의존성 문제를 완화한 RNN 개선 모델
  • Cell state (CtC_t)구조를 제안하고, 세 가지 gate를 추가한 구조
    • Cell state : 장기적으로 정보들을 유지하는 벡터 (Hidden vector(hth_t)를 구하는 데 사용)
    • 세 가지 gate (vector) : Forget gate (ftf_t), Input gate (iti_t), Output gate (oto_t) (세 가지 gate를 통해 cell state, hidden state 업데이트)
  • Hidden vector를 RNN에 비해 더 복잡하게 계산하는 방식(게이트 조절)으로 기울기 소실 문제 완화

  • t 시점에서의 hidden vector인 hth_tWhyW_{hy}를 곱해 hatythat{y}_t를 구하는데, 여기서 hth_t가 RNN과 달리 구하기 복잡함

✔️ 세 가지 gate
ft=σ(Wxhfxt+Whhfht1+bhf)f_t = \sigma(W_{xhf} x_t + W_{hhf} h_{t-1} + b_{hf})
it=σ(Wxhixt+Whhiht1+bhi)i_t = \sigma(W_{xhi} x_t + W_{hhi} h_{t-1} + b_{hi})
ot=σ(Wxhoxt+Whhoht1+bho)o_t = \sigma(W_{xho} x_t + W_{hho} h_{t-1} + b_{ho})

C~t=tanh(Wxgxt+Whght1+bhg)\tilde{C}_t = \tanh(W_{xg} x_t + W_{hg} h_{t-1} + b_{hg}) → t 시점에서의 임시 cell state
Ct=ftCt1+itC~tC_t = f_t \otimes C_{t-1} + i_t \otimes \tilde{C}_t → t 시점에서의 cell state
ht=ottanh(Ct)h_t = o_t \otimes \tanh(C_t) → t 시점에서의 hidden vector

Ⅰ. 임시 cell state를 구하는 회로도

Ⅱ. Cell state를 구하는 회로도

Ⅲ. Hidden vector를 구하는 회로도



2. LSTM 구조

1) Gate 계산하기 : Forget (ftf_t), Input (iti_t), Output (oto_t)

  • Gate는 다음과 같은 함수로 정의되어 0~1 사이의 값을 가지는 벡터
    • Gate=σ(Wxhxt+Whhht1+bh)Gate = \sigma(W_{xh} x_t + W_{hh} h_{t-1} + b_{h})
    • Gate는 최종적으로 0~1 사이 값을 지니므로 얼마나 적용할 것인지에 대한 가중치 역할
    • Gate 마다 서로 다른 파라미터 (Wxh, Whh)를 사용하기 때문에 서로 다른 값을 지님
    • σ()\sigma() : 시그모이드 함수

✔️ 세 가지 gate
ft=σ(Wxhfxt+Whhfht1+bhf)f_t = \sigma(W_{xhf} x_t + W_{hhf} h_{t-1} + b_{hf})
it=σ(Wxhixt+Whhiht1+bhi)i_t = \sigma(W_{xhi} x_t + W_{hhi} h_{t-1} + b_{hi})
ot=σ(Wxhoxt+Whhoht1+bho)o_t = \sigma(W_{xho} x_t + W_{hho} h_{t-1} + b_{ho})

✔️ Forget gate

  • Forget gate는 불필요한 과거 정보를 잊기 위한 gate (과거 cell state에서 사용하지 않을 데이터에 대한 가중치)
  • 과거 데이터를 얼마나 기억할 지 가중치를 통해 조절함
  • Forget gate의 값(가중치)들은 학습을 통해 알아내야 함

✔️ Input gate

  • Input gate는 현재 정보를 기억하기 위한 gate (Cell state에서 사용할 데이터를 저장하기 위한 가중치)
  • Forget gate와는 가중치가 다름 (그 가중치는 학습(비용함수 최소화)을 통해 알아내야 함)

✔️ Output gate

  • Output gate는 어떤 정보를 output으로 내보낼지 결정하기 위한 gate (Hidden state에 cell state를 얼마나 반영할 것인지에 대한 가중치)
  • Forget gate, input gate와는 가중치가 다름 (그 가중치는 학습(비용함수 최소화)을 통해 알아내야 함)

2) Cell state (CtC_t) 업데이트 하기

  • 임시 cell state(C~t\tilde{C}_t)를 생성, 이때 tanh를 통해 -1~1 사이의 값을 가지는 벡터로 산출
    • 임시 cell state는 현재 입력값과 과거 hidden state 정보에 대한 정보 요약
    • C~t=tanh(Wxgxt+Whght1+bhg)\tilde{C}_t = \tanh(W_{xg} x_t + W_{hg} h_{t-1} + b_{hg})
    • 수식적으로는 RNN에서의 hidden state와 유사
  • 현 시점에 대한 cell state((CtC_t)를 업데이트할 때, forget과 input gate 활용
    • Ct=ftCt1+itC~tC_t = f_t \otimes C_{t-1} + i_t \otimes \tilde{C}_t (\otimes = elementwise product, 합성곱)
    • 불필요한 정보는 잊고(forget gate), 추가할 정보는 추가해서(input gate) cell state 구성

여기서 forget gate의 쓰임

여기서 input gate의 쓰임


3) Hidden state (hth_t) 업데이트 하기

  • 최종적으로 단기적 정보 hidden state (hth_t)를 업데이트
  • Output gate는 어떤 정보를 output으로 내보낼지 결정하기 위한 gate (=Hidden state에 cell state를 얼마나 반영할 것인지에 대한 가중치)
    • ht=ottanh(Ct)h_t = o_t \otimes \tanh(C_t)
  • CtC_t에 대한 비선형 변환 값에 또 한 번 가중치를 취해주는 것



3. LSTM의 단점

  • 학습할 파라미터가 많아 시간이 오래 걸림


4. LSTM 구조 개선 모델 : Peephole connection

  • 일반적인 LSTM에서 gate는 입력값 xtx_t와 단기 정보(hidden state) ht1h_{t-1}만을 고려함
  • Gate에 장기 정보(cell state) ctc_t 정보도 활용하여 더 많은 정보가 수용되도록 개선함

✔️ 세 가지 gate (중괄호항 추가됨)
ft=σ(Wxhfxt+Whhfht1+[WchfCt1]+bhf)f_t = \sigma(W_{xhf} x_t + W_{hhf} h_{t-1} + [W_{chf} C_{t-1}] + b_{hf})
it=σ(Wxhixt+Whhiht1+[WchiCt1]+bhi)i_t = \sigma(W_{xhi} x_t + W_{hhi} h_{t-1} + [W_{chi} C_{t-1}] + b_{hi})
ot=σ(Wxhoxt+Whhoht1+[WchoCt]+bho)o_t = \sigma(W_{xho} x_t + W_{hho} h_{t-1} + [W_{cho} C_{t}] + b_{ho})



5. LSTM 구조 개선 모델 : GRU (Gated Recurrent Unit)

  • 일반적인 LSTM에서 cell state와 세 가지 gate가 정의됨 (forget, input, output)
    • Cell state 정의하는 과정에서 forget gate와 input gate가 활용됨
    • Hidden state로 출력값 정의 (Output gate 활용됨)
  • GRU는 LSTM의 구조를 간단하게 개선하여 파라미터 개수를 줄임
    • hth_t 구하는 과정을 단순화함 (경량화된 LSTM)
    • Forget gate, input gate를 update gate(ztz_t)로 통합, output gate를 없애고 reset gate(rtr_t) 정의
    • Cell state, hidden state를 hidden state로 통합
  • 그런데 현업에서는 GRU는 엄청 많이 막 쓰이는 추세는 아니라고 함 (왜지? 도메인마다 다른가?)

rt=σ(Wxhrxt+Whhrht1+bhr)r_t = \sigma(W_{xhr} x_t + W_{hhr} h_{t-1} + b_{hr}) → Reset gate
zt=σ(Wxhzxt+Whhzht1+bhz)z_t = \sigma(W_{xhz} x_t + W_{hhz} h_{t-1} + b_{hz}) → Update gate
C~t=tanh(Wxhgxt+Whhg(rtht1)+bhg)\tilde{C}_t = \tanh(W_{xhg} x_t + W_{hhg} (r_t \otimes h_{t-1}) + b_{hg}) → 임시 cell state
ht=(1zt)h(t1)+ztC~th_t = (1 - z_t) \otimes h_(t-1) + z_t \otimes \tilde{C}_t → 최종 cell state (=hidden state)



6. 정리

  • Hidden state를 구할 때 long term dependency 문제를 해결할 수 있게 웨이트를 조절한 것이 LSTM과 GRU임
profile
적당히 공부한 거 정리하는 곳

0개의 댓글

관련 채용 정보