[LG Aimer] 순환신경망 기반 시계열 데이터 회귀(1)

chaeyoung·2023년 8월 9일
0

LG Aimer

목록 보기
5/7

순환신경망 기반의 시계열 회귀


Non-Sequential vs Sequential(Time-series) Data

  • Non-Sequential
    시간 정보를 포함하지 않고 생성되는 데이터(순서가 없음)

  • Sequential
    시간 정보를 포함하여 순차적으로 생성되는 데이터(순서가 있음), 순환구조


기본 RNN(Vanilla RNN)
f()와 g()는 활성함수

  • Whh,WxhW_{hh},W_{xh}: data를 통해 학습되는 대상(parameter)

Gradient vanishing/ Exploding Problem

역방향으로 어떻게 해야 가장 현재 입력과 출력 단의 쌍들을 잘 맞출 수 있는 가중치 행렬을 구하는 것

(backpropagation과정)

(1tanh2(zt))(1-tanh^2(z_t))에서 문제 발생: 특정 값을 벗어나면 gradient가 0으로 수렴함 => 길이가 길어지면 0에 수렴할 가능성이 높다는 것

Problem문제 해결법

  1. LSTM: Long-Term Memory
    Gradient vanishing/ Exploding Problem 문제를 해결하여 Long-tern dependency학습 가능

    -> LSTM의 구조가 복잡하여 다양한 diagram들이 존재
  • Cell state: LSTM의 핵심 구성요소, 다이어그램의 상부를 관통하는 선
    - step_1(Forgat gate): 지금까지 cell state저장된 정보에서 얼마만큼 망각(forget)할 것인지 결정
    -> sigmoid함수 사용(1: 모든정보 보존, 0: 모든 정보 무시)

    - step_2(Input gate): 새로운 정보를 얼마만큼 cell state에 저장할 것인지(어떤 값을 업데이트할지)
    -> tahh layer를 사용해 새로운 cell state의 후보 CtC_t생성

    - step_3: 예전 cell state를 새로운 cell state로 업데이트
    -> 예전 cell을 얼마만큼 망각할지 계산한 forget gate결과값과 곱함
    -> 새로운 cell 후보와 얼마만큼 보존할 것인가 계산한 input gate결과값을 곱함
    -> 두 값을 더해 새로운 cell state값으로 결정

    - step_4: 출력 값을 결정
    -> 이전 hidden state값과 현재 입력값 이용해 output gete값을 산출
    -> output gate값과 현재의 cell 값을 결합해 현재의 hidden값 계산


    요약....

  1. GRU: Gated Recurrent Unit
  • LSTM을 단순화한 구조
  • 별도의 Cell state가 존재하지 않음
  • LSTM의 forget gate와 input gate를 하나의 update gate로 결합
  • Reset gate를 통해 망각과 새로운 정보 업데이트 정도 결정

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

  • Decoder의 매 시점마다 Encoder의 전체 입력을 다시 한번 참조할 수 있게 도와주는 역할
  • 0<α\alpha<1 사이의 값으로 모든 값을 다 더하면 1이 발생하게 된다.이를 통해 어느 시점이 중요한 역할인지 알 수 있다.
  • αi=align(h,hi)=exp(score(h,hi)iexp(score(h,hi)\alpha _i = align(h^*, h_i) = \frac{exp(score(h^*, h_i)}{\sum_{i'}exp(score(h^*, h'_i)}
  • Score: 어텐션 스코어는 디코더의 특징 예측 시점에서 디코더의 hidden state가 인코더의 각 모든 hidden state와 얼마나 유사한지를 나타낸 값
    • score(h,hi)=hThiscore(h^*, h_i) = h^{*T}h_i

0개의 댓글