CNN Model
- CNN이란?
- 이미지 처리에서 많이 사용되며 cnvolution과 pooling을 반복적으로 진행하는 구조
- Time series data의 CNN 적용
- Dilated Convolutions
- 기존의 convolution의 계산을 줄여주기 위해 도입
- 이미지 처리에서의 dilated convolution은 filter matrix 사이에 0을 삽입하여, Receptive field 의 크기는 늘리고, 계산량은 감소
1차원 convolution 필터를 활용해 입력되는 sequence 무시가 데이터 간의 가중합 (Weighted sum)을 구하여 예측 대상인 미래 값을 산출 할 수 있다. 하나 cnn구조는 과거와 미래 데이터간에 시간적인 의존성에 대해서는 고려하지 않는다.
RNN Model
- 자연어 처리에서 많이 사용되는 인공 신경망으로 seqentital data에 적합한 구조
- Memory state를 통해 과거의 정보를 기억할 수 있는 구조
- Gradient vanishing으로 인해 long-range dependency 발생 -> LSTM으로 해결
이전 상태의 정보가 축적된 은닉상태 (hidden state)정보를 활용해 미래 예측에 활용한다. 그렇기 떄문에 과거의 정보를 활용해 미래의 예측값을 산출 할 수 있다.
하지만 주어지는 입력 sequence가 너무 방대할 경우 모델 학습에 악영향을 미치는 Vanishing gradient 문제가 발생 할 수 있다.
-> 이문제를 해결하기 위해서 LSTM 구조를 많이 사용하고 있다.
Attention-based Model
- Attention mechanism이란?
- 과거의 중요한 time step 에서 직접 정보를 가져와 예측에 사용하는 mechanism
과거 정보별 미래 예측시 도움되는 정보와 도움이 되지 않는 정보가 있다.Attention 매커니즘을 활용하면 이러한 예측(필요한 정보인지 아닌지 판단)이 가능해진다. 과거 시점 별 예측 하고자 하는 시점에 미치는 영향력을 산출해서 미래 값 예측시 사용하게 된다. 예측하고자 하는 시점과 과거에 있는 값 중에 직접적으로 연관 있는 값에 더 많은 가중치를 부여함으로써 보다 정확한 예측이 가능하다.
Time Forecasting 에 있어 느낀, Attention의 한계
1. Attention은 1차원으로만 적용이 가능하다.
- time-Series 별로 혹은 Feature별로만 적용이 가능했다. (세로 혹은 가로)
- 이 때문에, Dual-Stage Attenstion 아이디어가 나오게 된다.
2. Attention은 길이(Time-Sequence)가 길어질 수록, 내적 연산에 따른 속도 저하가 어마무시하다.
- 이 부분은 딥러닝 음성인식(ASR) 진행 시, Attention이나, CTC에서도 동일하게 발생하는 문제이다.
- Beam-Search알고리즘 등을 사용하면 속도 저하 문제를 조금 타파할 수는 있겠지만, 분류문제에서 선택 가능하고, 회귀 문제에서는 선택 불가하다.
3. Attention 시계열 데이터 예측에 대한 연구가 비교적 최근부터 시작되고 있는 듯 하다.
- Attention은 정해진 Time-Sequence에서만 집중 할 수 있다. but, 현실의 문제는 다름. 실제 데이터가 100일 범위로만 결정되어질 수 있을 것이라 생각했지만, 특정 어떤 데이터는 200일 전 데이터가 Attention이 더 잘 될 수도 있다. 이런 데이터 구성의 경우 Attention이 잘 동작하지 않는다
- 대부분의 문제 해결 방식이, CNN을 이용하고, Attention을 진행하던데, CNN을 적용하는 부분이 실제 본인의 Dataset과 적합한 모델 아키텍쳐 구조인지도 판단해봐야겠다.
참고 : https://shyu0522.tistory.com/21
Multi-horizon forecasting model
- Multi-horizon Forecasting model 이란?
- 다음 time step의 값만 예측하는 것이 아닌 여러 개의 time step의 값을 예측하는 model
- iterative method 와 Direct method로 분류
[DL]Is CNN better than RNN for time Series data?
1. CNN이 RNN 보다 계산 비용이 저렴하다.
CNN은 고정된 input을 주입하고, 고정된 output을 출력하는 반면, RNN은 임의의 input과 Output을 다루므로 계산 시간이 더 오래 걸릴 수 밖에 없다. 또한, CNN은 RNN 보다 sequential operation(순차계산)이 적어 계산 효율성이 더 높은 편이다. 같은 계산 비용으로 더 긴 history를 track 할 수 있다.
2. CNN은 기록이 완전하다는 가정 (매 data point 마다 timestep이 존재)이 필요하지 않다.
RNN은 time series의 '모든' opint는 '모든' 이전 timestep에 의존한다는 가정이 필요하다. 이러한 RNN과 달리 CNN은 Time window 내에서 pattern을 학습하므로 해당 가정이 필요하지 않다. (time dependence가 RNN보다 떨어진다)
즉, 시간 정보가 누락된 데이터인 경우 CNN을 사용하는 것이 더 좋다.
예를 들어 문장에서 단어를 추측하는데 있어 CNN은 문장의 전체 텍스트를 알 필요 없다는 것이다.
3.CNN은 앞을 예측할 수 있다.
RNN은 예측해야하는 timestep 이전의 데이터만 학습할 수 있지만, CNN은 앞을 예측 할 수 있다.
참고: https://takeheed.tistory.com/26
참고 : https://www.youtube.com/watch?v=Cn-3NAgGBKQ&t=743s
'Machine Learning' 카테고리의 다른 글
Few shot Learning, Meta Learning (3) | 2022.11.29 |
---|---|
[내용정리]Meta Learning (1) | 2022.11.25 |
[논문리뷰]Time Series Forecasting With Deep Learning A Survey (0) | 2022.11.24 |
데이터처리 파이프라인 프레임워크 (0) | 2022.11.11 |
[ing]Linear regression with one variable - cost function intuition1 (0) | 2022.05.04 |