Understanding Sequential Data

What is Sequential Data

소리, 문자열, 주가 등 순서가 존재하면서도, 순서에 의존적인 데이터를 시퀀스(sequence) 데이터라고 합니다. 예를 들어, 사진은 순서보다는 공간상에 위치가 더 중요한 spatial data이지만, 영상은 sequential data라고 할 수 있습니다. 따라서 일반적으로 시퀀스 데이터는 시간 혹은 순서 $t$에 의존적(dependent)이고, 따라서 $t$에 대해 i.i.d. (independent and identically distributed) 가정을 일반적으로 위배합니다. 만약 $t$에 대해 i.i.d. 가정을 만족한다면, 이를 stationary하다고 말합니다. 이는 time series 분석을 공부하며 추가적으로 공부해보도록 하겠습니다.

따라서 배열이 $X_1, \dots, X_t$가 될 확률 $P(X_1, \dots, X_t)$은 $t-1$번째 배열까지의 확률을 의미하는 $P(X_1, \dots , X_{t-1})$과, $t-1$번째 배열까지 주어졌을 때 $t$번째 확률을 의미하는 $P(X_t | X_1, \dots, X_{t-1})$에 의존할 것입니다. 이는 베이즈 정리를 통해 풀어낼 수도 있지만, 사실 이는 우리의 직관에도 잘 부합합니다. 즉,

$$ P(X_1, \dots, X_t) = P(X_t | X_1, \dots, X_{t-1})P(X_1, \dots, X_{t-1}) $$

로 풀어서 쓸 수가 있습니다. 이를 $t=1$일 때까지 풀어쓰면 아래와 같습니다.

$$ \begin{align*} P(X_1, \dots, X_t) &= P(X_t | X_1, \dots, X_{t-1})P(X_1, \dots, X_{t-1}) \\ & = P(X_t | X_1, \dots, X_{t-1})P(X_{t-1} | X_1, \dots, X_{t-2}) P(X_1, \dots, X_{t-2}) \\ &= \prod_{s=1}^{t} P(X_s | X_{s-1}, \dots, X_1) \end{align*} $$

How to Treat Sequential Data

시퀀스 데이터를 다루는 것은 기존의 CNN과는 다른 접근법을 요구합니다. $t$가 점차 길어지고, 가변적(variable)이기 때문에 이를 다룰 수 있는 방법이 필요합니다. 기존에 많이 사용되었던 방법은 AR(auto-regression, 자기 회귀) 모형으로, 기존의 자기 자신을 회귀하여 다음 sequence의 output을 예측한다는 의미를 담고 있습니다. 이때, 해당 window의 크기를 일반적으로 $\tau$로 표시합니다.

$$ \begin{align*} X_t &\sim P(X_t | X_{t-1}, \dots, X_1) \\ &\sim P(X_t | X_{t-1}, \dots, X_{t-\tau}) \end{align*} $$

즉, $\tau$개의 직전 sequence에만 의존한다는 모형으로 변환하면, sequence를 모델링할 수 있습니다. 하지만 만약 sequence가 매우 길면서, 초기의 sequence에도 크게 영향을 받는다면 위 모형을 사용하기 어렵습니다. 대표적인 분야가 text입니다.

따라서 RNN은 일반적으로 $X_t$를 모델링할 때 매우 신박한 방법을 사용합니다. Hidden state 혹은 잠재변수(latent variable) $H_t$를 이용해 $X_1$부터 $X_{t-1}$까지의 정보를 압축하는 것입니다.

$$ X_t \sim P(X_t | X_{t-1}, H_t) \\ H_t = h(H_{t-1}, X_{t-1}) $$

BPTT

Back-propagation Through Time의 약자로, 역전파 알고리즘을 RNN에 맞춰 수정한 알고리즘입니다.