딥러닝 텐서플로 교과서 - 7장

Jajuna_99·2022년 10월 3일
0

7장 시계열 분석

시계열 문제(p.258)

시계열 분석이란 특정 대상의 시간에 따라 변하는 데이터를 사용하여 추이를 분석하는 것이다.
시계열 형태는 변동 유형에 따라 불규칙 변동, 추세 변동, 순환 변동, 계절 변동으로 구분할 수 있다.

AR, MA, ARMA, ARIMA(p.259, 수식 포함)

AR(AutoRegression, 자기 회귀) : 이전 관측 값이 이후 관측 값에 영향을 준다는 아이디어에 대한 모형이다.

MA(Moving Average, 이동 평균) : 트렌트(평균 혹은 시계열 그래프에서 y 값)가 변화하는 상황에 적합한 회귀 모델이다.

ARMA(AutoRegressive Moving Average, 자동 회귀 이동 평균) : AR과 MA를 섞은 모델로 연구 기관에서 주로 사용한다. 시계열을 따라 윈도우 크기만큼 슬라이딩하는 구조이다.

ARIMA(AutoRegressive Integrated Moving Average, 자동 회귀 누적 이동 평균) : 자기 회귀와 이동 평균을 둘 다 고려하는 모형이다. ARMA와 달리 과거 데이터의 선형 관계뿐만 아니라 추세(cointergration) 까지 고러한 모델이다.

statsmodels 라이브러리로 구현(p.261)

순환 신경망(RNN)(p.265)

시간적으로 연속성이 있는 데이터를 처리하려고 고안된 인공 신경망이 RNN이다.

이전의 처리된 데이터를 기억해서 다시 처리하는 구조이다.

입출력 구조에 따라 유형이 나뉜다.

  • 일대일 : 순환이 없기 때문에 RNN이라고 말하기 어려우며, 순방향 네트워크가 대표적 사례이다.

  • 일대다 : 입력이 하나이고, 출력이 다수인 구조이다. 이미지를 입력해서 이미지에 대한 설명을 문장으로 출력하는 이미지 캡션(image captioning)이 대표적 사례이다.

  • 다대일 : 입력이 다수이고, 출력이 하나인 구조, 무장을 입력해서 긍정/부정을 출력하는 감성 분석기가 대표적이다.

각 구조에 대한 예시 코드(p.266)

RNN은 RNN 계층RNN 셀로 구성돼 있다. -> 내장된 계층뿐문 아니라 셀 레벨의 API도 제공한다. RNN 계층이 배치 순서열을 모두 처리하는 반면 RNN 셀은 오직 하나의 단계(time step)만 처리한다. (like for문)

셀은 실제 계산의 사용되는 RNN 계층의 구성 요소로, 단일 입려고가 과거 상태(state)를 가져와서 출력과 새로운 상태를 생성한다.

API로 제공되는 셀 유형은 SimpleRNNCell, GRUCell, LSTMCell이 있다.

RNN 구조
RNN은 입력층, 은닉층, 출력층 외에 가중치를 세 개 가진다. RNN의 가중치는 Wxh,Whh,WhyW_{xh}, W_{hh}, W_{hy}로 분류된다.

  • WxhW_{xh} : 입력층에서 은닉층으로 전달되는 가중치
  • WhhW_{hh} : tt 시점의 은닉층에서 t+1t+1 시점의 은닉층으로 전달되는 가중치
  • WhyW_{hy} : 은닉층에서 출력층으로 전달되는 가중치

tt 단계에서의 계산

  • 은닉층 : 이전 은닉층 x 은닉층 - 은닉층 가중치 + 입력층 - 은닉층 가중치 x (현재) 입력 값)으로 계산할 수 있다.

    • ht=tanh(yt)h_t = \tanh(y_t)
    • yt=Whh×ht1+Wxh×xty_t = W_{hh} \times h_{t-1} + W_{xh} \times x_t
  • 출력층 : 심층 신경망과 계산 방법이 같다. (은닉층 - 출력층 가중치 x 현재 은닉층)

    • yt=softmax(Why×ht)y_t = softmax(W_{hy} \times h_t)
  • RNN의 오차(E) : 심층 신경망에서 전방향 학습과 달리 각 단계(t)마다 오차를 측정한다. 즉, 매 단계마다 실제 값(yty_t)과 예측 값(hatyty_t)으로 평균 제곱 오차 적용을 이용하여 측정한다.

  • RNN의 역전파 : BPTT(BackPropagation Through Time)를 이용하여 모든 단계마다 처음부터 끝까지 역전파한다. 위에 오차 단계에서 구한 값을 이용해 가중치 및 편향을 업데이트한다. -> 기울기 소멸 문제 때문에 Truncated BPTT 또는 LSTM 및 GRU를 많이 사용한다.

RNN 셀 구현과 계층 구현 (p.273)

LSTM (p.282)

RNN의 기울기 소멸 문제를 보완하고자 제시된 방법.

LSTM 구조

  • LSTM 순전파 : 망각 게이트, 입력 게이트, 출력 게이트가 추가 됐다.

    • 망각 게이트(forget gate) : 과거 정보를 어느 정도로 기억할지 결정, 과거 정보와 현재 데이터를 입력받아 시그모이드를 통과시킨 값을 과거 정보에 곱해 준다. -> 1이면 직전의 정보 유지, 0이면 초기화 시킨다. 수식(p.283)

    • 입력 게이트(input gate) : 현재 정보를 기억하기 위한 게이트, 과거 정보와 현재 데이터를 입력 받아 시그모이드와 하이퍼볼릭 탄젠트 함수를 기반으로 현재 정보에 대한 보존량을 결정. 수식(p.284)

    • : 각 단계에 대한 은닉 노드를 메모리 셀이라고 한다. '총합'을 사용하여 셀 값을 반영. 수식(p.285)

    • 출력 게이트(output gate) : 과거 정보와 현재 데이터를 사용하여 뉴런의 출력을 결정, 이전 은닉 상태와 tt번째 입력을 고려해서 다은 은닉 상태를 계산 수식(p.285)

  • LSTM 역전파 : 셀을 통해서 역전파를 수행해서 중단 없는 기울기라고도 한다. 수식(p.287)

LSTM 셀 구현 (p.288)

게이트 순환 신경망(GRU)(p.293)

게이트가 적용된 RNN이면서도 LSTM 보다 구조가 간단하다. -> 망각 게이트와 입력 게이트를 하나로 합친 구조(게이트 컨트롤러)

셀 구현(p.293)

양방향 RNN(p.301)

과거 시점과 미래 시점의 데이터를 활용하여 출력 값을 예측 하는 모델일 양방향 RNN이다.

양방향 RNN 구현(p.302)

요약

자연어 처리 모델 튜토리얼을 텐서플로로 구현해보는 장이다~~

profile
Learning bunch, mostly computer and language

0개의 댓글