본문 바로가기

Study/딥러닝 텐서플로 교과서 - 길벗

[Book]7. 시계열 분석

 

개요

  • 책을 보고 공부한 내용을 정리합니다.

딥러닝 텐서플로 교과서

  • 저자 서지영님 
  • 길벗 출판사

코드 출처

https://github.com/gilbutITbook/080263

 

GitHub - gilbutITbook/080263

Contribute to gilbutITbook/080263 development by creating an account on GitHub.

github.com


7. 시계열 분석

 

7.1 시계열 문제

  • 시계열 분석이란 특정 대상의 시간에 따라 변하는 데이터를 사용하여 추이를 분석하는 것
  • 예를 들어 주가/환율 변동 및 기온/습도 변화 등
  • 추세 파악, 향후 전망 예측

시계열 형태는 데이터 변동 유형에 따라 불규칙 변동, 추세 변동, 순환 변동, 계절 변동으로 구분

 

1. 불규칙 변동(irregular variation) : 규칙성이 없어 예측 불가능하고 우연적으로 발생하는 변동
전쟁, 홍수, 화재, 지진

 

1. 추세 변동(trend variation) : 장기적인 변화 추세
- 추세란 장기간에 걸쳐 지속적으로 증가. 감소하거나 또는 일정한 상태(stationary)를 유지하려는 성향, 짧은 기간 동안에는 추세 변동을 찾기 어려운 단점이 있음
- 국내총생산, 인구증가율

 

1. 순환 변동(cyclical variation) : 2~3년 정도의 일정한 기간을 주기로 순환적으로 나타나는 변동
- 1년 이내 주기로 곡선을 그림, 추세 변동에 따라 변동하는 것
- 경기 변동이 대표적

 

1. 계절 변동(seasonal variation) : 보통 계절적 영향과 사회적 관습에 따라 1년 주기로 발생하는 것

💡 결국 시계열 데이터는 규치적 시계열과 불규칙적 시계열로 나눔

Q. 시계열 데이터를 잘 분석한다는 것??
- 불규칙성을 갖는 시계열 데이터에 특정한 기법이나 모델을 적용해 규칙적 패턴을 찾거나 예측하는 것
- 불규칙적 시계열 데이터에 규칙성을 부여하는 방법으로 AR, MR, ARMA, ARIMA
- 하지만 최근에는 딥러닝을 이용하는것이 좋은 성능을 냄 

 


7.2 AR, MA, ARMA, ARIMA

7.2.1. AR모델(AutoRegression)

  • 자기 회귀 모델
  • 이전 관측 값이 이후 관측 값에 영향을 준다는 아이디어

7.2.2. MA모델(Moving Average)

  • 이동평균 모델
  • 트렌드(평균 혹은 시계열 그래프에서 y값)가 변화하는 상황에 적합한 회귀 모델
  • 이전 데이터의 오차에서 현재 데이터의 상태를 추론한다는 의미

7.2.3. ARMA 모델(AutoRegressiv Moving Average)

  • 자동 회귀 이동평균 모델
  • AR + MA
  • 시계열을 따라 윈도우 크기만큼 슬라이딩(moving)된다고 하여 이동 평균 모델이라고 함

 

7.2.4. ARIMA 모델 (AutoRegressive Integrated Moving Average)

  • 자동 회귀 누적 이동 평균 모델
  • ARMA 와 달리 과거 데이터의 선형 관계뿐만 아니라 추세까지 고려

구현 방법

1. ARIMA() 함수 호출, ARIMA(p, d, q) 파라미터는 다음과 같다

  • p : 자기 회귀 차수
  • d : 차분 차수
  • q : 이동 평균 차수

2. fit()으로 모델 훈련
3. predict() 메서드로 예측


7.3 순환 신경망(RNN)

  • Recurrent Neural Network
  • 시간적으로 연속성이 ㅇㅆ는 데이터를 처리하려고 고안
  • Recurrent(반복되는)은 '이전 은닉층이 현재 은닉층의 입력이 되면서 ' 반복되는 순환 구조를 갖는다'는 의미

특징


1. 일대일 : 

  • 순환이 없기 때문에 RNN이라고 말하기 어려움, 순 반향 네트워크가 대표적

2. 일대다 

  • 익렵이 하나, 출력이 다수
  • 이미지를 입력해서 이미지에 대한 설명을 문장으로 출력하는 이미지 캡션(image captioning) 이 대표적

3. 다대일 

  • 입력이 다수 , 출력이 하나, 문장을 입력해서 긍정/부정을 출력하는 감성 분석기에 사용

4. 다대다 

  • 입력과 출력이 다수
  • 언어를 번역하는 자동번역기 대표 사례

5. 동기화 다대다 

  • 입력과 출력이 다수
  • 문장에서 다음에 나올 단어를 예측하는 언어 모델
  • 즉, 프레임 수준의 비디오 분류가 대표적


7.3.1 RNN 계층과 셀

 

  • RNN을 구성하는 RNN 계층(layer)과 RNN 셀(cell)
  • RNN 셀은 RNN 계층의 for loop 구분의 내부
  • RNN 계층은 셀을 래핑 하여 동일한 셀을 여러 단계에 적용
  • 셀은 실제 계산에 사용되는 RNN 계층의 구성 요소로, 단일 입력과 과거 상태(state)를 가져와서 출력과 새로운 상태를 생성


셀 유형

  1. tf.keras.layers.SimpleRNNCell : SimpleRNN 계층에 대응되는 RNN cell
  2. tf.keras.layers.GRUCell : GRU 계층에 대응되는 GRU cell
  3. tf.keras.layers.LSTMCell : LSTM 계층에 대응되는 cell

7.4 RNN 구조

  • 은닉층 노드들이 연결되어 이전 단계 정보를 은닉층 노드에 저장하는 신경망

  1. w_x는 입력층에서 은닉층으로 전달되는 가중치
  2. W_hh는 t시점의 은닉층에서 t+1 시점의 은닉층으로 전달되는 가중치
  3. w_h는 은닉층에서 출력층으로 전달되는 가중치
  4. 모든 시점에 동일함

은닉층

  • 계산을 위한 x_t와  h(t-1) 필요
  • 은닉층은 일반적인 하이퍼볼릭 탄젠트 활성화 함수 사용

 

출력층

  • 심층 신경망과 계산 방법 동일
  • 즉, (은닉층 -출력층 가중치 * 현재 은닉층)에 소프트 맥스

 

오차

  • 심층 신경망에서 전방향 하급과 달리 각 단계(t)마다 오차를 측정
  • 즉, 각 단계마다 실제값과 예츠 값으로 오차를 이용하여 측정

 

역전파

  • BPTT(BackPropagation Through Time)을 이용하여 모든 단계마다 처음부터 끝가지 역전
  • 오차는 각 단계마다 오차를 측정하고 이전 단계로 전달, 이것을 BPTT
  • BPTT는 오차가 멀리 전파될 때 계산량 이 많아지고 전파되는 양이 점차 적어지는 문제점 (Vanishing Gradient Problem)이 발생
  • 근본적으로 LSTM, GRU 사용

7.4.1 RNN 셀 구현

RNN Cell 구현

 

GitHub - heohyunjun/Sk_Shieldus: SK Infosec 클라우드 AI 융복합 과정

SK Infosec 클라우드 AI 융복합 과정. Contribute to heohyunjun/Sk_Shieldus development by creating an account on GitHub.

github.com

 


7.5 LSTM

  • 가중치가 업데이트되는 과정에서 1보다 작은 값이 계속 곱해지기 때문에 기울기 소멸 문제 발생
  • 해결을 위해 LSTM이나 GRU 같은 확장된 RNN 방식 사용

7.5.1 LSTM 구조

LSTM 순 전파

  • 망각 게이트, 입력 게이트, 출력 게이트라는 새로운 요소를 은닉층에 추가

1. 망각 게이트(forget gate)

  • 과거 정보를 어느 정도 기억할지 결정
  • 과거 정보와 현재 데이터를 입력받아 시그모이드를 취한 후 그 값을 과거 정보에 곱함
  • 시그모이드 출력이 0이면 과거 정보 버리고, 1이면 과거 정보 저장

2. 입력 게이트(input gate)

  • 정보를 저장하기 위함
  • 과거 정보와 현재 데이터를 입력받아 시그모이드와 하이퍼볼릭 탄젠트 함수를 기반으로 현재 정보에 대한 보존량 결정
  • 계산한 값이 1이면 허용, 0이면 차단

3. 메모리 셀

  • 각 단계에 대한 은닉 노드를 뜻함

4. 출력 게이트(output gate)

  • 과거 정보와 현재 데이터를 사용해 뉴런의 출력 결정
  • 이전 은닉 상태와 t번쨰 입력을 고려해서 다음 은닉 상태 계산

LSTM 역전파

  • 셀을 통해 역전파를 수행하기 때문에 '중단 없는 기울기(uninterrupted gradient flow) 라 고도함
  • 셀 단위로 오차가 전파된다고 해서 입력 방향으로 오차가 전파되지 않는 것은 아님
  • 셀 내부적으로도 오차가 입력으로 전파됨

7.5.2 LSTM 셀, 계층 구현

LSTM 셀 계층 구현

 

GitHub - heohyunjun/Sk_Shieldus: SK Infosec 클라우드 AI 융복합 과정

SK Infosec 클라우드 AI 융복합 과정. Contribute to heohyunjun/Sk_Shieldus development by creating an account on GitHub.

github.com


7.6 게이트 순환 신경망(GRU)

  • Gated Recurren Unit

7.6.1 GRU 구조

  • LSTM에서 사용하는 망각 게이트와 입력 게이트를 하나로 합친 것
  • 하나의 게이트 컨트롤러(gate controller)가 망각 게이트와 입력 게이트 모두 제어
  • 컨트롤러 1 : 망각 열림, 입력 닫힘
  • 컨트롤러 0 : 망각 닫힘, 입력 열림

망각 게이트

  • 과거 정보를 적당히 초기화(reset) 시키려는 목적으로 시그모이드 함수를 출력으로 이용하여 값을 이전 은닉층에 곱함

업데이트 게이트

  • 과거와 현재 정보의 최신화 비율을 결정
  • 시그모이드로 출력된 결과는 현시점의 정보량을 결정하고 1에서 뺀 값은 직전 시점의 은닉층 정보와 곱함

 

후보군

  • 현시점의 정보에 대한 후보군 계산

은닉층 계산

  • 업데이트 게이트 결과와 후보군 결과를 결합하여 현시점의 은닉층 계산

GRU 구현

 

GitHub - heohyunjun/Sk_Shieldus: SK Infosec 클라우드 AI 융복합 과정

SK Infosec 클라우드 AI 융복합 과정. Contribute to heohyunjun/Sk_Shieldus development by creating an account on GitHub.

github.com


7.8 양방향 RNN

  • 이전 시점의 데이터뿐만 아니라, 이후 시점의 데이터도 함께 활용하여 출력 값을 예측하고자 하는 것

 7.8.1 양방향 RNN 구조

  • 하나의 출력 값을 예측하는 데 메모리 셀 두 개 사용
  • 첫 번째 메모리 셀은 이전 시점의 은닉 상태(forward states)를 전달 받아 현재 은닉 상태 저장
  • 두 번쨰 메모리 셀은 다음 시점의 은닉 상태(backward states) 계산
  • 그리고 이 값 두 개를 모두 출력층에서 출력 값을 예측하는 데 사용

양방향 RNN

 

GitHub - heohyunjun/Sk_Shieldus: SK Infosec 클라우드 AI 융복합 과정

SK Infosec 클라우드 AI 융복합 과정. Contribute to heohyunjun/Sk_Shieldus development by creating an account on GitHub.

github.com

 

 

글자 임베딩
사람의 이러한 이해 능력을 흉내 내는 알고리즘

  • 'understand'라는 단어는 '이해하다'라는 뜻을 가진 영단어입니다.
  • 그런데 여기에 mis-를 앞에 붙여주게 되면, 'misunderstand'라는 '오해하다'라는 뜻의 다른 의미의 영단어가 됨
  • 비슷한 예시를 들어보겠습니다. 'underestimate'라는 단어는 '과소평가하다'라는 단어입니다. 그렇다면 'misunderestimate'는 무슨 뜻인가
  • mis-라는 접두사는 '잘못 판단하는'이라는 의미의 'mistaken'의 의미를 담고 있으므로 '과소평가하다'라는 단어 앞에 mis-라는 접두사가 붙었다면 'misunderestimate'는 '잘못 과소평가하다'라는 추측이 가능

 

  • have'에 대해서 BiLSTM을 통해서 단어 표현 벡터를 얻는 과정
  • 우선, 단어 'have'를 'h', 'a', 'v', 'e'와 같이 글자 단위로 분리
  • Embedding layer을 이용한 임베딩을 단어에 대해서 하는 것이 아니라 글자에 대해서 함, 다시 말해 글자를 임베딩함
  • 그러고 나서 정방향 LSTM은 단어 정방향으로 순차적으로 글자 임베딩 벡터를 읽고 반면, 역방향 LSTM은 단어의 역방향으로 순차적으로 글자 임베딩 벡터를 읽음
  • 방향 LSTM의 마지막 시점의 은닉 상태와 역방향 LSTM의 첫 번째 시점의 은닉 상태를 연결(concatenate)
  • 최종적으로 이렇게 얻은 벡터를 단어 'have'의 벡터로 사용
  • 글자 레벨 표현(Character-level representation)이라고 기재된 벡터에 해당

'Study > 딥러닝 텐서플로 교과서 - 길벗' 카테고리의 다른 글

[Book]9. 자연어 처리  (0) 2022.01.06
[Book]8. 성능 최적화  (0) 2022.01.06
[Book]6. 합성곱 신경망 2  (0) 2022.01.04
[Book]5. 합성곱 신경망 1  (0) 2022.01.02
[Book]4. 딥러닝 시작  (0) 2021.12.29