-
RNN (1) | RNN의 기초 | 패스트캠퍼스 챌린지 35일차딥러닝 2022. 2. 27. 21:33
CNN이 주로 처리하는 이미지는 정적인 데이터다. 달리 말하자면, 이미지 자체는 순서가 중요하지 않다. 하지만 텍스트 데이터나 이미지의 연속인 동영상과 같이 순서(sequence)가 중요한 데이터가 많다. 이러한 데이터를 처리하기 위해 sequential model이 필요하다. 기본적인 sequential model이라 할 수 있는 auto-regressive model의 경우 이전 데이터까지의 확률을 통해 확률을 계산하는 모델이다. 자연스레 데이터 sequence가 길어지면 연산해야 할 확률이 매우 많이 늘어난다. Recurrent Neural Network의 기본 방법은 hidden state h_t가 이전의 모든 정보를 압축해 담고 있다고 상정하는 것이다. 이렇게 된 경우 이번 타임 스텝에서는 기존의 모든 확률을 계산할 필요 없이 h_t에 담긴 이전 정보를 참고해 연산하면 된다.
이 때 타임 스텝이라는 것은 순서 하나 하나를 뜻한다. 텍스트의 경우 단어나 형태소 등과 같은 토큰 단위가 될것이고, 동영상의 경우 한 이미지 프레임 정도로 생각해 볼 수 있을 것이다.
RNN이 recurrent하다는 이름이 붙은 것은 은닉층이 순환하는 모양 때문이다. 같은 은닉층이 순환하기 때문에 weight, activation과 같은 파라미터는 서로 공유된다. 또한, 타임 스텝의 RNN 유닛 간에 하나의 feedback connection이 공유된다.
여기까지는 좋았지만, 문제는 backpropagation 과정에서 발생한다. 가중치 V에 대한 손실함수의 편미분은 어느정도 쉽게 계산이 된다. 하지만, feedback connection W에 대한 손실함수의 편미분은 W가 순환한다는 특징 때문에 sequence 길이 만큼 길어진다. 이 떄, tanh, sigmoid 등의 activation의 편미분값은 1보다 작으므로 gradient가 점점 작아지게 된다. 따라서, 길게 나열된 sequence를 제대로 처리하지 못하는 long-term dependency 학습의 어려움이 발생한다. 개념저긍로 말하면 말이 길어지면 앞부분에 있는 단어 정보를 잊어버리게 되는 것이다.
부가적으로 gradient exploding 시나리오도 존재한다. 이는 큰 편미분 값이 계속해서 곱해지면 발생한다. 다만 이 경우는 clipping, 즉 편미분값을 특정 값 이상이 되지 못하도록 잘라주면서 간단히 해결할 수 있다.
Gradient vanishing은 gradient vector를 유지시키는 정규화 방식이나, ReLU 활성화 함수를 사용하는 등의 방식으로 어느정도 예방할 수 있다. 하지만, 궁극적으로는 모델 아키텍쳐를 개선한 LSTM, GRU 등을 사용하여 Gradient Vanishing을 어느정도 해결한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC
'딥러닝' 카테고리의 다른 글
RNN (3) | Attention | 패스트캠퍼스챌린지 37일차 (0) 2022.03.01 RNN (2) | LSTM & GRU | RNN 활용 | 패스트캠퍼스 챌린지 36일차 (0) 2022.02.28 CNN (5) | Object Detection Strategies (2) | 패스트캠퍼스 챌린지 34일차 (0) 2022.02.26 CNN (4) | Object Detection Strategies (1) | 패스트캠퍼스 챌린지 33일차 (0) 2022.02.25 CNN (3) | 패스트캠퍼스 챌린지 32일차 (0) 2022.02.24