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 |
댓글