RNN(Recurrent Neural Network)이란 무엇인가?
MLP의 경우 현재 시점의 정보만 가지고 입출력을 하므로 과거 정보를 다루기 어렵다.
MLP는 오직 현재 시점의 입력만 사용한다
과거의 정보를 사용하고 싶다면?
이전 잠재변수 $H_{t-1}$로부터 정보를 받는 새로운 가중치 행렬을 만든다
위와 같은 경우 가중치 행렬이 1층 레이어에서 $W_{X}^{(1)}$,$W_{H}^{(1)}$, 2층 레이어에서 $W^{(2)}$로 총 3개 있음
특히 이들 가중치 행렬은 시간 t와는 무관하게 모든 시점에서 공유된다
혹은 재귀적으로 입력이 반복된다고 해서 이렇게 표현하기도 한다
현재 입력 X에 대해 추가적으로 A에서 이전의 출력정보가 같이 들어가서 H로 나오는 구조
이런 재귀적 구조를 시간순으로 풀어버리면 오른쪽 그림처럼 입력이 매우 많은 fully connected layer로 길게 나열 가능
각 네트워크의 parameter가 share하고 있다는 것???
RNN의 가장 큰 문제점은 Long-term dependency
앞에서도 이야기했지만 과거의 정보를 고려하는 것이 sequence data를 다루는 것에서 중요한데
RNN은 구조상 정보를 하나씩 차근차근 취합해가니 길이가 길어질수록 오래전 정보는 미래까지 전달하기가 힘들다.
아주 짧은 과거의 정보는 전달이 잘되나 너무 먼 과거의 정보는 전달이 잘 안된다는 뜻이다.
short-term dependency라고 해야 더 어울리는 것 같은데 보통 long-term dependency라고 부름
음성인식 같은 경우 문장이 매우 길어지더라도 중요한 과거 맥락은 모두 기억하여 써먹어야하는데
5초전 정보도 기억 못하면 그것이 무슨 소용이겠어
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
bias and variance trade off (0) | 2022.04.07 |
---|---|
RNN의 기울기 소실(gradient vanishing) 문제 (0) | 2022.02.16 |
다양한 sequential model들 (0) | 2022.02.14 |
data augmentation은 왜 사용해야할까? (0) | 2022.02.12 |
sequence 데이터를 모델링하는 방법 (0) | 2022.02.11 |
TAGS.