데이터사이언스 이론 공부

RNN과 LSTM 원리에 대한 간략 정리

soopy 2022. 12. 5. 10:51
728x90

RNN의 원리

RNN은 h와 x를 처리하기 위한 weight가 들어있는 모델이다.

  • 그림 상에는 RNN이 여러 개인 것처럼 표현했지만 실제로는 RNN은 하나의 모델이며, 학습 과정을 보여주기 위해 여러 개로 표현했을 뿐이다.

$h_0$은 나중에 결과물 $h_T$가 될 특정 값을 의미한다.

$x_1$…$x_T$는 각 단어 하나하나를 의미하며 각 $x$는 임베딩된 벡터이다.

→ $h$와 함께 매 단어 $x_1$…$x_T$가 RNN이라는 모델에 Sequencial하게 input되어 $h$가 지속적으로 각 단어의 정보를 내포하도록 업데이트하는 과정이다.

 

📌 반죽 과정

$h_{T-1}$에 W(weight)를 내적한 결과 + $x_t$에 W(weight)를 내적한 결과 + bias 한 최종 값에 Activation Function으로 하이퍼볼릭 탄젠트를 적용한다. (활성 함수는 선택사항이다.)

이 과정을 반복하여 최종 $h_T$를 만드는 과정이며 이 과정이 x라는 요소를 계속 넣어서 반죽하는 과정처럼 보여진다.

  • 여기서 $W_{hh}$와 $W_{xh}$로 구분한 이유는 h의 차원과 x(단어 임베딩 결과)의 차원이 다를 수 있기 때문이다. 결론적으로 RNN의 특성상 $h_0$이 n차원(dimension) 벡터로 시작했다면 $h_T$도 n차원으로 나와야 하므로 x값도 $W_{xh}$와 내적했을 때 n차원이 되어야 하고, bias도 당연히 n 차원이어야 한다.

여기서 중요한 점은 RNN에서 적용되는 W는 모두 동일한 값을 지닌다는 점이다. 각 단어를 입력할 때마다 layer가 늘어난다는 방식으로 이해하면 안 된다.

 

최종적으로는 $h_T$에 시그모이드, 소프트맥스를 적용해서 Task에 맡는 결과를 출력하도록 한다.

  • 가령 X라는 문장의 각 단어를 모델에 넣었을 때 문법적으로 말이 되는 문장인가에 대한 정도를 확률로써 내뱉게 하여 맞다 아니다를 판단하는데 적용할 수 있다.

모든 단어를 훑고서 마지막에 한번 판단하게 하기보다는 many-to-many problem으로 가져가서 매 단어를 넣을 때마다 $\hat{y}$을 뱉도록 할 수도 있다. 왜냐하면 문장의 길이가 엄청 길어질 경우 i번째 단어가 앞 단어들과의 상관관계를 따졌을 때 문법상의 오류가 있었음에도 모든 단어를 훑은 뒤에는 오류 정보가 지워져 있을 가능성이 있어 결과적으로 문법에 오류가 없다고 판단할 수 있다.

 

LSTM

RNN의 Vanishing Gradient 문제를 해결하기 위해 나온 모델

→ RNN에서 활성 함수를 썼는데 tanh를 적용했다. tanh를 적용한 미분 결과의 범위는 0~1의 값을 갖게 된다. 또한 RNN의 학습 과정에 따르면 $h$의 가중치인 $W_{hh}$는 학습하는 한 문장 내 단어의 개수 t만큼 반복해서 곱해지는 것이며, 역전파를 진행하면 미분 결과가 $W_{hh}^{t-1}$ 만큼 곱해지게 된다. 이 과정에서 소실 현상이 발생한다.

📌 LSTM의 의도

상단의 Cell State(c) 라는 h와 비슷한 역할의 반죽을 하나 더 준비합니다. Cell State가 생성된 가장 큰 이유는 역전파 과정에서 c의 W가 소실되지 않도록 최소한의 연산과정만 담은 일종의 고속도로를 뚫어 초기 정보도 잘 학습되도록 하는 것에 있다.

$f_t$ : Forget gate라는 역할을 한다. x와 h를 버무린 결과에서 각 정보(스칼라)의 중요도를 선별하기 위해 시그모이드 함수를 적용해 c와 element wise product를 하면 Cell State에 필터링을 한 효과를 본다.

$i_t$: Input gate라는 역할을 한다. Forget gate와 비슷한 맥락이다. RNN에서 정석적으로 진행한 h와 x의 반죽 + tanh적용 결과도 “과연 필요한 정보만 담았을까?”라는 의심을 해서 바로 옆에 동일한 연산에 시그모이드 함수를 적용한 일종의 스위치(0과 1) 벡터를 뽑았고, 이 둘을 element wise product를 해서 선별된 정보를 Cell State에 더하는 것이다.

$o_t$: Output gate라는 역할을 한다. 최종적으로 Cell State에 tanh를 적용한 결과를 h에 담으려고 하는 과정에서 마지막 필터링 작업을 가하는 것이다.

결론적으로 Cell State는 h와 x의 반죽에서 선별된 데이터를 가져가는 느낌이고, 이 데이터(c)를 그대로 다음 단어 학습에 들고 감과 동시에 h와 버무리는 작업을 한다고 이해할 수 있다.

 

LSTM은 Vanila RNN에 비해 걱정이 많은 모델이다.

728x90
728x90