시퀀스 데이터
- 시계열, 소리, 문자열, 주가 등의 시간 순서에 따라 나열된 데이터, 차원을 알 수 없음
- 시퀸스 데이터는 독립동등분포 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터 분포 확률도 바뀜
- 조건부확률을 이용하여 시퀀스 데이터를 다룸
고정된 길이 (타우)만큼의 시퀀스만 사용하는 경우 AR 자기회귀모델이라고 부름
Sequential 모델
Naive sequence model
과거의 모든 데이터를 확인
Autoregressive model
과거의 데이터 중 몇개만 확인 (fix timespan)
Markov model(first-order autoregressive model)
바로 전 데이터 하나만 확인, 많은 정보를 버릴 수 밖에 없음, 결합확률분포 표현하기 좋음
Latent autoregressive model
hidden state(latent state)가 과거의 정보를 요약하고 있고, hidden state만 확인
RNN
단점: Short-term dependencies
(데이터가 오래 못감, 조금 전의 데이터는 고려가 되는데 한참 전의 데이터는 고려가 힘듦)
x1+A=>h1, h1+x2=>h2...
RNN 모형: 가장 기본적인 RNN 모형은 MLP와 유사
히든 state(ht)의 활성함수(activation function)는 비선형 함수인 tanh
- Ht(hidden state)를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용
- RNN의 역전파(BPTT)는 잠재변수의 연결그래프에 따라 순차적으로 계산
W(1), W(2)는 시퀀스와 상관없이 불변인 행렬
BPTT: RNN의 역전파 방법, RNN의 가중치행렬의 미분을 계산
- truncated BPTT: 시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘 계산이 불안정해지므로 길이를 끊는 것이 필요
- Short-term dependencies(gradient가 소실 되는 문제)를 해결하기위해 LSTM과 GRU 사용
LSTM
RNN의 단점인 Vanishing gradient를 극복하기 위해 고안됨
전체 구조
전체 구조 중 하나
input + previous hidden state + previous cell state => output
- cell state: 컨베이너 벨트와 같음, 정보가 유용한지 아닌지 판단해서 유용한 것만 넘김
- previous cell state: 0~t까지의 정보를 취합해서 summarize 해줌 (output으로 안나감)
cell state
- forget gate: 버릴 정보를 정함
- input: 현재의 입력(x_t)와 이전의 output (h_t-1)
forget gate
- input gate: cell state에 쌓을 정보를 정함
- 현재의 입력(x_t)와 이전의 output (h_t-1)을 잘 섞어서 update
input gate
- update cell: input gate에서 나온 Ct를 가지고 올릴지 말지 결정해서 취합 후 cell state 업데이트
update cell
- output gate: updated cell 중에서 어떤 값을 output으로 내보낼지 결정
output gate
GRU
- reset gate(forget gate와 비슷)와 update gate만 있음
- cell state와 hidden state가 없음 - output gate가 필요 없음
- LSTM보다 GRU가 성능이 좋은 경우도 있음
Gated Recurrent Unit
Further Questions
- CNN 모델이 Sequential 데이터를 처리하는 데에는 구체적으로 어떤 한계점이 있나요?
CNN의 학습과정은 순서가 중요하지 않은 정보들이 공통으로 가지는 특징들만 관심이 있기 때문에 실시간으로 들어오는 정보들의 순서 관계를 처리할 수 없는 문제점이 있다. (Sequential 데이터는 input 길이가 일정하지 않아서 conv나 fc 사용하기 힘듦)
- LSTM 에서는 Modern CNN 내용에서 배웠던 중요한 개념이 적용되어 있습니다. 무엇일까요?
update gate에서 concatenation(DenseNet)을 활용한 skip-connection (ResNet)으로 셀을 업데이트
- RNN, LSTM, GRU 는 각각 어떤 문제를 해결할 때 강점을 가질까요?
RNN: short-term memory가 중요한 문제
LSTM, GRU: short-term memory와 long-term memory가 모두 중요한 문제