Module 7. 『시계열 데이터 및 AI 모델 성능 최적화』 1. 순환신경망 기반의 시계열 데이터 회귀

YSL·2023년 1월 24일

LG Aimers

목록 보기
28/30
post-thumbnail

📍 강의 자료 출처 : LG Aimers

1. 순환신경망 기반의 다변량 시계열 데이터 회귀모형

Data

순서가 있고 / 없고에 따라 데이터의 종류가 나뉜다.

  • Non-Sequential Data
    : 시간 정보를 포함하지 않고 생성되는 데이터
    → 데이터의 순서가 없어 테이블 또는 행렬의 형태로 주로 표현된다.순서가 없는 인공신경망의 구조를 보면 xxhh, hhyy로의 화살표만 존재한다.
  • Sequential(Time-Series) Data
    : 시간 정보를 포함하여 순차적으로 생성되는 데이터
    → tensor 또는 array의 형태로 주로 표현된다.
    순서가 있는 인공신경망의 경우 이전 시점에서의 hidden node hh의 정보들이 다음 시점의 hidden node들의 정보로 연결된다.
    == 과거의 정보가 다음 단계로 계속해서 누적돼 전달되는 구조순서가 없는 인공신경망과 달리, hidden node hh가 자신을 반복적으로 참조하는
    (= hh에서 hh로 연결되는) 구조를 가지기 때문에 순환신경망이라 표현한다.

Vanilla RNN (기본 RNN)

RNN에서 가장 핵심이 되는 부분은 hth_t인데 이 '특정한 tt시점에서의 은닉 노드'의 값은 두 방향에서 정보를 전달 받는다.

  1. 이전 시점까지 은닉 노드들에 저장된 정보 ht1h_{t-1}

  2. 해당하는 tt시점에서 새롭게 제공되는 입력 정보 xtx_t

Vanilla RNN 작동 방식

input이 주어지고 이전 시점에서의 hidden state ht1h_{t-1}이 주어지면 이 둘을 연산하여 다음 state로 내보낸다.

경사하강법을 통한 back-propagation으로 parameter WhyW_{hy}, WhhW_{hh}, WxhW_{xh}를 학습시키는데 이때 Gradient Vanishing / Exploding 문제가 발생할 수 있다.

이를 해결하기 위해 2가지 방법이 제안된다.

1. LSTM

Gradient Vanishing 혹은 Exploding 문제를 해결하기 위해 제안된 기법으로,
Long-term dependency(장기간에 있어서의 의존성)을 학습 가능한 것으로 알려져 있다.

LSTM 작동 방식

기본적인 Vanilla RNN과는 달리, LSTM은 cell state라는 핵심 구성 요소가 필요하다.

cell state == 보조기억장치
output == 주기억장치

  1. forget gate
    : 보조 기억 장치인 cell state에 저장된 정보 중 현재 시점에서 얼마만큼을 망각할 것인지 결정한다.
    → 이전 단계의 hidden state인 ht1h_{t-1}과 현 단계의 입력인 xtx_t로부터 0 ~ 1 사이의 값을 ftf_t로 출력한다.

    • ft=1f_t = 1 = 지금까지 cell state에 저장된 모든 정보를 보존하라
    • ft=0f_t = 0 = 지금까지 cell state에 저장된 모든 정보를 무시하라
      ⇒ 지금까지 저장된 정보가 얼마나 유용한지 현재 시점에서 판단할 수 있다.
  2. input gate
    : 현재 시점에서 어떤 값을 최종적으로 update할 것인지 결정한다.
    ht1h_{t-1}xtx_t를 concatenation하여 학습의 대상인 WW라는 가중치 행렬을 이용해 input gate 값 iti_t를 구한다.

    • iti_t가 클수록 현재 시점에서의 정보를 최대한 많이 반영하라
    • iti_t가 작을수록 현재 시점에서의 정보를 최대한 적게 반영하라

      +) iti_t를 통해 새로운 cell state Ct C^{~}_t에 들어갈 정보의 후보를 생성한다.
  3. Cell state Update
    : 이전 cell state를 새로운 cell state로 업데이트한다.
    ⇒ 과거 정보를 얼마만큼 보존해야 되고 현재 정보를 얼마만큼 반영해야 하는지를 데이터를 기반으로 학습을 통해 adaptive하게 결정한다.

  4. Output Update
    : output을 업데이트하고 이를 기반으로 hidden state를 업데이트한다.
    ht1h_{t-1}xtx_t를 통해 output oto_t를 구하고 oto_t와 새로운 cell state CtC_t를 이용해 hidden state hth_t를 업데이트한다.


2. GRU

: LSTM보다는 단순화된 형태
LSTM과 성능 차이가 크지 않아 비교적 구조가 단순한 GRU를 먼저 사용해보는 것을 권장한다.

GRU 작동 방식

LSTM과 달리, 별도의 cell state이 존재하지 않는다.

  1. update gate
    : forget gate와 input gate를 하나로 결합하였다.
    → 현재 정보를 얼만큼 반영할 것인가

  2. reset gate
    : 망각과 새로운 정보 업데이트 정도를 결정한다.
    → 과거의 정보를 얼만큼 덜 / 더 반영할 것인가


RNN Variations

1. Bidirectional RNN

: 양방향 순환신경망

상대적인 과거의 정보와 상대적인 미래 정보를 이미 함께 갖고 있다는 아이디어 하에서 정보를 처리하는 방향을 순방향과 역방향 양쪽으로 모두 진행한다.
예) 번역

→ 순뱡향의 hidden vector와 역방향의 hidden vector를 이어붙여(concatenation) 최종 output yty_t를 구한다.

2. Deep-Bidirectional RNN

: hidden layer를 여러 층으로 깊게 쌓은 구조
cf> CNN과 달리, RNN은 층을 깊게 쌓는다고 해서 성능의 향상을 보장하지는 않는다.

3. Attention

: 어느 시점의 정보가 RNN의 최종 출력 값에 영향을 미치는지를 알려줄 수 있는 메커니즘

  • Bahadanau attention
    : Attention score를 산출하기 위해 별도로 model을 학습시켜야 한다.

  • Loung attention
    : 별도로 학습하지 않아도 Attention score를 산출할 수 있다.


attention 구조가 없을 때는 모든 입력이 끝난 후 hh_*라는 노드에서 바로 yy를 예측하는데

Attention 작동 방식
  1. 가장 마지막의 hidden state 정보와 첫번째 hidden state와의 유사도(기여도) α1α_1을 계산한다.
    → 마지막 직전 hidden state까지 이 과정을 반복하여 αα들을 구한다.
  1. αα와 이전 hidden state들과의 선형 결합을 통해 context vector CC를 생성한다.
  1. context vector cc와 마지막의 hidden state를 결합해 새로운 hidden state vector h~\tilde{h}를 만든다.
    → attention이 없는 구조에서는 가장 마지막을 제외한 hidden state hh의 정보들이 버려진다.
  1. h~\tilde{h}를 통해 yy를 예측한다.

각각의 αα는 0 ~ 1 사이의 값을 갖고 모든 aα를 더하면 1이 된다.
최종 예측을 하는 데 있어서 몇번째 시점이 가장 중요하게 역할을 했는가 판단할 수 있다.


0개의 댓글