본문 바로가기
Computer Science/AL, ML

[RNN] Vanilla RNN

by Gofo 2022. 6. 15.

Vanilla RNN : Graphical Model

Vanilla RNN은 같은 weight을 가진 같은 function을 사용한다.

 

Function은 입력 2개를 가지고 선형변환과 비선형 변환을 수행한다.

연산을 쭉 순차적으로 수행하다가 원하는 곳에서 $h_t$를 transform하면 $y_t$가 도출된다.

 

 


문제점

  • BPTT : backpropagation에서 너무 많은 경우의 수가 존재
  • exploding/vanishing gradient problem
  • time series를 다룰 때 예전 정보를 까먹는 경향이 존재

 

Backpropagation Through Time (BPTT)

문제

RNN은 가변 길이의 output을 낼 수 있는데 각각의 출력 마다 loss가 존재한다.

엄청 많은 경우의 수를 고려해서 모든 gradient를 계산해야 한다.

때문에 backpropagation에 소요되는 cost가 너무 크다.

 

해결 : Truncated BPTT

모든 timestep을 고려하지 않고 일부에 대해서만 고려한다.

전체 시간의 흐름에 따른 변화를 고려하지 못하게 된다는 단점이 존재한다.

 

정확한 결과를 얻지 못하지만 backpropagation을 위해서는 선택의 여지가 없다.

 

 

Exploding/Vanishing Gradient Problem

주어진 h로부터 W의 gradient를 구하면 아래와 같이 된다.

따라서 아래 경우에 exploding/vanishing gradient 문제가 발생하게 된다.

  • $h_m > h_{m-1}$
    • exploding gradient problem
    • → threshold를 지정해서 그 이상으로 넘어가면 강제로 작게 만들어서 해결할 수 없다.
  • $h_m < h_{m-1}$
    • vanishing gradient problem
    • 해결이 힘들어서 RNN의 구조를 바꿔야 한다.

 

 


다양한 응용

번역기 : Many to One + One to Many

RNN은 다양한 길이를 입력받아 다양한 길이의 출력을 낼 수 있다.

이를 이용하여 many to one과 one to many model을 결합하면 일을 나눠서 처리할 수 있는 모델이 생성된다.

 

RNN 모델을 여러 개 쌓은 것이라 볼 수도 있다.

예를 들어 한국어, 영어, 중국어 등 다양한 번역을 하는 번역기의 역할을 여러 모델에 나눠줄 수 있다.

 

 

말이 되는 단어 만들기

Vocabulary가 주어졌을 때 말이 되는 단어를 만드는 모델을 만든다고 하자.

앞에서 나온 문자와 자연스럽게 연결되어야 하기 때문에 RNN 모델을 활용할 수 있다.

 

Image Caption

CNN과 RNN을 결합하여 image caption을 하는 모델을 할 수 있다.

* image caption : 이미지가 주어졌을 때 묘사하는 문장을 만드는 작업

 

CNN에서의 output layer는 필요없기 때문에 버리고 RNN과 결합한다.

CNN의 중간 feature가 RNN으로 들어가야 하기 때문에 CNN의 FC layer는 살려야 한다.

 

 

 

'Computer Science > AL, ML' 카테고리의 다른 글

[RNN] GRU (Gated Recurrent Unit)  (0) 2022.06.16
[RNN] LSTM (Long Short-Term Memory Network)  (0) 2022.06.16
RNN : Recurrent Neural Network  (0) 2022.06.15
[CNN] 다양한 CNN  (0) 2022.06.15
[CNN] Pooling  (0) 2022.06.07

댓글