RNN 모델
1. 시계열 데이터(Time Series Data)
1.1 개요
- 정의
- 시간의 순서대로 일정한 주기에 따라 측정, 저장된 데이터
- 활용 분야
- 데이터를 기반으로 한 예측 분야에 가장 많이 활용됨
- 간혹 장애 검출에도 활용할 수 있다고 이야기하고 있으나 결국 데이터 기반 예측임
- 입력 데이터를 순서대로 살펴보면 조금씩 어긋나는 데이터 발견 가능
- 어긋나는 데이터의 범위가 특정 기준을 벗어나는 시점이 장애 발생 시점
- 데이터의 변동을 기반으로 분석, 예측한 결과를 장애 검출, 장애 예측으로 표현하는 것뿐
- 시계열 데이터는 시간에 따른 변화를 보고 패턴을 분석하여 이후에 어떤 데이터를 얻을 것인지 예측하는 것이 가장 큰 목적이자 활용분야
1.2 시계열 데이터의 구성과 처리방식
- 시계열 데이터는 어떤 영향을 주고 받으면서 구성되는가?
- 시간의 흐름에 따른 데이터는 주변 환경과 특정 이벤트로부터 많은 영향을 받음
- 따라서 단순히 데이터의 변화 패턴을 분석하는 것만으로는 예측이 어려움
- 또한 어떤 값과 어떤 변수를 중심으로 분석하는가에 따라서도 큰 성능변화, 결과의 차이 발생
- 시계열 데이터를 이용한 예측은 어떤 개념인가?
- 현재(\(t(0)\))의 데이터는 과거(\(t(-m) ~ t(-1)\))의 데이터가 누적된 결과
- 가장 가까운 미래(\(t(1)\))의 데이터는 과거와 현재(\(t(-m) ~ t(-1) + t(0)\))의 데이터가 누적된 결과
- 미래(\(t(n)\))의 데이터는 (\(t(-m) ~ t(0) ~ t(n-1)\)) 의 데이터가 누적된 결과
- 여기에 각 시점에서 적용되는 특정이벤트(외부요인)의 반영으로 예측
1.3 시계열 데이터를 활용하기 위한 모델의 제안
- 모델 제안의 1단계
- 시계열 데이터란 시간의 순서대로 일정한 주기에 따라 측정, 저장된 데이터
🡪 과거의 데이터가 현재, 미래의 데이터에 영향을 미침
🡪 즉, 과거의 데이터를 가지고 와서 현재, 미래의 데이터에 적용시켜야 함
🡪 이를 위해서는 과거의 데이터를 기억하고 있어야 함
🡪 과거 데이터를 저장, 참조할 수 있는 메모리 효과를 가진 모델이 필요함

- 시계열 데이터란 시간의 순서대로 일정한 주기에 따라 측정, 저장된 데이터
- 모델 제안의 2단계
- 현재의 데이터를 확인하기 위하여 과거의 데이터를 순차적으로 살펴보고
🡪 \(t(1)\) 미래의 데이터를 확인하기 위하여 과거+현재의 데이터를 순차적으로..
🡪 \(t(n)\) 미래의 데이터를 확인하기 위하여…
🡪 알고자 하는 시점의 데이터를 기준으로 과거의 데이터를 순서대로 확인 반복
🡪 즉, 동일한 과정, 모델이 계속적으로 반복되는 순환 과정을 가진 모델 필요
🡪 순환신경망 (RNN, Recurrent Neural Network) 제안됨

- 현재의 데이터를 확인하기 위하여 과거의 데이터를 순차적으로 살펴보고
2. RNN 모델의 구조와 이해
2.1 시계열 데이터와 RNN의 관계
- 시계열 데이터와 RNN의 관계
- RNN (Recurrent Neural Network, 순환 신경망)
- 전체 네트워크 안에서 순환적으로 데이터를 처리하는 신경망 모델
- 과거의 데이터를 끊임없이 참조하여 현재의 데이터를 학습하는 모델
- 시간의 흐름에 따라 과거의 데이터의 특징과 패턴을 반영하여 현재의 데이터를 학습하는 모델
- 순차열, 즉 순서가 있는 일련의 값을 처리하는 것에 특화된 모델
2.2 RNN 모델
- 기존의 신경망
- Feed Forward 방식
- 데이터 처리의 흐름이 한 방향

- 기존의 신경망의 단점
- 한 방향으로만 데이터를 처리하므로 시계열 데이터의 처리가 어려움
- 시계열 데이터는 신경망의 학습이 완료된 후에도 실제 사용 도중에 지속적으로 과거의 데이터를 참조하고 활용하여야 함
- 학습 과정에서도 시계열 데이터의 성질, 패턴을 제대로 학습할 수 없음
- 순환 신경망(Recurrent Neural Network, RNN) 등장의 이유 (앞에서의 설명과 연관됨)
2.3 RNN 모델의 기본 원리
- RNN의 기본 단위: RNN 계층
- 순환경로를 포함한다.
- 계속적인 참조가 반영된다.
- 과거의 정보를 기억한다.


순환 구조를 알기 쉽게 펼쳐보면

- 데이터는 시간이 흐르는 방향으로 나열됨 (인덱스 t는 시간이 아니라 시각)
- 각 시각의 RNN 계층은 그 계층으로의 입력과 1개 전의 RNN 계층으로부터의 출력을 입력으로 받음
- 두 개의 입력을 기반으로 현 시각의 출력을 계산함
- 각 RNN 계층에서의 출력 계산에는 기존 신경망과 동일하게 경로 별 가중치, 편향 값이 포함됨
경로별 가중치와 편향치의 적용

RNN 계층은 기존 신경망과 동일하다 🡪 어떻게 처리되나?

- RNN 모델의 학습 방법
- RNN 계층은 가로로 펼쳐 놓은 신경망과 동일하다고 가정할 수 있음
🡪학습 방법도 동일하게 적용할 수 있음(오류 역 전파 방식 등) 🡪 BPTT 방법

- RNN 계층은 가로로 펼쳐 놓은 신경망과 동일하다고 가정할 수 있음
- BPTT (Back Propagation Through Time)의 문제점
- 긴 시계열 데이터를 학습할 때
- 시계열 데이터의 시간 크기가 커질수록 BPTT가 소비하는 컴퓨팅 자원도 비례하여 증가함
시간의 크기가 커질수록 역 전파 시의 비율 조정을 위한 기울기가 불안정해짐
- BPTT를 이용하여 기울기를 구할 때, 매 시각의 RNN 계층의 중간 데이터를 메모리에 유지해 두어야 함
🡪 시계열 데이터가 길어질 수록 계산 량 및 메모리의 사용량이 증가함
- BPTT를 이용하여 기울기를 구할 때, 매 시각의 RNN 계층의 중간 데이터를 메모리에 유지해 두어야 함
개선을 위하여 Truncated BPTT 기법 제안
- Truncated BPTT
- 시간축의 방향으로 길어진 신경망을 적당한 지점에서 잘라내어 여러 개의 작은 신경망으로 만듦
- 잘라낸 작은 신경망에서 BPTT를 수행함
- 주의점
- 신경망을 잘라낼 때 역전파의 연결만 절단해야 함 (순전파의 연결은 반드시 유지)
- 순전파의 연결이 사라지면 네트워크 자체가 성립되지 않음
- 역전파가 연결된 RNN 계층의 모임을 블록이라고 하여 다른 블록과 구분하여 처리함

- RNN의 문제점
- 시계열 데이터의 학습에서 장기 의존 관계의 학습이 어렵다
- BPTT에서 기울기 소실 또는 기울기 폭발 발생
- 기울기 소실: 역 전파 처리 시 기울기 값이 점점 작아지다가 사라지는 현상
- 기울기 폭발: 역 전파 처리시 기울기 값이 점점 커지다가 수직에 가까워지는 현상
- 게이트 구조를 적용하여 개선 가능
2.4 RNN 모델의 개선 및 응용
- 기본적인 RNN 모델을 개선한 다양한 RNN 모델이 존재함
- 게이트가 추가된 RNN 모델
- 게이트라는 구조를 활용하여 시계열 데이터의 장기 의존 관계를 학습할 수 있는 모델
- 게이트를 통하여 입력 및 출력의 상태(범위)를 제어함
- 데이터 기억을 위한 메모리 셀을 추가한 형태이며 데이터의 기억 여부, 상태도 제어함
- LSTM (Long-Short Term Memory networks)
- RNN의 장기 의존성 문제를 해결할 뿐만 아니라 학습 또한 빠르게 수렴함
- GRU (Gated Recurrent Unit)
- LSTM의 간소화된 버전이라고 볼 수 있음
3. RNN 모델의 활용
3.1 RNN 모델의 적용에 대하여
- 활용분야 간의 연관성
- 우리가 글을 읽거나 대화를 할 때, 지금 사용한 하나의 단어만이 의미가 있는가?
- 우리는 글을 읽거나 대화를 할 때, 이전의 맥락을 이해하면서 현재 사용된 단어를 이해함
- 같은 단어인데 다른 의미를 가지는 경우도 이런 맥락을 이용하여 문제없이 정확하게 이해함
- 수많은 단어로 이루어진 언어의 표현은 시간의 흐름에 따라 각 단어들이 배치, 연결됨
- 따라서 시간과 순서(순차) 정보를 잘 활용할 수 있는 RNN이 많이 사용됨
- RNN 모델의 주요 사용 분야
- 기상데이터 분석 및 예측, 주가 정보 예측 (시계열 데이터)
- 자연어 처리, 번역, 언어 모델링 등 (순차 열 데이터)
- RNN 모델의 사용 분야에 CNN 등의 모델을 적용한다면?
- 시간의 흐름, 순서에 따른 맥락과 각 요소(단어) 사이의 인과관계를 처리 가능한가?
- 가능하기는 하겠지만 매우 많은 노력과 자원이 소요됨
3.2 RNN(Recurrent NN)과 RNN(Recursive NN)?
- 문제 제기
- Recurrent Neural Network(순환 신경망)과 Recursive Neural Network(재귀 신경망)을 같은 것이라고 설명하는 경우가 많음
- 순환 신경망과 재귀 신경망은 서로 다른 모델임
- 영문 번역 시 Recurrent와 Recursive를 동일하게 순환의 의미로 번역하여 발생한 문제
- 일본 도서의 번역서에서 자주 발견됨(국내 도서에도 존재함)
- 차이점
- 재귀(Recursive) 신경망은 순환(Recurrent) 신경망의 또 다른 일반화 버전이라고 보면 됨
- 순환(Recurrent) 신경망은 체인 형태의 계산 그래프를 사용
- 재귀(Recursive) 신경망은 트리 형태의 계산 그래프를 사용
- 재귀(Recursive) 신경망은 순환(Recurrent) 신경망의 또 다른 일반화 버전이라고 보면 됨
- 일반적으로 말하는 RNN은 순환 신경망을 의미함
3.3 RNN과 CNN의 관계
- CNN (Convolutional Neural Network, 합성곱 신경망)
- 딥러닝 모델에서 가장 쉽게 접근할 수 있는 분야
- 이미지처럼 여러 값이 격자형태로 구성된 입력 데이터를 처리하는 것에 특화된 모델
- 이미지, 영상의 인식, 분류 등에서 현재까지 가장 뛰어난 결과를 보여줌
- 이미지, 영상 분야의 다양한 모델(YOLO 등)이 대부분 CNN을 기반으로 고안된 모델임
- 입력된 이미지보다 너비와 높이가 더 큰 이미지로 손쉽게 확장 가능
- RNN (Recurrent Neural Network, 순환 신경망)
- 순차 열, 즉 순서가 있는 일련의 값을 처리하는 것에 특화된 모델
- CNN이 더 큰 이미지로 쉽게 확장이 가능한 것처럼 RNN도 더 긴 순차열로 쉽게 확장 가능
- 여기서 말하는 더 긴 순차 열이란 순차열에 특화되지 않은 신경망으로는 처리하는 것이 비현실적이라고 할 만큼 긴 데이터를 말함
- 가변 길이의 순차 열 데이터도 처리 가능
- 이미지 데이터도 결국 각 픽셀에 대한 수치가 배열의 형태로 모여 있는 것이기때문에 어떤 모델을 사용하더라도 딥 러닝의 적용은 가능함. 단지 그 효율성의 차이가 중요함