12. Ch01. 시계열 알고리즘 딥러닝 시계열 - 04. 시계열과 딥러닝 알고리즘 비교
13. Ch01. 시계열 알고리즘 딥러닝 시계열 - 05. 시계열분석에 딥러닝이 필요한 이유
14. Ch01. 시계열 알고리즘 딥러닝 시계열 - 06. 시계열딥러닝 알고리즘1-1(CNN vs RNN)
1. 시계열 회귀 분석과 딥러닝의 차이
일반적인 다중회귀식은 다음 그림에 나와있다.
이를 네트워크로 표현하면 아래 노드와 엣지와 같이 나타나는데, 이에 활성함수를 취해준 모습으로 인공신경망(딥러닝)처럼 표현할 수 있다.
1-1. 인공신경망 식과 구조
위 표현식을 간단하게 표현하면 아래 그림과 같은데, 각 노드와 가중치가 반복적으로 곱해지고 더해지며 predicted Y를 구하는 것이다.
1-2. 인공신경망의 검증(Evaluation)
- 인공신경망은 입력과 출력이 직접적으로 연결되지 않기 때문에 비선형성을 포함하며, 구성된 층만큼 더 다양한 패턴을 학습(회귀)할 수 있다. 그만큼 회귀모델보다 나은 성능을 보이지만 설명 가능 정도는 그만큼 떨어진다.(어느 층에서 어떻게 영향을 주는지 추측하기 어렵다; Black box)
- 모델을 적당하게 구성하고, 최적의 하이퍼 파라미터를 찾는 것 또한 딥러닝의 주요한 과제이다.
2. 시계열 분석에서 딥러닝이 필요한 이유
2-1. 머신러닝 방향 및 발전
2-2. 시계열 분석에 딥러닝 적용 필요성
1) 자동 Feature 추출과 학습
- 기존에는 사람이 손수 생성
- 그에 따라 많은 손실과 오류가 반영될 가능성
- 사람의 영향을 최소화하고 여러층을 적용해 새로운 Feature를 추출해야 한다.
2) 다양한 입출력 작업을 가능하게 함
- 기존의 머신러닝 방법도 다양한 입출력을 사용할 수는 있지만 알고리즘에 따라 달라지고 한계가 존재.
- 그보다 딥러닝에서는 입출력에 따라 딥러닝 구조를 바꿔 여러 경우에 대처 가능하게 됨.
3) 길이가 긴 Sequence 패턴 추출 가능
2-2. 알고리즘의 한계 : Garbage in, garbage out(GIGO)
- 대부분의 연구가 알고리즘 설명과 성능에만 집중하고, 어떻게 분석했는지에 대해서는 상대적 경시.
- 이를 실제 사례에 적용, 분석해보면 결과가 안 좋은 경우도 많다.(머신러닝 기법보다도)
가장 중요한 것은 데이터이다. 데이터의 질이 쓰레기라면 좋은 알고리즘의 출력이라도 쓰레기이기 때문이다.
3. 시계열 딥러닝(Supervised Learning)
3-1. CNN 과 RNN
- CNN : 이미지처럼 여러 값이 격자의 형태로 구성된 데이터를 처리하는데 특화됨.
- 이미지나 영상 인식, 분류 문제 등에서 뛰어난 결과
- RNN : 순서가 있는 데이터를 처리하는데 특화된 모델
- 은닉층 노드를 공통으로 사용하여 이전 상태를 반영한 가중치 갱신이 가장 큰 특징.(그림 우측)
강의 소개 링크 : //bit.ly/3czfg42
1. 시계열 회귀분석
- 은닉층이 없고 입력값과 출력값의 관계가 다이렉트로 연결
- 모델 개수는 1개의 회귀분석
- 설명 가능
2. 딥러닝
- 입력값과 출력값이 직접적으로 연결되지 못하고 복잡한 비선형성을 포함
- 2개 이상(은닉층과 노드 갯수만큼)의 회귀분석
- 설명 불가능
- 사람이 설정해야하는 하이퍼파라미터가 많음
3. 시계열분석에서 딥러닝 적용 필요성
(1) 데이터에서 자동으로 feature 추출하고 학습 가능
(2) 여러 X와 여러 Y 가능
(3) 길이가 긴 sequence 패턴도 추출 가능
4. 시계열 딥러닝 알고리즘 (RNN, LSTM, GRU)
(1) CNN
- 비시계열 딥러닝, MLP 기반
- 이미지나 영상에서의 인식이나 분류 문제 등에서 뛰어난 결과
- 입력된 이미지보다 더 큰 이미지로 손쉽게 확장될 수 있는 특징
- YOLO, GAN 등의 모델들은 CNN을 기반
- 은닉층 노드를 두번 이상 건드리지 않고 한번만 실행
- 스냅샷 데이터 (이미지, 영상, 바둑 )
(2) RNN
- 시계열 딥러닝, AR
- 예측이 가장 큰 분석 목적
- 비현실적으로 긴 시계열도 쉽게 확장 가능
- 가변 길이의 시계열 데이터도 처리 가능
- 은닉층 노드를 공통으로 사용하여 계속 갱신
- 시퀀스 데이터 (기상, 주가, 언어, 음성)
1. 종류
- One-to-One : Vanilla Neural Networks
- One-to-Many : Image Captioning, Target Explanation
- Many-to-One : Classification, Time Series Analysis(어제, 오늘 -> 내일), Sentiment Analysis, Spam Detection
- Many-to-Many : Time Series Analysis, Machine Translation (번역), Prediction of Next Word
2. 한계
- 감소하는 Gradients는 학습하기 어려움
- 데이터의 길이에 비례해 BPTT가 사용하는 컴퓨터 비용 증가
- 은닉층 과거 정보가 끝까지 전달되지 못함
- 멀리 전파될 때 전파량이 점차 작아지는 Vanishing Gradients 문제 발생 -> ReLU 사용 (RNN에서는 같은 레이어를 반복하기 때문에 미사용)
(3) LSTM
- 원인과 결과의 관계를 장시간까지 반영 - RNN 개선
- 일정한 오류를 유지함으로써 여러 네트워크가 장시간(1000개 이상 layer)에 걸쳐 학습 가능하도록 함
- Cell 개념으로 열리고 닫히는 게이트로 어떤 데이터를 저장/읽기/쓰기/삭제 선택
- 기존 RNN에 Cell State(C)를 추가하여 얼마나 과거의 데이터를 기억할지를 제안함 (더하기 사용)
- RNN의 은닉층을 LSTM Block으로 대체, 각 Block은 기존 H에 C가 추가된 네트워크 구조
- Forget Gate의 곱하기 노드가 잊어야 할건 기울기를 줄이고 그렇지 않은건 과거로 전해져 '기억셀' 기울기 소실 없음
(4) GRU
- LSTM의 구조를 간결히 변경해 빠른 속도와 유사한 성능 보임
- LSTM의 Ct와 Ht가 하나의 벡터 Ht로 통합
- GRU가 LSTM보다 학습할 가중치가 적음
- 주제별로 LSTM과 GRU의 성능 차이가 있음
+ 참고 자료 및 출처
김경원 < 파이썬을 활용한 시계열 데이터 분석 A-Z 강의 > ( 패스트캠퍼스 강의 )