RNN(Recurrent Neural Network) 맛보기¶
- 소리, 문자열, 주가 등의 데이터를 시퀀스(sequence)데이터로 분류한다.
- 시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
시퀀스 데이터 다루기¶
이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이요할 수 있다. 이전에 봤던 베이즈 법칙을 사용한다.
아래 조건부확률은 과거의 모든 정보를 사용하지만 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.
시퀀스 데이터를 다루기 위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다. 조건부에 들어가는 데이터 길이는 가변적이다.
꼭 과거의 모든 정보를 가지고 예측을 할 필요는 없기 때문에 예측할 시점에서 부터 고정된 길이$τ$를 사용한다. 고정된 길이 $τ$만큼의 시퀀스만 사용하는 경우 AR($τ$)(AutoregressiveModel) 자기회귀모델이라고 부른다.
또 다른 방법은 바로 이전 정보를 제외한 나머지 정보들을 $H_{t}$라는 잠재변수로 인코딩해서 활용하는 잠재 AR모델이다. 이 모델의 장점은 과거의 모든 데이터를 활용할 수 있고 가변적인 데이터문제를 고정적인 데이터로 바꿀 수 있다.
✅ 여기서 문제는 과거의 정보를 어떻게 인코딩할 것인가이다.
따라서 잠재변수 $H_{t}$를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델이 RNN이다.
RNN(Recurrent Neural Network)¶
가장 기본적인 RNN 모형은 MLP와 유사한 모양이다.
하지만 이 모델은 과거의 정보를 다룰 수 없다. RNN모델은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
잠재변수인 $H_{t}$를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다. 여기서 가중치 행렬은 $t$에 따라서 변하는 행렬이 아니다. $t$에 따라 변하는 값은 입력과 잠재변수이다.
역전파 계산 방법을 보면
RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산된다. 현재 시점까지의 모든 예측이 이루어진 다음에 맨 마지막 시점에서의 그래디언트가 타고 올라와서 과거까지 그래디언트가 계산된다. 이것을 Backpropagation Through Time(BPTT) 이라 하면 RNN의 역전파 방법이다. 위 그림의 빨간선이 계산 방향이다.
BPTT¶
BPTT를 통해 RNN의 가중치행렬의 미분을 계산해 보면 아래와 같이 미분의 곱으로 이루어진 항이 계산된다.
이때 저 빨간박스의 항은 시퀀스 길이가 길어질수록 불안정해지기 쉽다. 저 값이 길어질때 1보다 크게 되면 값이 많이 커지고 1보다 작으면 값이 매우 작아진다. 이와 같이 BPTT를 모든 관찰되는 시점에서 계산하면 불안정해지기 쉬워 길이를 끊는 것이 필요하다.
기울기 소실 문제¶
시퀀스 길이가 긴 모델을 만들게 되면 역전파를 계산할때 과거의 그래디언트가 점점 0으로 계산되어 과거의 정보를 잃어버리기 쉽다. 이 문제를 해결하기 위해서 truncated BPTT방법이다. 이는 BPTT의 모든 시점을 계산하는 것이 아니라 미래의 정보들 중에서 몇 개는 그래디언트를 끊고 과거에 해당하는 데이터의 블록을 나눠서 역전파를 계산하는 과정이다.
하지만 이 방법으로는 완전히 해결 되지 않는다. 그래서 길이가 긴 시퀀스에 대해서는 LSTM과 GRU를 사용하게 된다.
'AI > 이론' 카테고리의 다른 글
Word Embedding (0) | 2021.02.15 |
---|---|
Generative Model (0) | 2021.02.05 |
Transformer - Sequential Models (0) | 2021.02.04 |
RNN - Sequential Models (0) | 2021.02.04 |
Computer Vision Applications (0) | 2021.02.03 |
CNN - 1x1 Convolution (0) | 2021.02.03 |
CNN - Convolution (0) | 2021.02.03 |
CNN Preview (0) | 2021.02.02 |