RNN에 대한 간단한 설명은 이전의 포스팅을 참고하자
https://roki9914.tistory.com/5
CNN, RNN이 무엇인지 간단하게 알아보자
CNN CNN은 Convolutional nueral network의 약자로 인공신경망의 한 종류이다. 이를 위해하기 위해서는 먼저 Convolution과 활성함수에 대해 이해해야한다. Convolution Convolution은 kernel을 입력벡터상에서 움직여
roki9914.tistory.com
RNN은 Sequential data를 처리하는 Neural Network인데, 이는 sequential data의 특성상 그 길이가 정해져있지 않아 Fully connected layer를 쓸 수 없기 때문이다.
전통적인 RNN은 크게 4가지로 분류할 수 있다.
1. Naive Sequential Model
이 모델은 일정한 길이의 입력이 들어왔을 때 이 정보들을 전부 고려하여 다음에 어떤 입력이 들어올 지를 예상하는 것으로, 데이터의 길이가 길어지면 고려해야 할 데이터가 너무 길어지는 문제를 가진다.
2. Autoregressive Model
Autoregressive Model은 이런 문제를 해결하기 위해 고려할 과거의 정보의 길이(예를 들어 100개)를 제한한다.
3. Markov Model (first-order autoregressive model)
Markov Model은 현재의 정보는 과거의 정보에 dependent 하지만, 바로 전 단계의 입력에만 dependent하다는 가정을 통해 만들어진 모델이다. 이 모델은 많은 정보를 버린다는 단점이 있지만, 위에서 새운 가정으로 인해 joint distribution을 계산하기 편하다는 장점이 있다.
4. Latent autoregressive Model
Latent autoregressive model은 재귀함수나 점화식으로 이해하면 편하다. 현재의 입력을 분석할 때, 현재의 입력과 과거의 입력을 고려하는 것은 autoregressive model과 동일하나, 과거의 입력을 그대로 받는 것이 아닌 어느정도 summary를 하여 받는 것이다. 이를 위해 network는 하나의 단위를 갖게 되며, 이 네트워크 단위는 현재 단계의 input과 이전까지의 summary인 hidden state를 입력으로 받고 이를 조합한 summary인 hidden state를 다음 네트워크 단위로 넘겨주고 또한 이 hidden state를 가공하여 현재 단위의 output으로 출력하는 역할을 한다. 이런 연쇄적인 작용을 하는 것이 latent autregressive model이다.
이러한 전통적인 RNN들은 크게 두가지 문제를 가진다.
1. Short term dependency
RNN은 네트워크가 진행하면서 이전의 정보들이 계속 축적되기 때문에 먼 과거의 정보가 현재의 네트워크 단위에 영향을 미치는 것이 어렵다.
2. vanishing / exploding gradient
RNN은 네트워크 단위가 재귀적으로 작용하기 때문에, 네트워크가 진행될수록 gradient가 거듭제곱을 하며 곱해진다. 이 과정에서 gradient의 크기에 따라 결국에 gradient가 계속 작아져 0으로 사라져버리는 vanishing gradient가 일어나거나 gradient가 계속 커져 무한히 중가해버리는 exploding gradient 문제를 겪을 수 있다.
이러한 문제를 해결하기 위해 등장한 것이 LSTM과 GRU이다.
1. LSTM (Long Short Term Memory)
위의 기본 단위에서 cell state는 이 네트워크들의 연결에서 외부로 나간 적 없는 내부 data이며 hidden state는 각 네트워크 단위의 output이자, 다음 네트워크 단위로 전달되는 정보이다. input은 이번 네트워크 단위에 들어오는 입력값이다.
LSTM의 기본단위 안에는 forget gate, input gate, output gate의 세가지 gate와 update cell의 작용이 있는데 각각의 역할은 다음과 같다.
1. Forget gate는 이전의 입력값과 현재 입력값을 비교하여 어떤 정보를 넘길지 결정한다.
2. Intput gage는 cell sate에 어떤 정보를 올릴지 결정한다.
3. Update cell은 위의 gate들에서 받은 값을 취합해 cell state를 update한다.
3. Output gate는 cell stae를 취합해 어떤 값을 출력할지 계산한다.
LSTM은 이런 기본단위의 연속으로 구성된 network이다.
2. GRU (Gated Recurrent Unit)
GRU의 네트워크 단위는 LSTM과 거의 똑같은데 cell state가 존재하지 않고 hidden state만 존재한다. 따라서 cell state를 처리해줄 output gate가 필요하지 않다는 특징이 있다.
이렇게 장황하게 설명했지만 지금은 transformer가 출시되며 대부분의 상황에서 RNN이 아닌 transformer가 사용되고 있다.
'AI 기초이론' 카테고리의 다른 글
3d computer vision에 대해 (0) | 2023.04.08 |
---|---|
Pooling은 무엇인가? (0) | 2023.03.31 |
Semantic Segmentation과 Detection에 대해 알아보자 (0) | 2023.03.24 |
CNN에 대해 알아보자 (0) | 2023.03.23 |
여러 Optimization 기법에 대해 알아보자 (0) | 2023.03.22 |
댓글