시퀀스(sequence) 데이터 이해하기
- 소리, 문자열, 주가 등의 데이터를 시퀀스 데이터로 분류한다.
- 일련의 연속적인 데이터를 말한다.
- 시계열(time - series)데이터는 시간 순서에 따라 나열된 데이터로 이 역시 시퀀스 데이터에 속한다
- 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면, 데이터의 확률분포도 바뀌게 된다. ("개가 사람을 물었다" -> "사람이 개를 물었다" : 문법적으로 틀리진 않지만 어색함)
=> 과거나 앞뒤 맥락 없이 미래를 예측하거나 문장을 완성하는건 불가능!
시퀀스 데이터 다루는 법
- 조건부확률을 이용 + 베이즈 법칙
- 어떤 정보는 필요할 수도, 필요하지 않을 수도 있기 때문에 적절히 활용하는 것이 필요!
- 결국, 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.
-> 그래서 Autoregressive Model (자기회귀모델) 등장!
- 고정된 길이만큼의 시퀀스만을 사용하는 경우
(고정된 길이를 설정하는 것도 과거 또는 미래의 정보가 필요할 수 있다)
-> 그래서 Latent Autoregressive Model 등장!
- 이 모델은 바로 직전의 정보 + 바로 직전의 정보를 제외한 나머지 정보들을 H라는 잠재변수로 인코딩해서 활용하는 모델
- 직전의 정보와 잠재변수를 가지고 정보를 예측
- 장점 : 가변 데이터 다루는 문제를 해결 + 모든 데이터를 사용하여 예측
- 단점 : 어떻게 정보들을 인코딩?
recurrent nerual network 등장
- 잠재변수 H를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델
RNN 이해하기
- 가장 기본적인 RNN 모형은 MLP와 유사!
W(1), W(2) 는 시퀀스와 상관없이 불변인 행렬이다
그러나 위 MLP 모델은 과거의 정보를 다룰 수 없다!
RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
MLP와 달라진 점이 있다면, 현재의 입력으로 들어온 정보 Wx와 과거의 정보인 Wh 가 생긴 것을 볼 수 있다.
현재가 t라면, t-1 시점의 정보도 같이 활용한다. 마찬가지로 t+1로 넘어갈 땐 t시점의 정보를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다!
마찬가지로 Wx(1), WH(2), W(2) 는 t와 상관없이 변하지 않는 행렬이다. t에 따라 변하는 것은 오로지 잠재변수와 입력데이터 뿐이다
RNN의 역전파
- 잠재변수의 연결그래프에 따라 순차적으로 계산한다.
잠재변수에는 2개의 Gradient가 들어온다. (역전파)
현재가 t라면 t+1시점에서 들어오는 Gradient와 출력에서 들어오는 Gradient로 총 2개이다.
그리고 이들을 입력과 t-1시점의 잠재변수로 전달하게 되고, 이를 반복하면 RNN의 학습이 이루어진다.
이를 Backpropagation Through Time(BPTT)이라 하며 RNN의 역전파 방법이다.
기울기 소실
- 시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요하다.
-> 이를 truncated BPTT라 한다.
- 이같은 문제들 때문에 Vanila RNN은 길이가 긴 시퀀스를 처리하는데 문제가 있다!
-> 이를 해결하기 위해서 등장한 RNN이 바로 LSTM과 GRU이라고 한다.
'AI' 카테고리의 다른 글
SegFormer custom data로 학습시키기! (1) | 2023.06.23 |
---|---|
CNN 첫걸음 (0) | 2022.09.28 |
딥러닝 기초 - RNN 간단 정리 (0) | 2022.09.28 |
딥러닝 기초 - CNN 간단 정리 (1) | 2022.09.28 |
Regularization 간단 정리 (0) | 2022.09.28 |