시계열 데이터, 시퀀스 데이터는 i.i.d(독립 동등 분포)가 아니라 서로 종속된 데이터
이다.
이러한 데이터를 분석하는 데 사용하는 것이 RNN
이다.
소리, 문자열, 주가 등의 데이터를 시퀀스 데이터로 분류한다.
시퀀스 데이터는 순서를 바꾸거나 과거 정보에 손실이 발생하면, 데이터의 확률분포도 바뀌게 된다.
과거 정보 또는 앞뒤 맥락 없이 미래를 예측하거나, 문장을 완성하는 건 불가능하다.
이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부확률
을 이용할 수 있다.
가변적인
데이터를 다룰 수 있는 모델이 필요하다.고정된
길이 만큼의 시퀀스만 사용하는 경우 AR() 자기회귀모델(Auto Regressive Model)이라고 부른다.
는 hyperparameter이기 때문에 문제에 따라 그 값이 다르고, 를 결정할 때 사전지식이 필요하다.
만약 시퀀스 데이터를 분석할 때 먼 과거의 정보까지 필요하면 어떻게 할까?
위의 경우 해당 포스트에서 배우게 될, RNN의 기본형인 잠재자기회귀모델
(Latent Auto Regressive Model)을 사용한다.
잠재AR모델
은 바로 이전 정보를 제외한 나머지 정보들을 라는 잠재변수로 인코딩해서 활용한다.
해당 모델은 과거의 모든 데이터를 활용할 수 있고, 고정된 길이의 데이터를 가진고 모델링할 수 있다는 장점이 있다.
해당 모델은 잠재변수 를 어떻게 인코딩 해야할 지 정해야 한다.
잠재변수 를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델이 RNN이다.
과 은 시퀀스와 상관없이 불변인 행렬
이다.
RNN은 이전 순서의 잠재변수와 현재의 입력을 활용해 모델링한다.
잠재변수인 를 복제해 다음 순서의 잠재변수를 인코딩하는데 사용한다.
3개의 가중치 행렬 , , 는 에 따라 변하지 않는다.
RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산한다.
마지막 예측까지 모두 이뤄지고 마지막 시점에서의 gradient가 과거까지 전달되는데, 이를 BPTT라 하며 RNN의 역전파 방법이다.
RNN의 손실함수는 모든 시점에서의 손실함수를 구한 뒤, 더한다.
, 이다.
이제 의 값을 구해보자.
이고, 단순히 를 상수 취급한다면, 일 것이다.
하지만, 에도 가 영향을 끼치므로 무시하면 안된다.
은 의 계수로 생각할 수 있다.
도 이전과 같은 방법으로 전개가 될 것이다
하지만, 시퀀스 길이가 길어질수록 은 불안정해지기 쉽다.
만약 의 값들이 1보다 크면 크기가 매우 커지고, 1보다 작으면 크기가 매우 작아지기 때문이다.
이것은 기울기 소실(Gradient Vanishing)과 폭주(Exploding)라고 한다.
특히 기울기 소실
이 일어나면, 미래의 결과를 과거에 반영하기 쉽지 않기 때문에 과거 정보를 유지할 확률이 높다.
시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정 해지므로 길이를 끊는 것이 필요하다. 즉, 특정 시점부터 미래의 gradient를 전달받지 않는 것이다.
이를 truncated BPTT
라고 한다.
하지만 이것은 기울기 소실을 완전히 해결할 수 없다.
길이가 긴 시퀀스 데이터의 기울기 소실 문제를 해결하기 위해 등장한 RNN이 LSTM
과 GRU
이다.