본문 바로가기

Theory/basic_theroy

RNN(vanilla에서 attention까지) (1)

RNN은 CNN과 더불어 가장 많이 연구된다.

 

흔히 Vision 연구를 하려면 CNN을 NLP 연구를 하려면 RNN을 주로 다룬다.

오늘은 RNN이 어떻게 탄생했고, 어떤 방향을 발전하고 있는 지 포스팅하겠다.

 

Sequence data를 다루고 싶다 -> RNN의 등장
Backpropagation 중 문제가 생김(explode, gradient vanishing) -> LSTM,GRU의 등장
완전히 long-term dependency를 해결하지 못함 -> Attention 매커니즘의 등장
구조를 바꾸면 RNN이 아니라 다른 분야에서도 사용할 수 있다 -> Transformer의 등장

1. RNN(Recursive Neural Network)

RNN은 순서(sequence)가 있는 데이터 처리에 특화되어 있다.

텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터를 처리한다.

아래 그림은 RNN의 가장 기본적인 구조이다.

1) Forward

차근차근 살펴보면, 과거의 정보가 현재 학습할 때 영향을 끼치는 것을 알 수 있다. 이 step이 반복해서 일어나면, 학습 간 Sequence를 고려할 수 있다.

이전 상태의 정보(t-1시기의 정보)가 forward하는 현재(t)시기의 학습에 영향을 줌.

그렇다면, backpropagation은 어떻게 진행될까?

 

2)Backpropagation - Gradient vanishing, Long-term dependency problem

BackPropagation에서

반복되는 구간이 1보다 클 경우 기울기가 급격하게 커지므로 gradient exploding 문제가 생긴다. -> clipping으로 해결

반복되는 구간이 1보다 작을 경우 기울기가 계속해서 줄어드므로 gradient vansing 문제가 생긴다. -> 반복횟수가 늘어날 수록 해결이 어려움! -> 과거의 sequence를 담을 수 있는 항을 만들면 어떨까? -> LSTM,GRU모델의 등장